Aktuelle Version v0.15.0 · Stand
752c495 (2026-08-17) ·
1175 Änderungen ausgewertet.
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.
- Enthaltung statt Behauptung: Wo ein Prüfpunkt sich nicht belegen lässt — kein ausgezeichnetes Überschriftengerüst, ein nicht nachweisbar weißer Hintergrund, eine abgebrochene Teilprüfung — steht jetzt „noch keine Aussage“ statt eines erfundenen Ergebnisses. Umgekehrt bindet ein entschiedener Kriterienverstoß das Gesamturteil, wie es die Spezifikation immer vorsah.
- Zweiter Texterkenner, EU-lokal und abschaltbar: Gescannte Seiten können über einen zweiten Erkennungsdienst gelesen werden, mit eigenem Schalter, eigener Messreihe und Werkseinstellung „aus“. Die Ergebnisseite nennt jetzt, welches Modell das Dokument gelesen hat und mit welcher Fähigkeit.
- Messen statt vermuten: Ein Prüfbestand lässt sich vollständig und unterbrechbar durch die echte Verarbeitungskette fahren; die Auswertung nennt zu jeder Kennzahl ihre Grundgesamtheit und verweigert die Aussage, wenn der Vergleichsmaßstab entartet ist.
- Eine Sprache auf der ganzen Oberfläche: Zwölf Seiten teilen sich eine gemeinsame Seitenhülle und eine Navigation, das Urteil heißt überall „Ja“, „Nein“ oder „noch keine Aussage“, das Upload-Formular kommt mit 84 statt 213 Wörtern aus, und interne Bezeichner erscheinen nicht mehr im Text für Anwenderinnen und Anwender.
- Betrieb und Sicherheit: Der Zugriffsschutz der Produktionsumgebung ist scharf gestellt und schriftlich zugeordnet, die Bereitschaftsauskunft nennt, welche Verarbeitungsstufen tatsächlich einsatzbereit sind und verweigert sonst den Start, und abgelaufene Ergebnisdateien werden auch im asynchronen Betrieb zuverlässig gelöscht.
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
v0.14.0 2026-08-12
Überblick
Diese Version bringt 41 neue Funktionen, 56 Fehlerbehebungen, 45 weitere Änderungen.
- Behoben (release): bump the two version locations cz could not reach, and teach it to reach them
- Neu (scoring): bump the rubric to adr007-v3 and widen the clause that should have required it
- Behoben (scoring,sidecar): close the private cross-module import class and guard it mechanically
- Behoben (api): strip internal issue refs at the OpenAPI publication boundary — refs #1041 #843 #800
- Behoben (scorecard): drop the header ERROR on pages the tag tree declares no table on — refs #1038 #1024
- Behoben (config): refuse WORKER_COUNT above 1 — it is per-process concurrency, not processes
- Behoben (parse): replace the SLOW fan-out's false safety claim with the measurement
- Neu (scoring): stamp the rubric fassung on the scorecard so the report stops guessing it — refs #1010 #992 #898
Technische Änderungen (für Entwickler:innen)
Neue Funktionen (41)
-
bump the rubric to adr007-v3 and widen the clause that should have required it
scoring
775c963 -
stamp the rubric fassung on the scorecard so the report stops guessing it — refs #1010 #992 #898
scoring
cb4ead1 -
give every Figure a provenance — which evidence made it a figure — refs #1026 #970 #136
parse
85e79ed -
give the #683 class its own cohort and an advisory monotonicity assurance — refs #1022 #683 #997
eval
8d46a68 -
give GET /jobs/{id} a response_model that is true, not just present — refs #1041 #726
api
35f6d59 -
give the conformance-stub D3=0 a finding that says why — refs #1003 #975 #970 #726
scorecard
1f011e7 -
publish the advisory AAA contrast screen on the report surface — refs #993 #726
report
a58f6e7 -
make the 15-005 header-association findings cost D6 points — refs #1013 #990 #726
scoring
a3248a6 -
re-freeze the gold at v2.2 — the spacer rows are out and the contract says so — refs #1018
eval
a598728 -
model WCAG 1.4.6 enhanced contrast as a structurally advisory screen
quality
271bdd5 -
attach the persisted narration to the audit page now that a slot exists
api
05f2bf3 -
render the advisory AI narration with its label on the audit page
audit
f4cdcfe -
admit doc-lang-present to the in-place lane, and measure what it is worth — refs #1027 #970
quality
f1845a5 -
publish the veraPDF rules that actually passed — refs #1017
sidecar
4f57b69 -
put the contrast-render degrade on the delivered-bytes ledger — refs #946 #928 #892
pipeline
ad62c0d -
count the SLOW pages the frugality cap drops — refs #1019
observability
83152c1 -
record the word-shape exemption on the page, not just in a log line — refs #983 #954
pipeline
63bab70 -
run the corroborated tree check on the in-place routes, report-only — refs #970 #726 #1001 #1025 #861
spine
9f561e5 -
replace the n=1 synthetic good cohort with ten measured real documents — refs #997 #683
eval
009bc89 -
widen _VLM_OUTCOMES to nine and count the two causes that had no true value — refs #1000 #942 #973
observability
5a511d2 -
carry the passed veraPDF rules so the protocol is the whole check run — refs #994 #726
report
5e096b6 -
widen the stage taxonomy to 12 and instrument the merge + re-do loop — refs #1008 #944
observability
f9c5a81 -
carry the WCAG tree-leg tri-state onto the JSON surface — refs #1002 #970 #726
api
00817ce -
record the structural damping factor on the AAVS triple — refs #1010
scoring
e17ce54 -
carry the endpoint's token counts into the provenance slots — refs #1007 #974
narration
6c279e0 -
wire the eight struct checks that had zero production callers — refs #990 #726
scorecard
5d56954 -
persist the advisory narration once at job completion and serve it — refs #971 #726
narration
6fe2574 -
publish the rubric version and the structural damping so quality_score can be recomputed — refs #992 #726 #683
report
f1dd51c -
emit the narration VLM counter and refuse to fake CAPPED — refs #973
observability
cbb1f37 -
surface the OpenAI usage block through an opt-in UsageSink — refs #974
vlm
0a15d94 -
surface the advisory AI narration on the AAVS report — refs #772
report
468b975 -
reuse bulk SLOW results on the verdict-less redo pass 0 — refs #936
pipeline
9fec6d3 -
add the advisory AI narration engine behind the model endpoint — refs #772
report
af815f4 -
read /E expansions and resolve RoleMaps in the spoken view — refs #810 #966
eval
ec53b96 -
version the class ordinal in the sidecar and export PP-DocLayoutV3 to ONNX — refs #910
layout
8cfc3b9 -
count overlay heading drops behind a default-off gate — refs #919
tag
eaaea43 -
emit per-gold-table pair scores and preregister the K1 crop run — refs #911
eval
1c58b38 -
read each layout region as its own crop on the SLOW path — refs #860
pipeline
6515c94 -
count OCR call outcomes on the shared VLM counter and refresh the target map
parse
b34bc36 -
split the contrast abstention into render-degrade and honest no-text causes
quality
db899d9 -
count VLM call outcomes with failover attribution and split AltSource honestly
observability
212f4f4
Fehlerbehebungen (56)
-
bump the two version locations cz could not reach, and teach it to reach them
release
c090623 -
close the private cross-module import class and guard it mechanically
scoring,sidecar
acb9a1c -
strip internal issue refs at the OpenAPI publication boundary — refs #1041 #843 #800
api
769ba87 -
drop the header ERROR on pages the tag tree declares no table on — refs #1038 #1024
scorecard
80c36c8 -
refuse WORKER_COUNT above 1 — it is per-process concurrency, not processes
config
6c2c866 -
replace the SLOW fan-out's false safety claim with the measurement
parse
226385f -
stop reading a verdict out of a language tie — refs #1028 #1023 #726
quality,merge
7a5a72d -
measure the links gap before re-freezing it — the 99 gold docs have nothing to gain
eval
609ae75 -
stop the disabled visual judge from measuring its own no-op — refs #1016 #1009 #1008
observability
530f8d7 -
register the label #993 shipped without one, and lift the 10 s bucket cap — refs #1008 #1009 #1016
observability
8bce3cf -
close the three wave gates the AAA advisory and the memory bump opened
quality
bb36230 -
register figure-alt-stub in the reason and tag maps
quality
6e45a6e -
detect the document language instead of stamping de unconditionally
tag
9f7880c -
serialise the sync /jobs path — PyMuPDF is not thread-safe
pipeline
0b55810 -
make the measurement reproducible — PyMuPDF is not thread-safe
eval
75c7f2c -
stop emitting the RIS spacer rows the tagged PDF never had — refs #1018
gold
2854a68 -
announce nothing when a /RoleMap hop hides the carrier — refs #981
scoring
668f71f -
stop double-counting the crop path's OCR calls — refs #972
observability
9a279c1 -
stop demanding alt text from signature-widget appearance streams — refs #970 #726
quality
1ae0134 -
bind the auto-fix credit to the seam that renders the repair — refs #1025 #970 #726
quality
e23ff93 -
wire the tree-gate abstention so a check that never ran stops awarding points — refs #1001 #970 #726
scoring
29292db -
resolve the RoleMap, narrow footnote-pairing to the spec, give the ToC check a condition that can fire — refs #1012 #990
quality
8d183a7 -
abstain the tree-gate-fed dimensions instead of scoring 100 from an absent count — refs #1001 #970 #726
scoring
70ffdba -
distribute a table's spoken segments by cell carrier, not by position — refs #998 #977
eval
16b11c2 -
match the undetermined sentinel by substring, not equality — refs #976
review
c97ed21 -
demote the overlay conformance stub in both D3 branches — refs #975
scoring
5d45dea -
ledger the composite honesty cap as its own attribution row — refs #991
scoring
5c97d86 -
report a WCAG tree leg that never ran as NEVER_RAN — refs #970
scorecard
e95b52b -
emit the missing VLM outcomes for the alt-text no-call paths — refs #942
observability
ce73241 -
put the scoring code inside the provenance stamp — refs #898
eval
0aac690 -
correct six false skip-reasons and pin a skip-count ceiling — refs #989
tests
dbbb0ee -
walk /Table elements in document order, not LIFO-reversed — refs #977
eval
4b81522 -
close the figure-kind negation in the ablation instrument — refs #982
eval
870f904 -
declare pypdfium2 and import-or-skip the real_gold gate stack — refs #965 #950
eval
393d23e -
reconcile the alt-text accounting across dimension, counter and augment route — refs #861
scoring
cf5a9e1 -
admit the narration surface to the VLM call registry — refs #772
observability
7bf5a41 -
exempt tagged documents from the word-shape demotion arm — refs #954
triage
224fbfb -
bridge the as-is struct tree into table_teds instead of hard-skipping — refs #902
eval
b785c56 -
wire the gold gates into the real_gold build path and check reader independence — refs #965 #964
eval
6513bd3 -
contain per-crop failures and bound the page wall-clock on the crop path — refs #960 #959
pipeline
7c75792 -
lift pdfjs-dist past CVE-2026-16633 in the ax spike — refs #950
deps
4061807 -
lift aiohttp and pypdf past CVE-2026-69244 and CVE-2026-71852/71870 — refs #950
deps
cd7443c -
exclude advisory dimensions from the structural-presence factor — refs #890
scoring
d3228db -
emit record_vlm_call per crop on the crop path — refs #958
observability
1a8f42a -
thread source_lang into the redo-loop structure tree — refs #940
remediate
e7543ab -
move the gold-audit verdicts to a sidecar — manifest.jsonl is a preregistered selection seed — refs #905
eval
626e3bb -
calibrate the table-probe matcher floor to the empty band and footnote published coverage — refs #906
eval
561b7c9 -
audit the real_gold corpus and annotate gold defects in the manifest — refs #905
eval
be7dfe4 -
separate alt-text and OCR series with a bounded surface label
observability
7783fa7 -
skip line-spanning texttrace spans in duplicate-text detection
parse
74ffe79 -
normalize /MCR struct kids so PyMuPDF stops reading latex_ua as structureless
scoring
2f32348 -
regenerate overlay fixtures without the never-painted default Helvetica
test
d9af784 -
stamp the fallback model into per-page backend provenance after a failover
parse
c24d9fb -
harden every eval-lane open_metadata call and route reads through the src XMP readers
eval
28e6ce9 -
thread the degrade ledger into the doc-title reconcile and add the doc-lang fifth reconcile
report
4f1f660 -
make the STAGE-1 table renderer span-aware — the third copy #857 missed (#908)
eval
703adfd
Performance-Verbesserungen (1)
-
collapse the contrast span walk to one pass per job — refs #993 #1033
quality
f2c1326
Refactoring (intern) (2)
-
promote the passed-rules derivation to a public seam — refs #994 #1017 #726
report
05818a9 -
project the damping factor instead of recomputing it — refs #1010 #992
report
9c219dc
Dokumentation (34)
-
freeze the v0.14.0 snapshot ADR-028 requires before the tag
openapi
c375684 -
close the 0.14.0 section and regenerate the served artifacts
changelog
85cee9b -
retire the PVC blocker the runbook authorized as a normal outcome
eval
bb2e98a -
record the 107 commits the 0.13.5 bump left untagged
changelog
5f48c98 -
codify the inflow rules #1058 asked for, and give a veto a home that does not truncate
rules
71dc477 -
separate "gate could not run" from "gate found something" — refs #1030
ci
fcb281a -
codify the measurement discipline three sessions paid for
rules
0137a16 -
profile the scanned path — the quadratic is in our own output, not in fidelity — refs #1033
research
ea5dff0 -
correct the 1-of-15 corroboration ratio the signature-widget fix superseded
7938f36 -
record what the provenance split measures — 33% -> 100% on raster, 0% on vector — refs #1026 #970
eval
6e34d86 -
correct the stale wiring note that claimed #1001 was unwired
test
7d75041 -
cite the primary measurement behind the ~4 % scan share — refs #955
roadmap
e30ddd1 -
use role terms instead of a named operator in the tree-leg measurement
eval
4eb9dd5 -
neutralise the customer name and publish the capacity envelope — refs #1031 #1033
1af989c -
fix scanned throughput in the minimum-viable row — refs #1031
eval
b649d79 -
derive the concurrency cap for the sync /jobs path — refs #1031
eval
bcecf30 -
de-pin a slow.py line reference the fix shifted — refs #972
observability
b52d5dc -
relabel the 94,5 % figure as a fidelity-route share, not conformance — refs #955
eval
5d26876 -
document the commit types cz actually enforces — refs #1004
rules
1ae477d -
measure what the never-run WCAG tree leg would find on overlay/augment — refs #970 #726
eval
e3af31f -
write the metrics catalog OBS-003 has required all along — refs #944
observability
d96934d -
correct the gate count and class split that contradicted the code — refs #995 #522 #675
aavs
84b26d3 -
retire the table-axis prose that #902 and #977 made false — refs #987 #977 #902
eval
04e0e01 -
dispose of setuptools PYSEC-2026-3447 — no suppression, lift instead — refs #985
security
fb3e900 -
retire the prose this session's fixes made stale — refs #940 #936 #902 #954
cecbe8a -
measure the reflow text-layer discard class and draft the guard policy — refs #935
eval
98a5ef8 -
measure the triage threshold noise and simulate hysteresis policies — refs #954
eval
68866e4 -
measure the bulk-plus-redo double VLM spend and the cache-key dedupe feasibility — refs #936
eval
ce286c6 -
replace the stale 90.4 percent with the provenanced 95.61 resweep and mark unbacked numbers — refs #955
architecture
5c1b900 -
freeze the OSS extraction landscape 2026-08 before the probe data evaporates — refs #953 #952 #951
eval
26ade78 -
draft the SR-evidence MVP decision — AC1 shipped, AC2/AC3 blocked by the ADR-016-vs-030 contradiction — refs #769
eval
4510513 -
unblock the audible-probe kappa calibration — spoken_view is structure-aware post-#925 — refs #749
eval
1d09ebd -
measure overlay heading drops on the real corpus — repair option (a) falsified — refs #919
eval
68b2ec4 -
re-measure the augment heading delta post-#925 — denominator 17 to 32, no default promotion — refs #896
eval
742f2bb
Tests (6)
-
reset the job-store global the same way the settings global is reset
api
5d32f82 -
assert the contrast_aaa delta, not the process-cumulative sum
observability
c76be6d -
pin why the single-word title bar cannot be loosened where it stands — refs #1037
quality
1167024 -
measure figure-alt-present corroboration per provenance class — refs #1026 #970
eval
a9e5181 -
attribute the verdict cause for the four conformant FAILED documents — refs #1024 #516 #726
eval
14eda55 -
pin the client budget to narration_timeout_s — refs #772 #599
narration
c3765b6
Build-System (1)
-
lift setuptools to >=83 via a uv constraint and drop the CVE-2025-3000 ignore — refs #999
deps
8565e25
Sonstiges (1)
-
version 0.13.5 → 0.14.0
5c0ab4e
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.
-
v0.13.4 2026-08-03 10 Änderungen
Diese Version bringt 1 neue Funktion, 5 Fehlerbehebungen, 4 weitere Änderungen.
-
v0.13.3 2026-07-29 6 Änderungen
Diese Version bringt 2 neue Funktionen, 2 Fehlerbehebungen, 2 weitere Änderungen.
-
v0.13.2 2026-07-27 3 Änderungen
Diese Version bringt 1 neue Funktion, 2 Fehlerbehebungen.
-
v0.13.1 2026-07-26 3 Änderungen
Diese Version bringt 1 neue Funktion, 2 Fehlerbehebungen.
-
v0.13.0 2026-07-26 89 Änderungen
Diese Version bringt 27 neue Funktionen, 24 Fehlerbehebungen, 38 weitere Änderungen.
-
v0.12.0 2026-07-17 78 Änderungen
Dieses Release macht den AAVS-Prüfbericht zum verbindlichen Partner-Standard (Report-Contract v2 mit Fundstellen-Angaben und englischen Feld-Übersetzungen), macht den KI-Betrieb ausfallsicher (automatischer Wechsel auf einen zweiten EU-Anbieter) und macht die Prüf-Urteile ehrlicher: fehlende Sprachangaben werden gemeldet statt still angenommen, und bereits konforme Dokumente werden geprüft statt unnötig neu geschrieben.
-
v0.11.0 2026-07-08 74 Änderungen
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.
-
v0.10.0 2026-07-05 270 Änderungen
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.
-
v0.9.0 2026-06-23 244 Änderungen
Diese Version bringt 118 neue Funktionen, 40 Fehlerbehebungen, 86 weitere Änderungen.
-
v0.8.0 2026-06-08 71 Änderungen
Diese Version bringt 31 neue Funktionen, 11 Fehlerbehebungen, 29 weitere Änderungen.