PDF-Pipeline

Viele Städte und Gemeinden veröffentlichen ihren Haushalt nur als PDF; Boost liest die Zahlen daraus selbst und übernimmt sie erst, wenn sie geprüft sind.

Blau ist der Weg eines Dokuments bis in die Datenbank. Rot ist der Weg nach einem roten Paket: erst nach Gate und Freigabe rechnet der Nachlauf die Dokumente neu. Grau zweigen Scanseiten und STOP-Fälle ab.

Die Stufen

Die Pipeline macht aus jedem PDF Werte in der Datenbank, im Normalfall ohne Sprachmodell und mit vielen Prozessen parallel. Geschrieben wird erst, wenn ein Wächter ein ganzes Paket als Code geprüft hat; was bricht, repariert ein Koordinator, und ein Gate gibt frei. Jede Datei und jede Lesung trägt eine (sha256), jeder geschriebene Wert seinen .

1. Abruf

Ein bedingter Abruf mit eigenem Takt je Host, robots.txt vorher. Die Datei liegt danach inhaltsadressiert über ihre Prüfsumme, die Herkunft samt verlinkender Seite und Weg steht in einer eigenen Zeile. Liefert die Quelle nichts, wird das eine Lücke.

2. Seiten

Die Seitenschicht holt die Wörter mit ihrer Lage aus der Textebene des PDFs, in Bereichen zu 50 Seiten, damit große Haushalte parallel laufen.

3. Scanseiten

Seiten ohne Textebene gehen durch eine Triage ohne Modell, dann durch Texterkennung. Erst wenn eine Tabelle dann noch nicht aufgeht, fragt Sonnet, ob die Seite Zahlen trägt, und liest sie; Opus nur nach einer gerissenen Prüfung.

4. Lesen

Je Dokument der Reihe nach über alle Bereiche: aus Wörtern werden Tabellen mit Zeilen und Spalten nach dem Profil der Dokumentfamilie. Die Lesung hat eine eigene Prüfsumme, damit sich zwei Läufe vergleichen lassen.

5. Prüfen

Jede Tabelle wird gegen ihre eigenen Summen gerechnet. Heraus kommen ein Prüfbericht, eine Statusmatrix je Einheit und Konto und Signaturen der Befunde, die der Wächter später zählt.

6. Zuordnung

Ein Wörterbuch je Gemeinde ordnet die Einheiten ohne Modell dem Produktrahmen zu. Namen, die es nicht kennt, gehen gesammelt über viele Dokumente in einen Modellaufruf.

7. Vorschau

Die geplanten Zeilen stehen gegen den geltenden Lauf als Ergebniszeile des Dokuments. Geschrieben wird hier noch nichts.

8. Paket und Wächter

Bis zu 50 Dokumente einer Familie bilden ein Paket. Der Wächter bewertet es als Code mit den Regeln W1 bis W12: grün gibt den Import frei, gelb schreibt einen Bericht und lässt den Import laufen, rot sperrt die Familie und hält ihre Importe an.

9. Import

Erst nach dem Befund schreibt der Import über einen Importlauf in die Datenbank. Die Rückschritt-Sperre hält jeden Lauf zurück, der bei gleicher Rohdatei schlechter wäre als der geltende.

10. Abschnitte

Nach dem Import zerlegt die Pipeline das Dokument in Textabschnitte mit Art, Einheit und Fundstelle, in einem eigenen Lauf. Investitionsmaßnahmen kommen ohne Modell als Angaben mit. Angaben mit Zitat durch ein Modell sind vorgesehen und ausgeschaltet.

11. Koordinator, Gate und Freigabe

Nach einem roten Paket reproduziert der Koordinator, ein Opus-Agent, den Bruch mit einem Test, fixt ihn im eigenen Worktree und meldet vorher, welche Werte sich ändern sollen. Dann prüft ein Gate als Code in neun Schritten. Ist es grün, merged die Freigabe den Fix lokal, nie mit Push, der neue Kern läuft zuerst als Kanarie, die Sperre fällt, und der Nachlauf rechnet die Dokumente der roten Pakete neu. Sonst ist der Eingriff verworfen, die Sperre bleibt, und Lucas bekommt den Bericht.

12. Fall-Pool

Ein STOP betrifft ein einzelnes Dokument, etwa ein unbekanntes Profil oder eine Zuordnung, die nicht aufgeht. Er wird ein Auftrag für einen Sonnet-Agenten, höchstens vier zugleich, der das Register ergänzen, ein Profil oder eine Zuordnung vorschlagen und eine Anfrage entwerfen darf, nie Code. Nach zwei Versuchen versucht es Opus einmal, danach geht der Fall an Lucas.

Warteschlange und Pools

Statt vieler Agenten zieht ein Treiber je Maschine Aufträge aus einer Warteschlange in Postgres. Ein Auftrag ist eine Stufe für einen Schlüssel aus ihren Eingaben; er wartet auf seine Vorstufen und läuft in einem Pool: abruf, cpu, llm, db und fall. Viele zugleich heißt viele Prozesse, keine Agenten.

Fehler haben eine Klasse: ein Fehler der Quelle wird eine Lücke, ein STOP ein Fall, ein Fehler der Infrastruktur (Kontingent, Zeitgrenze, Absturz) wird wiederholt und nie eine Lücke. Heute läuft die Pipeline nur auf dem Mac, mit höchstens sechs CPU-Plätzen, bis die Abnahmen eingetragen sind.

Stufenspeicher und Kernversionen

Jede Stufe legt ein unveränderliches Artefakt unter ihrem Schlüssel ab. Ein zweiter Lauf oder ein Nachlauf nach einer Codeänderung rechnet nur die Stufen neu, deren Schlüssel sich geändert hat.

Der Kern einer Familie ist der Hash über die Versionen ihrer Kernstufen. Ein neuer Kern läuft erst im Schatten über die Goldmenge, dann als Kanarienpaket aus zehn Dokumenten und erst danach breit; Zurückrollen ist ein Zeigerwechsel auf gespeicherte Artefakte.

Die Regeln des Wächters

Der Wächter misst ein Paket gegen die Basislinie seiner Familie. Hat die Familie noch keine zehn Dokumente, fallen W1 und W8 weg.

Regel Prüft Gelb ab Rot ab
W1 ImportquoteAnteil importierter Dokumente gegen die Basislinie−10 Pp.−15 Pp. oder Binomialtest
W2 Gleiche Lückedieselbe Befund-Signatur in mehreren Dokumenten3 Dokumente5 und 30 % des Pakets
W3 Hash-Driftgleicher Schlüssel, andere Prüfsummekein Gelbab 1 Dokument
W4 Wert wird Lückeein geltender Wert fällt weg1 Dokument2 Dokumente oder 1 % der Werte
W5 Sprung nach KernversionW1 oder W2 nur unter dem neuen Kernkein Gelbmit Hypothese
W6 GesamtplanGesamtergebnis- oder Gesamtfinanzplan nicht lesbar2 Dokumente3 und 20 %
W7 Abweichungsmusterdasselbe Muster an derselben Zeile2 Dokumente3 Dokumente
W8 AbschnitteZeichenbilanz und Einheiten ohne Beschreibungunter 0,9 oder +20 Pp.kein Rot
W9 Triage und KostenAnteil der Scanseiten mit Ja, Tokens, Dollar20 % oder 3-fach50 %, 10-fach oder 5 $
W10 InfrastrukturFehler der Infrastruktur je Knoten und Stufe10 % im PaketQuarantäne oder Stufe gesperrt
W11 DoppellesungLesung weicht von der eines anderen Knotens abkein Gelbbeide Knoten in Quarantäne
W12 Stillstandoffene Aufträge, 60 Minuten kein Paketkein GelbBericht und Laufbuch

Das Gate in neun Schritten

Das Gate läuft nach dem Agenten noch einmal aus dem Code des Koordinators, und nur dieser Lauf zählt. Scheitert derselbe Schritt zweimal mit derselben Ursache, ist der Eingriff verworfen.

  • 1. Reproduktion: der Test ist vorher rot und nachher grün
  • 2. Tests und Typprüfung
  • 3. Erwartung vor dem Schatten
  • 4. Schatten über Goldmenge und gelesene Dokumente
  • 5. Diff: jede Änderung ist erwartet
  • 6. Goldmenge unverändert
  • 7. kein Wert wird zur Lücke
  • 8. Stichprobe mit Prüfbild der Fundstelle
  • 9. Urteil im Laufbuch vorher gegen nachher

Was offen ist

  • Die Abnahme des Koordinators ist unvollständig; bis sie eingetragen ist, bleibt die Sperre auf sechs CPU-Plätze.
  • Die Goldmenge (Rheine 2025 und 2026, Wettringen 2025) ist von Lucas noch nicht bestätigt.
  • Scanseiten sind im Treiber noch nicht verdrahtet: eine Lesung mit Scanseiten endet dort mit einem STOP, die Hülle liest sie auf dem direkten Weg.
  • Der erste echte Eingriff am 18.10.2026 wurde verworfen; das Paket muss neu angestoßen werden.
  • Die Agenten laufen ohne Sandbox des Betriebssystems; über die Freigabe entscheidet deshalb allein das Gate.
  • W13 (Cache-Bruch) und W14 (Kontingent) sind nicht gebaut, Abschnitte erscheinen noch nicht in der Datenlage.
  • Die frühere PDF-Pipeline über boost import dokumente bleibt nutzbar, bis die neue ganz abgenommen ist.

Stand 18.10.2026

Für Entwickler

Quelle: docs/pipeline/README.md, treiber.md, aufsicht.md und koordinator.md. Entscheidungen: E-200, E-330 bis E-345, E-428 bis E-430.