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.
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 Importquote | Anteil importierter Dokumente gegen die Basislinie | −10 Pp. | −15 Pp. oder Binomialtest |
| W2 Gleiche Lücke | dieselbe Befund-Signatur in mehreren Dokumenten | 3 Dokumente | 5 und 30 % des Pakets |
| W3 Hash-Drift | gleicher Schlüssel, andere Prüfsumme | kein Gelb | ab 1 Dokument |
| W4 Wert wird Lücke | ein geltender Wert fällt weg | 1 Dokument | 2 Dokumente oder 1 % der Werte |
| W5 Sprung nach Kernversion | W1 oder W2 nur unter dem neuen Kern | kein Gelb | mit Hypothese |
| W6 Gesamtplan | Gesamtergebnis- oder Gesamtfinanzplan nicht lesbar | 2 Dokumente | 3 und 20 % |
| W7 Abweichungsmuster | dasselbe Muster an derselben Zeile | 2 Dokumente | 3 Dokumente |
| W8 Abschnitte | Zeichenbilanz und Einheiten ohne Beschreibung | unter 0,9 oder +20 Pp. | kein Rot |
| W9 Triage und Kosten | Anteil der Scanseiten mit Ja, Tokens, Dollar | 20 % oder 3-fach | 50 %, 10-fach oder 5 $ |
| W10 Infrastruktur | Fehler der Infrastruktur je Knoten und Stufe | 10 % im Paket | Quarantäne oder Stufe gesperrt |
| W11 Doppellesung | Lesung weicht von der eines anderen Knotens ab | kein Gelb | beide Knoten in Quarantäne |
| W12 Stillstand | offene Aufträge, 60 Minuten kein Paket | kein Gelb | Bericht 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 dokumentebleibt nutzbar, bis die neue ganz abgenommen ist.