• v10.1.0
    CI / verify (push) Successful in 8m10s
    CI / pwsh (push) Successful in 2m46s
    Release / converters (push) Successful in 9m25s
    Release / release (push) Successful in 39s
    Release / wiki-mirror (push) Successful in 24s
    Stable

    torben released this 2026-10-16 14:43:11 +00:00 | 2 commits to main since this release

    10.1.0 - 2026-10-16 - Große PDFs und lange Quellen beim Ingest, vollständiger Export, Konverter-Tests gegen echte Dokumente

    Author: Torben Nehmer

    Medium impact

    • raw derive PDF: Gliederung mit Seite und Zeile im Kopf, Hinterlegungen, Durchstreichungen und abweichende Textfarben als Auszeichnung im Text, Bildseiten als CHECK
    • Konverter-Testkorpus und Harness ziehen in das private Repository chemenu-testfiles; neuer Workflow Converters, Freigabe-Gate im Release
    • raw derive PDF: Auszeichnungen auf ein Minimum - Struktur zuerst, ~~ ** * nur wo eindeutig, Bildseiten-CHECK nur für Inhaltsbilder
    • raw derive PDF: Kopf nennt die Bildseiten (images) und die nicht zugeordneten Seiten (unmatched); neue Anweisung read-page-images für den gezielten Blick auf diese Seiten
    • Länge als dritte Größenachse beim Ingest: raw derive und raw fetch melden einen Text über der Längenschwelle mit einer CHECK-Zeile, raw pending markiert eine lange Textdatei; ingest-large-tree liest ihn in Teilen nach der Gliederung, mit einer Faktenliste je Teil (#226)
    • wiki-query liest den Wortlaut geführt in der Rohdatei nach: über Seite, Source-Seite und Gliederung der Ableitung bis zum Zeilenbereich, nie freies Suchen in raw/; kb/CONTRACT.md präzisiert das Qualitätsziel auf die Substanz (#227)
    • export run: commit= im Marker je Seite statt je Ziel - ein Commit schreibt nur die Dateien der Seiten neu, die er berührt hat; der erste Lauf nach dem Update schreibt jede Datei einmal neu (#221)
    • wiki-ingest: ein Lauf endet nach einer Quelle mit Stopp und /clear-Empfehlung - keine Schleife über mehrere Einträge im selben Kontext; capture-session delegiert wiki-ingest nicht mehr an Subagents (#219)
    • tools/bugreport: eine nach dem Sammeln korrigierte Chronologie wird mit --bundle/--chronology in das vorhandene Bündel getauscht (gleiche Verarbeitung, kein zweiter Lauf, kein zweites Bündel); bug-report.md prüft die Chronologie vor dem Sammeln (#220)
    • Export- und Eingangsordner dürfen im Backup-Ziel neben git/ und den Maschinenordnern liegen: die Überschneidungsregel gilt nur noch für /git und den eigenen Maschinenordner, upload collect und export run weisen Ordner in oder unter Backup-/Export-Daten fremder Maschinen zur Laufzeit ab
    • Export: include "all" wählt die ganze KB, index: true schreibt index.md und INDEX.md im Ziel

    Low impact

    • instructions/dev: Konverter-Vergleich – eigene Ableitung gegen Referenzwerkzeuge am privaten Korpus, mit Grundlinie
    • instructions/dev: converter-comparison nennt harness/compare/README.md als Ort der Einrichtung
    • raw derive PDF: Durchstreichung und Textmarker lassen Programmtext aus, wie der Vertrag sagt (#231)
    • read-page-images: liest der Harness mit Subagenten, öffnet die Ingest-Sitzung die Seitenbilder gar nicht selbst, auch nicht zur Kontrolle (#234)
    • wiki-ingest step 1 sends the session to read-page-images.md before the discussion, so up to the threshold the page images are no question for the user
    • gates.md/session-setup.md: die Regel für eine neue Session-Id steht nur noch in gates.md, mit dem ausdrücklich gewünschten weiteren Ingest-Lauf als zweiter Grenze neben plan.md (#219)
    • export run/upload collect: Fehlertexte im Kommandovertrag nennen die Backup-Ordner statt backup.target und die Laufzeit-Ablehnung von Backup- und Exportdaten (#216)
    • publish-and-ci: CI-Wartezeiten auf gemessene Laufzeiten gesetzt - ein Runner, Jobs nacheinander, ca. 12 Min bis zum letzten grünen Lauf (Konverter ca. 22), Aufgeben nach 25 (35) statt 15 Min
    • publish-and-ci: hält fest, dass der Runner derzeit keine parallelen Jobs fährt, und dass die Wartezeiten neu zu messen sind, sobald er es tut
    • publish-and-ci: Wartezeit zählt ab freiem Runner, nicht ab dem Push - offene Läufe eines früheren Pushs laufen zuerst, und der Runner hält die Push-Reihenfolge nicht ein
    • Export: setup-instance und How-to nennen auch die ganze KB als Exportumfang, page_export-Docstring nennt die Index-Dateien (#217 close)

    Dieses Release macht den Ingest großer und langer Quellen belastbarer und den Export vollständiger. raw derive liest PDFs mit Gliederung, Auszeichnungen und gezielter Seitenbild-Prüfung, und die Länge ist als dritte Größenachse eingeführt, sodass lange Einzeldokumente in Teilen mit Faktenliste gelesen werden. wiki-query liest den Wortlaut geführt in der Rohdatei nach. Ein Ingest-Lauf endet nach einer Quelle. Der Export schreibt je Seite nur die betroffenen Dateien neu und kann die ganze KB samt Index-Dateien ausgeben. Die Konverter-Tests laufen gegen echte Dokumente im privaten Repository, mit Freigabe-Gate im Release.

    Konverter-Tests gegen echte Dokumente im privaten Repository

    Der Testkorpus mit echten Dokumenten (PDF, Mail, Office, ZIP) und sein Test liegen nicht mehr in diesem Repository, sondern in dem privaten torben/chemenu-testfiles, das ein Entwickler als ignoriertes testfiles/ neben den Stack klont (kein Submodul; ohne Zugriff fehlt nur dieser Lauf). Der neue Workflow Converters führt den Harness bei einem Push auf main aus, der die Konverter berührt, und auf Zuruf; release.yml führt ihn vor jedem Release ohne Suffix aus und bricht bei Rot vor dem Tag ab. Die gewöhnliche CI enthält den Test nicht mehr, die Abdeckungsgrenze hält. Eine Instanz merkt davon nichts.

    Große PDFs: Gliederung und Auszeichnungen

    Bei einem PDF schreibt raw derive die Gliederung als Feld outline in den Kopf, je Eintrag mit Ebene, Seite und der Zeile der Seitenmarke in derived.md. Im Text stehen drei Auszeichnungen als gewöhnliches Markdown für das, was die Seite nur durch ihre Form sagt: ~~…~~ für Durchstreichung, **…** für Textmarker, Fettdruck oder eine deutlich andere Textfarbe, *…* für Kursiv. Die Ableitung bestimmt erst die Struktur (Fließtext, Code, Tabellengitter, wiederkehrende Vorlagen) und zeichnet nur aus, wo die Form eindeutig ist; Fett, Kursiv und Farbe zählen nur im Fließtext. Ohne die Auszeichnungen ist der Text derselbe wie zuvor. Das Feld markings ist die Legende mit höchstens drei Zeilen, kein Tag überschreitet eine Zeile oder Seitenmarke. Der CHECK nennt nur Seiten mit inhaltlichem Bild oder Diagramm. Das Layout liest pdfminer.six, neu in requirements.txt; vorhandene derived.md bleiben unberührt.

    Lange Dokumente: Länge als dritte Größenachse (#226)

    Ein einzelnes langes Dokument mit wenigen Themen löste bisher keine der beiden Größenachsen aus und wurde in einem Zug gelesen. Jetzt melden raw derive und raw fetch jeden geschriebenen Text über der Längenschwelle (Zeichen, nicht Tokens; der Wert steht in raw derive -h) mit einer CHECK-Zeile, und raw pending markiert eine lange .md/.txt mit long: (JSON: length). ingest-large-tree liest einen solchen Text in Teilen entlang seiner Gliederung, je Teil nur dessen Zeilenbereich, und hält je Teil eine Faktenliste mit Fundstelle, Bedingung, Ausnahme und Modalität fest; die eine Source-Seite entsteht aus allen Listen, nicht aus Zusammenfassungen.

    Wortlaut geführt nachlesen (#227)

    Das Qualitätsziel in kb/CONTRACT.md gilt der Substanz, nicht dem Wortlaut: Fragt jemand, was eine Regel genau sagt, darf wiki-query die Rohdatei lesen, aber nur auf festem Weg – von der Seite über ihre Source-Seite und raw_files: zur Gliederung im Kopf der Ableitung und dort nur den Zeilenbereich des Abschnitts. raw/ wird nie durchsucht. Ohne Gliederung wird ein Text unter der Längenschwelle ganz gelesen, darüber nennt die Antwort den Weg über eine neue Ableitung. Zitiert wird in der Originalsprache mit Seitenzahl, ohne die Auszeichnungen der Ableitung; Gestrichenes heißt gestrichen. Steht die Antwort nur in der Rohdatei, benennt die Antwort die unvollständige Seite und schreibt nichts. Der MCP-Leseserver bleibt ohne Rohzugriff.


    This note is a snapshot of the CHANGES.md entry as it stood when the tag was cut, and
    is never edited afterwards. The maintained version of this text - including any later
    correction - is the entry for this version in CHANGES.md in the repository.

    Downloads