Python führt den Regelvertrag, ein Weg in den Fit-Check
Status: angenommen. Datum: 05.11.2026.
Anlass
Fit & Gap und Marktcheck rechnen bisher nur im Browser (lib/vergabefit/rules.ts). Die
serverseitige Bewertung (VER-27) braucht dieselben Regeln in Python, ohne dass zwei
Fassungen auseinanderlaufen. Zugleich entstanden zwei Übernahmen geprüfter Kriterien in die
Requirement Sets: eine las die strukturierten criteria-1-Felder, die der Nachtrag vom
01.11.2026 zur Kriterienextraktion zurückgenommen hat, die andere den Freitext des
v2.1-Vertrags und leitete daraus teils Regeln ab, die strenger waren als die Ausschreibung.
Entscheidung
services/agent/src/vergabefit/models.pyist der kanonische Regelvertrag.scripts/generate_vergabefit_contract.pyerzeugt darauslib/vergabefit/generated-contract.ts; CI prüft den Stand mit--check.rules.pyportiertrules.tsundfit-gap.ts. Golden-Fixtures untertests/fixtures/vergabefit/binden beide Fassungen an dieselben Ergebnisse. Der Browser rechnet weiter, bis die Ansichten auf die API wechseln; danach entfälltrules.ts.- Es gibt genau eine Übernahme:
POST /runs/{id}/fit-requirementsmitcriteria_extraction/fit_requirements.py. Ihre Ausgabe wird gegenCriterionvalidiert. - Eine Regel ist nie strenger als die Ausschreibung. Zeiträume brauchen einen
Vergangenheitsbezug, Bezugsjahre müssen als solche genannt sein, und ein Zertifikat mit
zugelassener Alternative bleibt
manual_reviewmit offener Frage.
Folgen
- Änderungen am Vertrag beginnen in Python; die TypeScript-Typen werden nur generiert.
- Mehr Kriterien bleiben zur manuellen Prüfung offen, dafür entstehen keine falschen "nicht erfüllt"-Ergebnisse aus Vertragslaufzeiten oder Formblattnummern.
- Für CPV-Codes gibt es nur die Regelart
cpv; Browser undrules.pybewerten sie gleich. Ein breiterer Firmencode bleibtunknown, weil er den engeren Bereich weder belegt noch ausschließt. Die Übernahme aus Kriterien erzeugt sie erst mit VER-27. formale_einreichungsanforderungbleibt außerhalb des Fit-Checks. Solche Vorgaben sagen nichts über die Eignung einer Firma und bleiben im Review sichtbar.
Alternativen
- Die strukturierten Felder wieder einführen: widerspricht dem Rückbau auf v2.1 und würde Prompts, Schema und jeden bezahlten Lauf ändern.
- Beide Übernahmen behalten: zwei Knöpfe mit abweichenden Kategorien und IDs für dieselbe Handlung.
rules.tssofort entfernen: alle Ansichten müssten vor dem Freeze am 11.11.2026 auf eine neue API wechseln.