Golden-Record
Die Datenbank wird vor jedem automatischen Lauf auf einen definierten Stand zurückgesetzt.
Wie das QS-Gate jede neue realERP-Version prüft, bewertet und zur Freigabe bringt – und wie Sie jede Ansicht des Cockpits bedienen. Für Berater, Freigeber, Entwickler und Fachbereich.
Was das QS-Gate tut, wie ein Lauf abläuft und wie bewertet wird
Das QS-Gate spielt nach jeder Änderung die komplette realERP-Anwendung durch – Schnittstellen, Oberfläche, Datenbank und Geschäftsprozesse –, vergleicht jedes Ergebnis mit dem zuletzt freigegebenen Stand und entscheidet nachvollziehbar über die Freigabe.
Es besteht aus zwei Teilen: dem Prüfstand, der den automatischen Prüflauf ausführt, und dem Cockpit, in dem Sie die Ergebnisse auswerten, Abweichungen freigeben und Prozesse im Prozess-Studio abspielen oder aufnehmen.
API, Oberfläche und Prüfstand laufen getrennt vom Produktivsystem.
Die Datenbank wird vor jedem automatischen Lauf auf einen definierten Stand zurückgesetzt.
Das Datum steht fest (21.10.2026) – Ergebnisse sind reproduzierbar.
Nur echte Änderungen fallen auf; Rauschen (neue IDs, Zeitstempel) wird normalisiert.
Läufe, Freigaben und Referenzwechsel sind über eine SHA-256-Kette gesichert.
| Begriff | Bedeutung | Wo im Cockpit |
|---|---|---|
| Abweichung | Unterschied einer Beobachtung zur Referenz – kann gewollt sein (neue Funktion) oder ungewollt (Seiteneffekt). Wird freigegeben oder abgelehnt. | Abweichungen |
| Befund | Im Lauf fehlgeschlagene Prüfung: Fehler, verletzte fachliche Erwartung oder verletzte Regel – unabhängig von der Referenz. | Befunde, Ursachen |
Teil A erklärt Ablauf, Schnelllauf, Bewertung und Freigabe. Teil B beschreibt jeden Menüpunkt des Cockpits in der Reihenfolge der Navigation – mit Zweck, Bildschirmfoto, Bedienung und Tipps. Teil C enthält Arbeitsanleitungen (Prüfauftrag und Pakete, Prozess-Studio, Prüfbericht), Teil D die Prüfinhalte (Fachprüfung Rechnungswesen, Sonderfälle und Ketten, Prozesskatalog, neue Prüfdimensionen), Teil E Schnittstelle, Betrieb und Rollen, Teil F FAQ, Glossar und Änderungsprotokoll.
Zahlenbeispiele und Bildschirmfotos stammen aus der laufenden QS-Gate-Instanz, Lauf vom 29.10.2026 (Version cefd1ba); Bilder des Prozess-Studios aus einem lokal gestarteten Cockpit mit Testdaten. Die Bilder der Ausgabe 2 (Cockpit, Pakete, Zuständigkeit, Vergleich, Prozesse, Schnelllauf, KI-Zweitprüfung) zeigen ein lokal gestartetes Cockpit mit den Daten des Laufs cefd1ba; laufender Lauf, Schnelllauf und KI-Verbrauch sind dort nachgestellt. Ihre aktuellen Werte sehen Sie immer im Cockpit.
In fünf Minuten vom Login zur Antwort auf die Frage „Darf diese Version zum Kunden?“.
/anmelden) mit Kurzüberblick über Leistung, Funktionen und Ablauf.Erscheint auch, wenn das Namensfeld leer ist. Das Handbuch selbst ist ohne Anmeldung unter /handbuch erreichbar.
| Bereich | Inhalt und Bedienung |
|---|---|
| Navigation links | Drei Gruppen: oben Cockpit, Läufe, Prozess-Studio; „Ausgewählter Lauf“ mit allen Reitern eines Laufs (Zahlen = offene Abweichungen bzw. Befunde des letzten Laufs); „Über Läufe“ mit Verlauf, Stabilität, Leistung, Vergleich, Protokollkette und Einstellungen. |
| Fußzeile der Navigation | Status der Protokollkette („Protokollkette intakt“ bzw. „Kette verletzt“), angemeldeter Name, Links zu Handbuch, Klassische Ansicht (/klassisch) und Abmelden. |
| Kopfzeile | Seitentitel, Lauf-Auswahl (Datum · Version · Urteil – wechselt den „ausgewählten Lauf“), Live-Hinweis „Lauf läuft · Phase …“ (bzw. „Schnelllauf läuft …“) und – wenn während des Laufs ein neuer Stand eingetroffen ist – „wartet: <commit>“, Suche/Befehlspalette, Hell-/Dunkel-Umschalter, Schaltflächen Lauf starten und Schnelllauf (beide gesperrt, solange ein Lauf läuft) und Handbuch (springt zum Kapitel der aktuellen Seite). Auf schmalen Bildschirmen bricht die Kopfzeile in zwei Zeilen um, statt Knöpfe abzuschneiden. |
| Schublade (rechts) | Detailansichten öffnen sich als Seitenleiste von rechts – z. B. eine Abweichung, ein Befund, eine Maske. Schließen mit „Schließen“, Klick daneben oder Esc. |
Mit ? zeigt das Cockpit diese Übersicht jederzeit an.
| Taste | Wirkung |
|---|---|
| Strg/⌘ + K oder / | Befehlspalette: Seiten, Bereiche, Szenarien, Tabellen und Volltextsuche in allen Beobachtungen |
| g dann c / a / b / e | Cockpit / Abweichungen / Befunde / Endpunkte des gewählten Laufs |
| g dann s / l / v | Stabilität / Leistung / Befund-Verlauf |
| j / k | nächste / vorige Zeile in Abweichungen und Befunden |
| Enter | markierte Zeile öffnen |
| x | markierte Zeile auswählen (Sammelfreigabe / Sammelbearbeitung) |
| Esc | Seitenleiste oder Palette schließen |
| Leertaste | im Prozess-Studio beim Abspielen: nächsten Schritt ausführen |
Die Palette (Strg+K oder Lupe in der Kopfzeile) findet Seiten, Bereiche, Szenarien und Tabellen des gewählten Laufs. Ab zwei Zeichen bietet sie zusätzlich „„…“ in allen Beobachtungen suchen“ an – das öffnet den Reiter Suche. Navigation mit ↑ ↓, öffnen mit Enter.
Automatisch, reproduzierbar, nachvollziehbar: Jede neue Version startet auf demselben Datenstand mit eingefrorener Uhr – nur echte Änderungen fallen auf.
Manueller Merge main → qsgate.
API startet neu: Golden-Record, Deltas, Ergänzungen, Uhr 21.10.2026.
19 Phasen, vollautomatisch.
Jede Beobachtung gegen die Referenz.
GO/NO-GO, Vier-Augen, neue Referenz.
QSGATE_UEBERHOLT_FRIST_S (900 s) hart beendet.QSGATE_DEPLOY_MODUS=fenster, Auto-Deploy der API aus, Deploy-Hook als QSGATE_RESET_HOOK, GITHUB_TOKEN): Der Prüfstand beobachtet den Zweig (QSGATE_BRANCH, Vorgabe qsgate) und deployt neue Commits erst nach dem laufenden Lauf – kein Lauf wird mehr überholt.qsgate/pruefstand/** neu.Der Lauf vom 29.10.2026 dauerte 4 h 08 min, davon rund 2,5 h für die Szenarien. Hauptbremse ist das Anfragelimit der API. Im QS-Testsystem sind die Limits inzwischen angehoben (API 5.000 Anfragen/min, Anmeldung 500 je 15 min; Prüfstand QSGATE_MAX_RPM=4500, QSGATE_MAX_AUTH_15MIN=450), und die Szenario-Phase läuft parallel – ein voller Lauf dauert damit voraussichtlich rund 2 statt 4 Stunden. Verlässlich ist die Restzeit-Schätzung im Live-Block des Cockpits (aus den Phasendauern des letzten Laufs).
Jede Phase liefert Beobachtungen, die normalisiert und mit der Referenz verglichen werden; fehlschlagende Prüfungen sind Befunde. Zahlen: Lauf vom 29.10.2026 (Prüfungen · Befunde); die mit neu markierten Phasen kamen danach hinzu.
| Phase | Was geprüft wird | Typische Befunde | Beispiel | Dauer |
|---|---|---|---|---|
| Datenbank vorher | Zeilenstand aller Tabellen vor dem Lauf | Start nicht auf frischem Golden-Record | 295.207 Zeilen | 15 s |
| Katalog | Operationen (OpenAPI), MCP-Tools, Rollen, Modul-Schalter, Navigation | entfallene Endpunkte/Tools (kritisch) | 8.602 · 0 | 2 s |
| Schema | Spalten, Typen, NOT NULL je Tabelle | Schemaänderung ohne Installer/Delta | 2.438 | 0 s |
| Schema-Abgleich Code | SQL-Texte im Backend gegen das Schema | Tabelle/Spalte im Code fehlt in der DB | 106 bekannt · 0 neu | 1 s |
| Lesende Endpunkte | jeder lesende Endpunkt mit echten IDs | HTTP 500, geänderte Antwort | 2.381 · 1 | 4,6 min |
| MCP-Lesetools | lesende KI-/MCP-Werkzeuge | Tool-Fehler, geänderte Ausgabe | 346 von 641 | 1,2 min |
| Oberfläche | jede Maske: Text, Konsolen-/Serverfehler, Bildvergleich | Konsolenfehler, Serverfehler in Masken | 863 · 23 | 9,9 min |
| Barrierefreiheit neu | 30 Kernmasken mit axe-core (WCAG 2.1 AA) und in der Mobilansicht 390 px | kritischer Verstoß, waagrechtes Scrollen, abgeschnittene Knöpfe | — | ≈ 6–8 min |
| Klickpfade | Knöpfe der Masken, Leer-Speichern, Kernprozesse per Klick | Formular speichert ohne Prüfung, Absturz | in Oberfläche | 25,4 min |
| Prüfketten | 219 In-App-Prüfketten (FI/CO/SD/MM/WM/PP/HR/CRM) | Kettenschritt rot | 1.039 · 10 | 34 s |
| Szenarien | 1.120 Geschäftsprozesse über die API bis zum Endzustand – parallel nach Plan (siehe unten) | Fehler, fachliche Erwartung verletzt | 42.776 · 139 | 2,5 h |
| KI-Zweitprüfung neu | Stichprobe der Fachprüf-Belege durch eine KI (HGB/UStG/SKR) – nur Hinweise, nicht freigaberelevant; ohne Schlüssel übersprungen | „KI-Hinweis“ (nie ein Befund) | — | — |
| Dialogfunktionen | erreicht jede Masken-Aktion ein Backend? | toter Knopf (Route fehlt) | 16 · 0 | 1 s |
| Rechte und Mandanten | Rechte-Matrix: Rollen × schreibende Routen, fremder Mandant; begründete Ausnahmen in config/rechte-ausnahmen.json | Schreiben ohne Recht, fremde Daten | 7.446 · 18 | 33,7 min |
| Fehleingaben | leere Eingaben, falsche Datentypen | HTTP 5xx, Ungültiges angenommen | 3.984 · 46 | 10,3 min |
| Sicherheit neu | Mandanten-/Buchungskreistrennung (auch schreibend), Eingabe-Angriffe, Anmeldung/Token | Durchgriff auf fremde Daten, Injection, Aktion ohne Anmeldung | — | — |
| Nebenläufigkeit | 2–10 gleichzeitige Anfragen auf denselben Beleg | Doppelbuchung, Überzahlung, doppelte Nummer | 21 · 1 | 8,3 min |
| Last neu | 8 virtuelle Benutzer verschiedener Rollen gleichzeitig auf Lese- und Schreibpfaden | Serverfehler unter Last, doppelte Nummer, p95 zu hoch | — | ≈ 1 min |
| Code-Abdeckung | ausgeführte Backend-Funktionen und Verzweigungen | Abdeckung gesunken | 82,8 % | 1 s |
| Datenbank nachher | Zeilenstand nach dem Lauf | — | — | 7 s |
| Datenbank-Delta | jede Tabelle: hinzugefügt / geändert / entfernt | Änderung, wo niemand hinschaut | 1.270 Tabellen | 39 s |
| Kennzahlen | Summen-/Saldenliste, Soll = Haben, OP, Steuern, Bestand | Kennzahl unstimmig (kritisch) | 6 · 0 | 1 s |
| Konsistenz | fachliche Invarianten per SQL über die ganze DB | Mengen, Salden, Status verletzt | 65 Regeln · 25 | 1 s |
Ohne eigene Zeitmessung laufen zusätzlich der Pflichtfeld-Abgleich Oberfläche ↔ Backend (Ebene Oberfläche) und die Abfrage des Absturzschutzes (Ebene Fehleingaben). Die neuen Phasen beschreibt das Kapitel Neue Prüfdimensionen; jede lässt sich per Umgebungsvariable abschalten (z. B. QSGATE_LAST=off).
QSGATE_PARALLEL (Vorgabe 3, höchstens 8; 1 = nacheinander wie bisher). Grundlage sind das Laufzeitprofil des Referenzlaufs und die Regeln in config/parallel.json (Sammelbereiche, exklusive Bereiche und Dateien, die allein laufen müssen; anderer Pfad über QSGATE_PARALLEL_CONFIG).parallelPlan; node src/cli.js plan zeigt ihn vorab.phases.Szenarien.warten, wie lange auf das Anfrage- bzw. Anmeldelimit gewartet wurde – die eigentliche Bremse.«neu», Zeitstempel zu «ts», Unix-Zeiten zu «epoch», das echte Tagesdatum zu «heute»; Listen werden reihenfolgeunabhängig verglichen.rules.json – Änderung nur per Pull Request mit Begründung.Kopfzeile › Schnelllauf · POST /api/v2/start {"modus":"schnell"} · node src/cli.js run --schnell
Ein schneller Zwischenstand nach einem Commit: Der Prüfstand prüft nur die Bereiche, die der Commit-Diff berührt, und meldet in Minuten, ob dort etwas rot geworden ist. Für die Freigabe bleibt der volle Lauf Pflicht.

GITHUB_TOKEN).POST /api/v2/start mit {"modus":"schnell","dateien":["backend/src/…"],"basis":"<commit>","reset":false} – dateien und basis sind optional. Antwort mit freigaberelevant: false.node src/cli.js run --schnell --dateien=a,b bzw. --seit=<commit/zweig> (git diff, Verzeichnis QSGATE_GIT_DIR) oder Umgebung QSGATE_SCHNELL_DATEIEN / QSGATE_MODUS=schnell. --baseline ist mit --schnell nicht erlaubt./api/<bereich>) über config/route-dateien.json, sonst Namens-Heuristik; daraus die passenden Szenarien, lesenden Endpunkte und Masken. Kernänderungen (z. B. Middleware, Datenbank-Helfer, Anmeldung, Nummernkreise) wirken überall – dann prüft der Schnelllauf eine Stichprobe je Modul und vermerkt, dass das Ergebnis eingeschränkt aussagekräftig ist. Reine Doku-/Prüfstand-Oberflächen-Änderungen werden ignoriert.reset: true) und nur Statusvergleich: verglichen wird je geprüfter Beobachtung ok ↔ Fehler gegenüber der Referenz – Inhalte (Belegnummern, Listen) hängen von nicht gelaufenen Vorgänger-Szenarien ab und sind nicht vergleichbar.…_schnell, steht in der Protokollkette, kann aber keine Referenz werden und kein GO geben.Ein grüner Schnelllauf ist kein GO. Er beschleunigt die Korrekturschleife (Entwickler sieht in Minuten, ob die Korrektur wirkt); freigegeben wird nur nach einem vollen Lauf mit Reset.
Die Bewertung ist regelbasiert: Jedes Kriterium hat ein Gewicht. Muss-Kriterien entscheiden über GO oder NO-GO, alle Kriterien zusammen ergeben 0–100 Qualitätspunkte.
Qualitätspunkte = Summe der Gewichte erfüllter Kriterien ÷ Summe der Gewichte aller bewertbaren Kriterien × 100. Nicht bewertbare Kriterien (z. B. ohne Referenz) zählen nicht mit.
GO – alle Muss-Kriterien erfüllt · NO-GO – mindestens ein Muss-Kriterium verletzt · OFFEN – ein Muss-Kriterium ist noch nicht bewertbar.
| Kriterium | Gewicht | Erfüllt, wenn … |
|---|---|---|
| Gegen eine Referenz verglichen | 10 | eine Referenz gesetzt ist |
| Start auf frischem Golden-Record | 10 | der Zeilenstand zu Beginn dem der Referenz entspricht (Toleranz 0,05 %, mind. 50 Zeilen) |
| Uhr steht auf dem Golden-Tag | 5 | das Datum des QS-Gates dem der Referenz entspricht |
| Keine offenen kritischen Abweichungen | 20 | jede kritische Abweichung freigegeben ist |
| Alle Abweichungen geprüft | 10 | keine Abweichung mehr offen ist |
| Keine neuen Serverfehler (HTTP 500) | 15 | kein HTTP 500 neu gegenüber der Referenz auftritt |
| Keine neuen Befunde gegenüber der Referenz | 10 | kein Befund neu hinzukommt |
| Kein Szenario verschlechtert | 15 | kein Szenario mehr Befund-Schritte hat als in der Referenz |
| Keine neuen Schema-Lücken im Code | 5 | keine neue Tabelle/Spalte im Code fehlt im Schema |
| Keine neuen Konsistenzverletzungen | 10 | keine Konsistenzregel neu verletzt ist (Soll = Haben, Zahlstatus, Bestand …) |
| Kennzahlen stimmig | 10 | alle Kennzahlen ohne Fehler sind (Soll = Haben, Salden, Bestand) |
| Höchstens 5 Aufrufe über 4 s | 5 | und nicht mehr langsame Aufrufe als in der Referenz |
| Schreibende Abdeckung ≥ 60 % | 5 | und gegenüber der Referenz nicht gesunken |
| Lesende Abdeckung ≥ 80 % | 5 | Anteil geprüfter lesender Endpunkte |
| Alle Prozessvarianten des Katalogs geprüft | 5 | keine Lücke und kein „nicht gelaufen“ im Prozesskatalog |
| Dialogfunktionen ≥ 98 % durch Tests geprüft | 5 | Anteil geprüfter Masken-Aktionen |
| Backend-Code-Abdeckung nicht gesunken | 5 | Funktionsabdeckung höchstens 0,3 Punkte unter der Referenz |
| Rechte- und Mandantenmatrix ohne Verstoß | 10 | kein Schreiben ohne Recht, keine fremden Daten – Muss, sobald ein Mandantenleck auftritt |
| Fehleingaben werden fachlich abgewiesen | 5 | kein 5xx, nichts Ungültiges angenommen |
| Gleichzeitige Zugriffe ohne Doppelbuchung | 5 | keine Doppelbuchung, Überzahlung, doppelte Nummer – Muss bei kritischem Befund |
| Protokollkette intakt | 5 | alle Einträge korrekt verkettet |
Schwellen (Abdeckung, langsame Aufrufe, Dialogfunktionen) sind je Projekt über rules.json › gates einstellbar; ohne Eintrag gelten die genannten Standardwerte. Quelle: evaluateGates() im Prüfstand. Zusätzliche Kriterien der neuen Prüfdimensionen stehen deklarativ in rules.json › kriterien – siehe Neue Prüfdimensionen. Schnellläufe und überholte Läufe werden nicht bewertet.
100 von 175 Gewichtspunkten erfüllt = 57 Punkte. Zwei Muss-Kriterien verletzt: 56 kritische Abweichungen nicht freigegeben, 2 Szenarien verschlechtert.
| Merkmal | Ausprägungen |
|---|---|
| Art | neu · entfallen · geändert · neuer Fehler · behoben – jeweils gegenüber der Referenz |
| Schweregrad | kritisch Buchungen, Salden, Steuern, Berechtigungen, entfallene Schnittstellen, Fehler in FI · hoch · mittel · niedrig |
| Unangekündigt | Das Modul war im Pull Request nicht angekündigt: hebt den Schweregrad um eine Stufe und verlangt vier Augen. |
| Instabil | Bekannt wechselnde Prüfung (rules.json); standardmäßig ausgeblendet und nicht freigabepflichtig. |
Muss-Kriterien entscheiden, nicht die Punktzahl – z. B. offene kritische Abweichungen oder ein verschlechtertes Szenario.
Mindestens ein Muss-Kriterium ist nicht bewertbar, meist weil noch keine Referenz existiert. Lauf prüfen und als Referenz übernehmen.
Direkt zur Ursache: z. B. „Keine offenen kritischen Abweichungen“ in die Abweichungen, „Keine neuen Serverfehler“ in die Befunde mit Klasse Serverfehler, „Protokollkette intakt“ zur Protokollkette.
Eine neue Referenz entsteht nur, wenn Menschen jede Abweichung einzeln mit Begründung freigeben – kritische und unangekündigte mit zwei Personen. Das System misst und dokumentiert, Menschen entscheiden.

nur-testaenderung mit Begründung und Nachweis bzw. eine-freigabe mit anordnender Person) und in der Protokollkette festgehalten.Zuerst nach „kritisch“ filtern – offene kritische Abweichungen blockieren die Freigabe. Gewollte Änderungen (z. B. neue Felder einer Maske) gezielt mit Ticket-Bezug freigeben; Unklares ablehnen und mit der Entwicklung klären.
Nicht alles Rote ist ein App-Fehler. Jeder Befund wird automatisch einer Kategorie (wer ist zuständig?) und einer technischen Klasse (welche Art Fehler?) zugeordnet.
| Kategorie | Woran erkennbar | Wie man es liest / nächster Schritt | Zuständig |
|---|---|---|---|
| App-Fehler | HTTP 5xx, SQL-/Schemafehler, JavaScript-Fehler, verletzte DB-Regel; Rechte-, Robustheits- und Dialogbefunde | Ursachen-Typ und Erste Analyse lesen (z. B. „Schema: Spalte fehlt“) – der Prüfauftrag liefert SQL- und Code-Suchhinweise | Entwicklung |
| Fachliche Erwartung | Meldung „Erwartung nicht erfüllt“: technisch erfolgreich, fachlich falsches Ergebnis (Betrag, Status, Folgebeleg) | Mit dem Fachkonzept abgleichen: rechnet die App falsch – oder ist die Erwartung im Szenario falsch? | Berater + Entwicklung |
| Fachlich abgewiesen | HTTP 4xx ohne Code- oder Schemafehler: die App lehnt den Vorgang ab | Ist die Ablehnung fachlich richtig? Dann Szenario bzw. Testdaten anpassen, sonst als App-Fehler behandeln | Berater |
| Datenkonsistenz | verletzte Konsistenzregel (Soll = Haben, Liefer-/Fakturamengen, Bestand …) mit auslösender Szenario-Datei | Regel und Verursacher-Datei öffnen; meist Buchungs- oder Mengenlogik | Entwicklung |
| Buchungskreis-Kontext | Vorgang findet keinen eindeutigen Buchungskreis (Mandant mit mehreren aktiven Buchungskreisen) | Buchungskreis am Vorgang pflegen oder aktiv wählen – laut Meldung im Befund | Entwicklung / Berater |
| Golden-Daten / Customizing | Nummernkreis, Kontenfindung, „nicht konfiguriert“, kein Geschäftsjahr, Modul deaktiviert | Nicht die App ändern: Golden-Record per Ergänzung vervollständigen. Im Reiter Befunde standardmäßig ausgeblendet. | QS-Team / Berater |
Ist die Prüfung selbst falsch oder zeitabhängig (instabil), wird sie im Prüfstand mit Begründung korrigiert – nie, um einen roten Lauf grün zu machen. Vorher die Stabilität prüfen.
Zusätzlich bekommt jeder Befund genau eine Zuständigkeit mit Begründung – die Antwort auf „wer muss handeln?“. Sie steht als Spalte „Zuständig“ und Filter in Befunde und im Befund-Verlauf, in Ticket-Texten und in jedem Prüfauftrag.
| Klasse | Zuständig | Typische Belege | cefd1ba |
|---|---|---|---|
| App-Fehler | Entwicklung | Code-/Schemafehler, Route fehlt („Cannot GET …“), toter Knopf, Rechte-, Robustheits-, Nebenläufigkeitsbefunde, HTTP 5xx mit fachlicher Meldung | 183 |
| Testdaten/Szenario | Prüfstand-Team | Szenario erwartet etwas Falsches oder nutzt ungeeignete Testdaten, Klickpfad findet ein Feld nicht | 52 |
| Customizing/Golden-Record | Berater | Nummernkreis, Kontenfindung, „nicht konfiguriert“, Geschäftsjahr/Periode, Wechselkurs fehlt | 14 |
| Fehlalarm-Verdacht | Prüfstand | Befund kommt und geht über die letzten Läufe ohne harten Fehler (instabil) – mit „seit wann“ | 7 |
| Infrastruktur | Betrieb | keine Antwort (HTTP 0), Gateway 502/503/504, Verbindungsabbruch, Speichergrenze, fehlende Dateien im Container | 9 |
Regeln in src/report/zustaendig.js in fester Reihenfolge (die erste passende gewinnt) aus HTTP-Status, Fehlercode, Meldung, Ebene und Historie der bis zu 7 vorangehenden Läufe. Harte Code-/Schemafehler schlagen Instabilität. Folgefehler („übersprungen: Schritt … fehlgeschlagen“) erben die Klasse des fehlgeschlagenen Vorgängers.
Die Klasse beschreibt die technische Art des Befunds und steuert Farben und Filter in Befunde und im Cockpit („Befunde nach Klasse“):
Serverfehler Schema Buchungskreis Fachlich abgewiesen MCP-Tool Prüfkette Konsistenz Oberfläche Sonstiges
Jede Beobachtung gehört zu einer Ebene, z. B. Szenarien, API (lesende Endpunkte), MCP, Oberfläche, Prüfketten, Datenbank, Kennzahlen, Konsistenz. Ebenen erscheinen als Filter-Chips und als Spalten der Modul-Matrix.
Jeder Menüpunkt der Navigation – in der Reihenfolge des Menüs
Adresse #/ · Kürzel g c
Die Startseite: Urteil des letzten Laufs, Freigabe-Entscheidung, Kennzahlen, Trends und die wichtigsten Auswertungen auf einer Seite.
Eine klare, regelbasierte Antwort auf die Frage „Darf diese Version zum Kunden?“ – und der schnellste Einstieg in alle Details.

cefd1ba, ohne gesetzte Referenz – daher 46 Punkte und „ohne Referenz nicht bewertbar“).
| Block | Inhalt und Bedienung |
|---|---|
| Letzter Lauf | Urteil mit Text, Start (vor wie langer Zeit), Dauer, Version und Branch, Uhr des QS-Gates, Referenz (Link) und wer sie gesetzt hat. Knöpfe: Abweichungen prüfen, Befunde, Gesamt-Prüfauftrag (MD). |
| Lauf läuft | Nur während eines Laufs: Fortschritt in %, geschätzte Restzeit, alle Phasen als Balken (erledigt / aktuell / ausstehend), aktuelle Phase. Aktualisiert sich alle 15 Sekunden; nach Abschluss meldet das Cockpit „Lauf abgeschlossen.“ Wartet ein neuer Stand, steht in der Kopfzeile zusätzlich „wartet: <commit>“. |
| Freigabe-Entscheidung | GO / NO-GO / OFFEN, Qualitätspunkte, Kriterienliste – Klick auf ein Kriterium führt zur Ursache. Siehe Bewertung. |
| Kennzahlen | Offene Abweichungen (kritisch/hoch/instabil), Echte App-Fehler, Szenarien fehlerfrei, Schreibende und Lesende Endpunkte geprüft, Masken ohne Fehler – jede Kachel ist ein Link. |
| Abweichungen je Lauf · Befunde je Lauf | Gestapelte Balken je Lauf nach Schweregrad bzw. Kategorie; Klick auf einen Balken öffnet diesen Lauf. |
| Befunde je Lauf nach Ebene · Bearbeitung der Befunde | Trend nach Ebene; Stand der Befund-Bearbeitung nach Status und Verantwortlichen. |
| Modul-Matrix · Befunde nach Klasse | Fehleranteil je Bereich und Ebene (Zahl = Fehler, rote Zahl = Abweichungen); Klick auf eine Zelle filtert Befunde bzw. Abweichungen, Klick auf den Bereich öffnet den Bereichs-Steckbrief. Details in Module. |
| Größte Ursachen · Ursachen-Typen | Die sechs größten Ursachen-Gruppen und die Verteilung nach Typ; „Alle Ursachen →“. |
| Befunde nach Bereich · Abdeckung je Bereich · Lauf im Detail | Top 12 Bereiche, geprüfte Endpunkte je Bereich, Dauer der Phasen und Laufzeitklassen (Tooltip je Segment). |
Dann zeigt das Cockpit „Noch kein abgeschlossener Lauf.“ Der Prüfstand startet automatisch, sobald eine neue Version im QS-Gate läuft – oder oben „Lauf starten“.
Im Kundentermin zuerst die roten Muss-Kriterien zeigen; die Modul-Matrix ist der Einstieg je Fachbereich. Das Cockpit ist für alle Breiten von 1.280 bis 2.560 px und für das Handy ausgelegt – nichts wird rechts abgeschnitten; breite Tabellen scrollen in sich.
Adresse #/laeufe
Die Historie aller Läufe mit Urteil, Abweichungen, Befunden, Umfang und Dauer – und der Einstieg in jeden früheren Lauf.

| Spalte | Bedeutung |
|---|---|
| Auswahl | Häkchen für den Vergleich (nur fertige Läufe) |
| Start | Datum, Uhrzeit, vor wie langer Zeit |
| Urteil | grün / gelb / rot / ohne Referenz bzw. „läuft“, außerdem Schnelllauf (nicht freigaberelevant), Überholt und Abgebrochen; zusätzlich Referenz und ohne Reset, wenn der Lauf mit mehr Zeilen als der Golden-Record startete (nicht vergleichbar). Nur fertige volle Läufe lassen sich zum Vergleich ankreuzen. |
| Version | Kurz-Commit und Auslöser (z. B. „manuell (Name) · mit Reset“) |
| Abweichungen | Balken nach Schweregrad, Anzahl, kritische hervorgehoben; „keine“ bei grünem Lauf |
| Befunde · Schritte · Schreibend geprüft · Dauer | Kennzahlen je Lauf; alle Spalten sortierbar per Klick auf die Überschrift |
Darunter: Dauer je Lauf (Minuten) und Abdeckung je Lauf (schreibend, lesend, MCP-Tools in %).
Über allen Reitern von „Ausgewählter Lauf“ steht der Lauf-Kopf: Urteil, ggf. Referenz, Start, Dauer, Version, Auslöser, „Verglichen mit“ (Link zur Referenz) und die Freigabe-Plakette (GO / NO-GO / OFFEN mit Punkten, Link zum Prüfbericht). Knöpfe:
| Knopf | Wirkung |
|---|---|
| Prüfbericht | druckbarer Bericht des Laufs – Prüfbericht |
| Gesamt-Prüfauftrag (MD) | eine Datei mit allen Problemen des Laufs für einen KI-Coding-Agenten |
| Prüfauftrag in Paketen | öffnet die Schublade mit „Alle als ZIP“, Übersicht, Gesamtdatei und Download je Paket – siehe Prüfauftrag |
| Befunde ausführlich (MD) | alle Befunde und offenen Abweichungen, jede Prüfung mit Reproduktion |
| Protokoll PDF · Markdown | Lauf-Protokoll als PDF bzw. Markdown |
| Release Notes | Release Notes des Laufs als Markdown |
| Als Referenz übernehmen | nur für fertige Läufe, die nicht Referenz sind – Referenzwechsel |
Unter den Knöpfen erscheinen bei Bedarf zwei Zeilen:
Die Reiter des Laufs: Abweichungen, Befunde, Ursachen, Module, Szenarien, Prozesse, Dialoge, Abdeckung, Code, Endpunkte, Oberfläche, Datenbank, Prüfketten, Suche. Die Reiter außer Abweichungen brauchen den vollständigen Lauf-Index: Läuft der Lauf noch, steht dort „Der Lauf ist noch nicht abgeschlossen.“; bei Schnelllauf, überholtem oder abgebrochenem Lauf erklärt ein Hinweis, warum es keine Auswertung gibt.
Ein Lauf mit Kennzeichen „ohne Reset“ ist nicht vergleichbar – vor dem nächsten Lauf das QS-Gate zurücksetzen.
Adresse #/studio · Unterseiten #/studio/spielen, #/studio/aufnahme, #/studio/makro/<id>
Alle Prozesse, Varianten und Dialogfunktionen des Golden-Records als fertige Makros: abspielen (Schritt für Schritt, automatisch, bis zum Haltepunkt), je Schritt die Maske der Oberfläche mit dem Beleg öffnen, verändern und erweitern.

Prozesse werden für Demo, Schulung oder Fehleranalyse Schritt für Schritt nachvollziehbar, und Kundenprozesse werden ohne Programmierung zu dauerhaften Prüfszenarien.
Zähler: Prozesse, fertige Makros, davon exakt wiederholbar, eigene Makros, Adresse der Oberfläche. Knöpfe: Laufende Wiedergabe bzw. Letzte Wiedergabe, Aufnahme an der Oberfläche, Neues Makro.
Abspielen verändert Daten im QS-Gate (wie ein Anwender). Fertige Makros sind auf dem frischen Golden-Record aufgezeichnet und laufen dort exakt; nach anderen Wiedergaben können Abweichungen entstehen. Prüfläufe warten, bis die Wiedergabe beendet ist.
| Reiter | Inhalt | Filter |
|---|---|---|
| Prozesse | Jedes Szenario je Bereich: Titel, ID, Datei, abgedeckte Prozessvarianten, Schritte und Befunde im letzten Lauf, Makro mit Gegenprobe; ▶ abspielen (Schritt für Schritt / automatisch), </> zeigt den Quelltext (nur lesen). | Suche, Bereich, Zustand: wiederholbar · mit Abweichung · ohne Makro · mit Befund im letzten Lauf |
| Prozessvarianten | Kennzahlen (im Katalog, im Studio abspielbar, ohne Makro, fertige Makros) und je Variante Bereich, Prozess, fachliche Erwartung und Makro. | Suche, Bereich, abspielbar · kein Makro · nicht angeboten |
| Dialogfunktionen | Jede Backend-Aktion einer Maske mit Aufruf, Datei und Funktion; Knopf bis Schritt n spielt das passende Makro automatisch bis vor diese Funktion und hält dort an. | Suche, Pfad, abspielbar · kein Makro · dynamisch |
| Makros | Alle Makros mit Bereich, Schritten, Art (fertig eigen angepasst im Prüflauf) und Gegenprobe; ▶ abspielen, Stift = bearbeiten. | Suche, Bereich, fertig (Golden) · eigene · angepasst · wiederholbar · mit Abweichung · im Prüflauf |
Die ausführliche Anleitung mit allen Bildern steht im Kapitel Prozess-Studio: Anleitung.
Prozess-Studio und Makro-Editor zeigen Namen (Partner, Material, Konto …) statt technischer IDs. Ohne Zugriff auf die QS-Datenbank holt das Studio die Bezeichnungen über die App-API; erst wenn beides fehlt, erscheinen IDs.
Adresse #/lauf/<lauf>/abweichungen · Kürzel g a · Zahl im Menü = offene Abweichungen des letzten Laufs
Jede Änderung gegenüber der Referenz – nach Schweregrad, Ebene, Art und Bereich – mit Freigabe direkt in der Liste.

Unbeabsichtigte Seiteneffekte einer Änderung werden gefunden, bevor ein Anwender sie bemerkt. Nichts ändert sich mehr „still“ im System.
| Element | Wirkung |
|---|---|
| Kacheln Kritisch · Hoch · Mittel · Niedrig | Anzahl je Schweregrad, davon freigegeben |
| Suchfeld | „Prüfung, Pfad, Wert …“ – durchsucht Titel, Schlüssel, Modul und geänderte Werte |
| Alle Bereiche | auf einen Bereich einschränken |
| Chips Schweregrad | kritisch, hoch, mittel, niedrig (mehrere wählbar) |
| Chips Freigabe | offen, teilfreigabe, freigegeben, abgelehnt – Voreinstellung: offen + teilfreigabe |
| Chips Ebene · Art | z. B. Szenarien, API, Oberfläche … · neu, geändert, entfallen, neuer Fehler, behoben |
| instabile zeigen | blendet bekannte instabile Prüfungen ein (sonst ausgeblendet) |
| nach Bereich gruppieren | Liste nach Bereich gruppieren (Voreinstellung) oder flach anzeigen |
| CSV | Export aller Abweichungen des Laufs |
| Leiste unten | „alle sichtbaren“, Zähler „n ausgewählt“, Begründung (Pflicht), Freigeben, Ablehnen |
Spalten der Liste: Schweregrad (ggf. unangekündigt), Prüfung mit Ebene · Modul · Art, Änderung (bis zu zwei Felder alt → neu, „+ n weitere“), Freigabe (Status, bei vier Augen „x/2 Personen“).
„Keine Abweichungen gegenüber der Referenz.“ – oder, ohne Referenz: „Dieser Lauf hat keine Referenz.“ Dann Befunde prüfen und den Lauf als Referenz übernehmen.
Der Freigabe-Filter steht anfangs auf „offen“ und „teilfreigabe“, instabile sind ausgeblendet. Chips abwählen bzw. „instabile zeigen“ aktivieren.
Nein – für den Referenzwechsel zählen nur Abweichungen, die nicht „behoben“ und nicht instabil sind.
Adresse #/lauf/<lauf>/befunde · Kürzel g b · Zahl im Menü = Befunde des letzten Laufs
Alle fehlschlagenden Prüfungen des Laufs – nach Kategorie, Klasse, Ebene und Bereich, mit Bearbeitung (Status, Verantwortliche, Ticket) und Exporten.

Unterscheidet echte App-Fehler von fachlichen Ablehnungen und Golden-Daten-Themen – ein gemeinsames Fehlerbild für Fachbereich, Berater und Entwicklung.
| Element | Wirkung |
|---|---|
| Suchfeld | „Pfad, Meldung, Prüfung …“ |
| Alle Bereiche · Alle HTTP-Status | Einschränken auf Bereich bzw. Statuscode |
| Bearbeitung | alle · noch nicht bearbeitet · je Status (mit Anzahl) |
| Chips Kategorie | App-Fehler, Datenkonsistenz, Fachliche Erwartung, Fachlich abgewiesen, Buchungskreis-Kontext, Golden-Daten/Customizing – Golden-Daten/Customizing ist standardmäßig ausgeblendet (Hinweis mit Anzahl) |
| Chips Zuständig | App-Fehler · Entwicklung, Testdaten/Szenario · Prüfstand-Team, Customizing/Golden-Record · Berater, Fehlalarm-Verdacht · Prüfstand, Infrastruktur · Betrieb (je mit Anzahl, mehrere wählbar). Direkt verlinkbar über ?zustaendig=app (mehrere mit Komma, z. B. ?zustaendig=testdaten,customizing). |
| Chips Klasse · Ebene | siehe Befund-Klassen |
| Prüfauftrag (MD) | Befunde der aktuellen Auswahl (Bereich, Klasse, Ebene) als Prüfauftrag |
| CSV | alle Befunde mit Bereich, Ebene, Klasse, Methode, Pfad, Status, Meldung, Prüfung, Schlüssel |
| Leiste unten | „alle sichtbaren“, Status · Verantwortlich · Ticket · Notiz, Bearbeitung setzen, Ticket-Texte kopieren, Prüfauftrag (MD) für die Auswahl |

cefd1ba).Die Spalte Zuständig zeigt Klasse und Team; der Tooltip nennt die Begründung (z. B. „Keine Antwort vom QS-Gate (HTTP 0) – Dienst/Netz prüfen“) und bei instabilen Befunden den Verlauf. Die Suche findet auch Klasse und Team. Ticket-Texte und Prüfaufträge enthalten die Zuständigkeit.

Befunde mit Verantwortlichem und Ticket versehen – das gilt über alle folgenden Läufe. Im Cockpit zeigt „Bearbeitung der Befunde“ den Stand.
Adresse #/lauf/<lauf>/ursachen
Befunde mit derselben normalisierten Fehlermeldung werden zu Ursachen-Gruppen gebündelt: eine Ursache, viele Symptome. Eine Korrektur an der richtigen Stelle beseitigt oft dutzende Befunde auf einmal.

In Ursachen statt Einzelbefunden sprechen: Im Lauf vom 29.10.2026 waren es 265 Befunde in 202 Ursachen-Gruppen.
Adresse #/lauf/<lauf>/module · Bereichs-Steckbrief #/bereich/<Bereich>
Die Modul-Matrix über alle Bereiche und Ebenen sowie eine sortierbare Bereichstabelle – zeigt sofort, wo sich Probleme ballen.

Tabelle mit Prüfungen, Fehlern (Link zu Befunden), Fehleranteil, Abweichungen (Link, kritische hervorgehoben), Szenarien grün, Schritten und geprüften Endpunkten – sortierbar per Klick auf die Spaltenüberschrift.
Alles zu einem Bereich auf einer Seite: Kennzahlen (Prüfungen, Befunde, offene Abweichungen, Szenarien grün, Endpunkte geprüft, Tabellen verändert), Ebenen des Bereichs, Befunde je Lauf, Listen der Szenarien, Befunde, Endpunkte („nur ohne Prüfung“), Abweichungen sowie Tabellen und Prüfketten. Oben: Prüfauftrag (MD) für den Bereich und eine Auswahl, um zu einem anderen Bereich zu wechseln.
Für Fachbereichstermine den Steckbrief des eigenen Bereichs öffnen – er enthält alle Ebenen ohne Ablenkung.
Adresse #/lauf/<lauf>/szenarien · Detail …/szenarien/<id>
Rund 1.120 fachliche Szenarien – echte Abläufe vom Angebot bis zur Zahlung, über die API bis zum Endzustand.

Ein Szenario mit Befund im Prozess-Studio Schritt für Schritt abspielen – gemeinsam mit dem Kunden.
Adresse #/lauf/<lauf>/prozesse
Prozessvarianten je Bereich: Normal, Storno, Retoure, Korrektur, Ablehnung, Abschluss, Wiedereröffnung – und der Prozesskatalog mit fachlicher Erwartung je Variante.


Suchfeld „Prozess, Erwartung, Szenario …“, Bereich, Prozessart und Chips je Zustand: Befund · abgebrochen · nicht gelaufen · teilweise gelaufen · Lücke · grün · nicht angeboten · ausgenommen.
Wie Varianten entstehen und entschieden werden, beschreibt das Kapitel Prozesskatalog.
Gerade Sonderfälle wie Storno oder Retoure verursachen im Betrieb die meisten Fehler. Varianten mit dem Fachbereich durchgehen; fehlende im Prozess-Studio aufnehmen.
Adresse #/lauf/<lauf>/dialoge (Reiter „Dialoge“)
Jeder Knopf, jede Aktion einer Maske, die das Backend aufruft – Speichern, Export, Statuswechsel – und ob ein Test sie erreicht.

Jede Stelle im Frontend, an der eine Maske das Backend aufruft, ist eine Dialogfunktion. Geprüft ist sie, wenn ein Szenario-Schritt oder die Leseprüfung dieselbe Methode und Route aufruft; bei Varianten (feste Werte wie action: 'approve' oder Query-Parameter wie ?format=csv) muss der Aufruf diese Variante tragen. Tote Knöpfe – Aufrufe ohne Backend-Route – meldet die Prüfphase „Dialogfunktionen“ als Befund.
Fehlt das Inventar, erscheint „Kein Inventar der Dialogfunktionen für diesen Lauf“ – es entsteht beim Bau des Prüfstands aus dem Frontend-Quelltext.
Adresse #/lauf/<lauf>/abdeckung · Code-Abdeckung im Reiter „Code“ (…/code)
Was wird geprüft – und was bewusst nicht: Endpunkte, Laufzeitklassen, langsamste Aufrufe, begründete Ausnahmen und die Backend-Code-Abdeckung.

| Block | Inhalt |
|---|---|
| Kennzahlen | Endpunkte gesamt (lesend/schreibend), Lesend geprüft (direkt/in Szenarien), Schreibend durch Szenarien, MCP-Tools aufgerufen (nur lesende) |
| Endpunkte je Bereich | grün = durch eine Prüfung aufgerufen; Klick filtert |
| Laufzeitklassen · Langsamste Aufrufe | Verteilung der Laufzeiten; Aufrufe über 1 s (Klick öffnet die Beobachtung) |
| Begründet ausgenommen | Endpunkte, die bewusst nicht geprüft werden, mit Begründung (rules.json › coverageExclusions) |
| Endpunkte ohne Prüfung | Kandidaten für neue Szenarien; Filter „Pfad filtern …“ und Bereich; CSV-Export. Neue Endpunkte ohne Prüfung meldet der Prüfstand als Abweichung. |

Das QS-Gate misst während des ganzen Prüflaufs mit der V8-Abdeckung, welche Funktionen und Verzweigungen des Backends tatsächlich ausgeführt wurden – über alle Ebenen. Kennzahlen: Funktionen ausgeführt (mit Referenzwert), Verzweigungen, Dateien (ohne jede ausgeführte Funktion), Gegenüber Referenz. Filter: „Datei, Funktion …“, Bereich, „nur Dateien mit Lücken“; schwächste Bereiche stehen oben, Klick filtert.
Ungeprüfte Endpunkte als CSV an das Entwicklungsteam geben; Ausnahmen nur mit Begründung. Dateien, die gegenüber der Referenz nicht mehr erreicht werden, zuerst klären.
Adresse #/lauf/<lauf>/endpunkte · Kürzel g e
Jede Schnittstelle des Katalogs mit aufrufenden Szenarien, Aufrufen, Fehlern, Median-Laufzeit und HTTP-Status.

Vor jeder Schnittstellen-Diskussion den Endpunkt hier nachschlagen – wichtig für Integrationen mit Drittsystemen.
Adresse #/lauf/<lauf>/oberflaeche
Alle Masken aus Navigation und Routing: geöffnet, fotografiert und mit der Referenz verglichen – Text, Konsolen- und Serverfehler, Pixelvergleich.


Abweichende Masken sind oft gewollt – vor der Freigabe Text und Bild vergleichen; gewollte Layoutänderungen gezielt freigeben, unklare mit der Entwicklung klären.
Adresse #/lauf/<lauf>/datenbank
Was ein Prüflauf in der Datenbank verändert – je Bereich und Tabelle – und der Abgleich zwischen Backend-Code und Datenbankschema.

Änderungen in Tabellen, die kein Szenario berührt, deuten auf Seiteneffekte hin. Die Befehlspalette findet Tabellen direkt.
Adresse #/lauf/<lauf>/ketten (Reiter „Prüfketten“)
Fachliche Regeln über die gesamte Datenbank: In-App-Prüfketten, Kennzahlen (Summen-/Saldenliste, Soll = Haben, offene Posten, Steuern, Bestand) und Konsistenzregeln.

Bei verletzter Regel die auslösende Szenario-Datei öffnen – dort liegt der Verursacher. Kennzahlen und neue Konsistenzverletzungen sind Muss-Kriterien.
Adresse #/lauf/<lauf>/suche?q=…
Volltextsuche über alle rund 45.000 Beobachtungen eines Laufs – nach Schlüssel, Titel, Modul oder Fehlermeldung.
Aus jeder Seite erreichbar: Befehlspalette (Strg+K), Begriff tippen, „„…“ in allen Beobachtungen suchen“.
Diese Ansicht ist ohne Bildschirmfoto aus dem Code beschrieben.
Adresse #/verlauf · Kürzel g v
Jeder Befund mit Status und Verlauf über die letzten Läufe: neu, weiterhin offen, behoben.

Für Statusberichte: neu, offen und behoben je Lauf direkt hier ablesen – zeigt, ob Korrekturen wirken.
Adresse #/stabilitaet · Kürzel g s
Prüfungen, deren Ergebnis zwischen Läufen wechselt – mit und ohne neue Version. Wechselt ein Ergebnis ohne neue Version, ist die Prüfung (oder die App) instabil.

rules.json).Instabile Prüfungen nicht als App-Fehler melden – erst Zeit- oder Nebenläufigkeitsursache klären; dann begründet in rules.json aufnehmen oder beheben.
Adresse #/leistung · Kürzel g l
Antwortzeiten über die Läufe: Perzentile, Summen je Ebene, Regressionen, Verbesserungen und die langsamsten Aufrufe. Eine Version kann fachlich korrekt, aber spürbar langsamer sein.

Gemessen wird jeder Aufruf der lesenden Prüfung, der MCP-Tools und jeder Szenario-Schritt. Regression = mindestens doppelt so langsam wie der Median der Vorläufe und ≥ 200 ms.
Die langsamsten Aufrufe als Liste für das Performance-Gespräch nutzen. Langsame Aufrufe über 4 s fließen in die Bewertung ein.
Adresse #/vergleich?a=<vorher>&b=<nachher>
Freier Vergleich ohne Bewertung – beliebige zwei Läufe, z. B. zwei Versionen nebeneinander, unabhängig von der Referenz.

Für die Kundenfrage „Was ist seit letzter Woche anders?“ die beiden Läufe direkt vergleichen. Freigaben entstehen hier nicht.
Adresse #/kette
Jeder Lauf, jede Freigabe und jeder Referenzwechsel – verkettet über SHA-256. Nachträgliche Änderungen an Prüfergebnissen oder Freigaben würden die Kette brechen.

Für Audits den Status „intakt“ zusammen mit dem Prüfbericht vorlegen.
Oberster Block der Einstellungen: optionale Prüfebenen des vollen Laufs. Barrierefreiheit prüfen (axe-core nach WCAG 2.1 AA und Mobilansicht 390 px der wichtigsten Masken, ca. 6–8 Minuten zusätzlich) ist standardmäßig ausgeschaltet. Häkchen setzen und „Prüfumfang speichern“ – gilt ab dem nächsten Lauf; angezeigt wird, wer wann geändert hat. Gespeichert im Prüfstand unter DATA_DIR/pruefumfang.json.
Adresse #/einstellungen
KI-Unterstützung für den Aufnahme-Assistenten im Prozess-Studio und die KI-Zweitprüfung Rechnungswesen im Prüflauf.
Mit einem eigenen API-Schlüssel plant der Assistent Aufnahmen aus einer Beschreibung (Startmaske, Schritte, Testdaten, passende Prozessvarianten) und bereitet aufgenommene Abläufe zu lesbaren, prüfenden Makros auf (Schrittnamen, fachliche Prüfungen). Ohne Schlüssel arbeitet der Assistent regelbasiert aus dem Prozesskatalog.
Der Schlüssel wird verschlüsselt auf dem Prüfstand gespeichert und nie an die Oberfläche zurückgegeben; angezeigt wird nur, dass einer hinterlegt ist, wann und von wem er zuletzt geändert wurde. Alternativ liest der Prüfstand OPENAI_API_KEY bzw. ANTHROPIC_API_KEY aus der Umgebung.
Steuert die Phase KI-Zweitprüfung im Prüflauf. Oben steht, ob sie ausgeführt wird („wird ausgeführt“ bzw. „wird nicht ausgeführt (kein Schlüssel)“).
| Feld | Bedeutung | Vorgabe · Grenzen |
|---|---|---|
| KI-Stichproben | automatisch (an, sobald ein Schlüssel hinterlegt ist) · an · aus | automatisch |
| Umfang | Stichprobe oder vollständige Prüfung (alle Belege des Laufs) | Stichprobe |
| Belege je Lauf (Stichprobe) | Anzahl der bewerteten Belege | 40 · 1–5.000 |
| max. Tokens je Lauf | Budget für alle Anfragen eines Laufs | 200.000 · 1.000–20 Mio. |
| max. Tokens je Anfrage | Antwortlänge je Beleg | 1.500 · 200–32.000 |
| max. Kosten je Lauf (EUR) | optionale Kostengrenze; leer = keine Grenze | keine |
| Preis Eingabe / Ausgabe | EUR je 1 Mio. Tokens, für die Kostenschätzung | 3 / 15 |
„Prüfungseinstellungen speichern“ übernimmt die Werte. Ein leeres Feld bedeutet: Umgebungsvariable bzw. Vorgabe. Einstellungen im Cockpit haben Vorrang vor QSGATE_KI_MAX, QSGATE_KI_MAX_TOKENS_LAUF, QSGATE_KI_MAX_TOKENS_ANFRAGE und QSGATE_KI_MAX_KOSTEN. Ist ein Budget erreicht, endet die Phase sauber mit „Budget erreicht nach n von m Belegen“.
Diese Ansicht ist ohne Bildschirmfoto aus dem Code beschrieben.
Prüfauftrag, Prozess-Studio und Prüfbericht Schritt für Schritt
Ein Export – alle Probleme, priorisiert und reproduzierbar. Ein KI-Coding-Agent oder Entwickler kann die Fehler ohne Rückfragen nachstellen und beheben.

$TOKEN).| Export | Wo | Inhalt |
|---|---|---|
| Gesamt-Prüfauftrag (MD) | Cockpit, Lauf-Kopf, Befehlspalette | alle Probleme des Laufs: Befunde nach Ursache, Abweichungen, Prozesslücken, Konsistenz, Schema-Lücken im Code, Leistung – eine Datei (bleibt verfügbar) |
| Prüfauftrag in Paketen (ZIP / MD) | Lauf-Kopf › „Prüfauftrag in Paketen“ | derselbe Inhalt in handlichen Paketen mit Priorität, Zuständigkeit und empfohlener Reihenfolge – siehe unten |
| Befunde ausführlich (MD) | Lauf-Kopf | alle Befunde und offenen Abweichungen, jede Prüfung mit Reproduktion |
| Prüfauftrag (MD) einer Auswahl | Befunde (Filterzeile bzw. Sammelleiste) | Befunde der aktuellen Auswahl (Bereich, Klasse, Ebene) bzw. der markierten Befunde |
| Prüfauftrag (MD) einer Ursache | Ursachen, je Gruppe | nur die Befunde dieser Ursachen-Gruppe |
| Prüfauftrag (MD) eines Befunds | Schublade eines Befunds / einer Abweichung | genau diese Prüfung |
| Prüfauftrag (MD) eines Bereichs | Bereichs-Steckbrief | Befunde und offene Abweichungen des Bereichs |
| Auftrag (MD) Schema-Abgleich | Datenbank | fehlende Tabellen und Spalten mit Fundstellen im Backend |
Jeder Befund trägt im Prüfauftrag eine Zeile bzw. Spalte Zuständig (Klasse und Team, siehe Befund-Klassen).
Der Gesamt-Prüfauftrag eines großen Laufs ist zu lang für einen Coding-Agenten (cefd1ba: eine Datei mit 149.956 Zeilen). Die Schaltfläche Prüfauftrag in Paketen im Lauf-Kopf teilt ihn in Arbeitspakete – im Beispiel 68 Pakete (74 Dateien inkl. Teile; 17 kritisch, 25 hoch, 26 mittel).

cefd1ba).| Paketart | Bildung |
|---|---|
| Befunde einer Ursache | Ursachen-Gruppen mit mindestens 3 Befunden bekommen ein eigenes Paket |
| Einzelbefunde | kleinere Gruppen gebündelt nach Zuständigkeit und Bereich |
| Abweichungen | je Modul, verdichtet nach Änderungsmuster |
| Prozessvarianten | je Bereich die Varianten mit Befund oder Lücke |
| Schema-Abgleich · Prüflücken | fehlende Tabellen/Spalten im Code; ungeprüfte Endpunkte und Dialogfunktionen |
?max= 400–5.000).try-scenario), Akzeptanzkriterium „Befund verschwindet im nächsten Lauf“ und am Ende die Schlüssel zur Nachprüfung.00-uebersicht.md: alle Pakete in empfohlener Reihenfolge und eine Tabelle nach Zuständigkeit. „Alle als ZIP“ enthält Übersicht und alle Pakete.main (nie direkt in qsgate), mit Test; das Szenario wird lokal grün gespielt.main → qsgate; der Prüfstand bestätigt „behoben“ und meldet neue Befunde.In fünf Läufen vom 27. bis 29.10.2026 sanken die Befunde von 489 auf 265 (−46 %). Bearbeitet wird je Ursache, nicht je Einzelbefund.
Pakete nach Zuständigkeit verteilen: App-Fehler an die Entwicklung (bzw. je Paket an einen Coding-Agenten), Testdaten/Szenario an das Prüfstand-Team, Customizing an die Berater. Ob eine Korrektur wirkt, zeigt vorab ein Schnelllauf; bestätigt wird sie im nächsten vollen Lauf.
Ein Makro ist ein Geschäftsprozess als JSON – keine Programmierung: eine Folge von Schritten, die jeweils einen Aufruf der App abbilden. Zu jedem Prozess des Golden-Records gibt es ein fertiges Makro, aufgezeichnet auf dem frischen Golden-Record und per Gegenprobe auf Wiederholbarkeit geprüft.

| Name · Methode · Pfad | z. B. „Auftrag anlegen“, POST /api/sales |
| Eingaben | wie in der Maske, mit Platzhaltern |
| Werte merken | s5n = body.order.id – später als {{s5n}} verwendbar (im Schritt 5 neu angelegter Beleg) |
| Prüfungen | Pfad (body.…), Vergleich (HTTP-Status =, =, ≠, >, <, vorhanden, enthält), Wert, Bezeichnung |
| Optionen | Erfolg erwartet (aus = fachliche Ablehnung erwartet), Pflichtschritt (Fehler bricht ab), als anderer Benutzer (Tenant, E-Mail) |
| Platzhalter | {{today}}, {{today+7}}, {{ref}}; Passwörter nur als {{password}} |
Fertiges Makro anpassen · abgespielten Prozess „Als Makro speichern“ · an der Oberfläche aufnehmen · aus Dialogfunktionen bauen („Schritt aus einer Maske (Dialogfunktion)“ bzw. „Leerer Schritt“ im Editor).

{{…}}) bleiben verknüpft.

.mjs für das Repository.vk-teillieferung), Titel, Bereich, Beschreibung.Fertige Makros sind schreibgeschützt: Wer speichert, erzeugt eine eigene Kopie. „Kopie verwerfen“ stellt das Original her.

/sales) eintragen; „Oberfläche hier eingebettet zeigen (sofort angemeldet)“ ist voreingestellt. „Neue Aufnahme starten“.

{{s5n}}) und verknüpft, Passwörter zu {{password}}; danach öffnet der Editor.Makro abspielen, dann „Per Aufnahme erweitern“ bzw. auf der Aufnahme-Seite „An „…“ anschließen“: Der abgespielte Ablauf wird vorangestellt, neue Belege werden über beide Teile verknüpft.

Haltepunkte während der laufenden Wiedergabe setzen und „Bis Haltepunkt“ funktionieren ab dem nächsten Stand des QS-Gates (nach dem nächsten Deploy des Prüfstands).
| Tipp / Meldung | Bedeutung und Abhilfe |
|---|---|
| Auf frischem Stand arbeiten | Fertige Makros laufen auf dem frisch zurückgesetzten Golden-Record exakt; nach anderen Wiedergaben können Abweichungen entstehen. |
| Sprechende IDs und Titel | ID nur Kleinbuchstaben, Ziffern, Bindestrich – sie wird Dateiname der Szenario-Datei. |
| Prüfungen fachlich formulieren | Neben dem HTTP-Status mindestens eine fachliche Prüfung je wichtigem Schritt (Status, Betrag, Folgebeleg). |
| Ablehnungen bewusst testen | „Erfolg erwartet“ ausschalten, wenn die App fachlich ablehnen soll (z. B. ohne Recht als qs-lesen). |
| „Platzhalter {{x}} ist nicht belegt“ | Ein früherer Schritt merkt den Wert nicht (mehr) – „Werte merken“ prüfen oder Reihenfolge korrigieren. |
| „Anfrage-Inhalt ist kein gültiges JSON“ | Im Reiter Technik Klammern/Anführungszeichen prüfen – oder im Reiter Dialog ändern. |
| „Ein Prüflauf läuft — bitte danach aufnehmen“ | Aufnahme und Senden sind während eines Laufs gesperrt; Lauf abwarten. |
| „Zum Anschließen zuerst einen Prozess vollständig abspielen“ | Erweitern setzt eine beendete Wiedergabe voraus. |
| „Makro … gibt es schon“ | Überschreiben bestätigen oder eine neue ID wählen. |
| Anmeldung wartet beim Start | Das QS-Gate begrenzt Anmeldungen je 15 Minuten – kurz warten, nicht mehrfach klicken. |
Adresse #/bericht/<lauf> · erreichbar über „Prüfbericht“ im Lauf-Kopf, die GO/NO-GO-Plakette oder die Befehlspalette
Das Ergebnis eines Laufs als Dokument – für Abnahme, Lenkungskreis und Ablage beim Kunden.

„Drucken / als PDF speichern“ öffnet den Druckdialog des Browsers; dort „Als PDF speichern“ wählen. „← zum Lauf“ führt zurück. Zusätzlich im Lauf-Kopf: Protokoll PDF, Markdown und Release Notes.
Nach jeder Freigabe den Bericht als PDF beim Kunden ablegen – zusammen mit dem Status der Protokollkette.
Fachprüfung Rechnungswesen, Sonderfälle und Ketten, Prozesskatalog, neue Prüfdimensionen
Stimmt die Buchhaltung fachlich – nicht nur technisch? Die Fachprüfung prüft jeden Prüfbeleg Zeile für Zeile gegen einen Buchungssatz-Katalog, stimmt den Abschluss ab und lässt optional eine KI als Zweitprüfer drüberschauen.
Szenarien 97f: jeder Geschäftsvorfall gegen den Katalog – Konten, Seiten, Beträge, Steuer.
Szenarien 97g: Saldenliste, Bilanz, GuV, Saldovortrag, Nebenbücher, UStVA, Periodensperre.
9 Buchungsregeln über alle Belege der Datenbank.
Stichprobe der Belege durch eine KI – nur Hinweise, nicht freigaberelevant.
config/buchungssaetze.json: 29 Geschäftsvorfälle mit 86 erwarteten Buchungszeilen und 9 Steuerschlüsseln (je mit UStVA-Kennzahl und Norm). Zeilen können $variablen, Kontoalternativen und optionale Zeilen enthalten.cefd1ba sind ausdrücklich geprüft: B99s-5 (Stichtagssaldo nach Saldovortrag), B99s-6 (Jahresabschluss bei Ergebnis ≠ 0), B99s-7 (AfA-Lauf / AfA auf Finanzanlage).| Regel | Erfüllt, wenn … |
|---|---|
| fp-rechnung-partnerzeile | die Partnerzeile einer Rechnung auf der richtigen Kontoart (Debitor/Kreditor) steht |
| fp-abstimmkonto-kontenfindung | das Abstimmkonto der Kontenfindung entspricht |
| fp-reverse-charge-spiegel | bei Reverse Charge Vorsteuer und Umsatzsteuer gespiegelt sind und Basis × Satz ergeben |
| fp-skonto-steuerkorrektur | ein Skonto die Steuer anteilig korrigiert |
| fp-erfolgskonto-nach-abschluss | nach einem Jahresabschluss keine Erfolgsbuchung mehr in das abgeschlossene Jahr fällt |
| fp-storno-ohne-rest | ein Storno den Originalbeleg ohne Restbetrag aufhebt |
| fp-ic-verrechnung-seite | Intercompany-Verrechnungen auf der richtigen Seite stehen |
| fp-warenbewegung-eigenkapital | keine Warenbewegung auf ein Eigenkapitalkonto bucht |
| fp-afa-finanzanlage | keine AfA auf Finanzanlagen gebucht wird |
Die neuen Szenarien und Regeln decken bestehende Fehler auf. Rote fp-Befunde im ersten Lauf nach der Einführung sind erwartet – sie gehören als App-Fehler in den Prüfauftrag, nicht in eine Ausnahme.

Storno, Retoure, Abschluss und modulübergreifende Ketten verursachen im Betrieb die meisten Fehler. Eigene Szenarien prüfen sie mit Abstimmregeln bis ins Hauptbuch.
| Datei | Inhalt | IDs |
|---|---|---|
| 99a–99d | Sonderfälle je Kernprozess: Vertrieb/Einkauf, FI/CO, Branchen, Personal/Projekte (Storno, Korrektur, Retoure, Ablehnung, Abschluss, Wiedereröffnung) | sf-… |
| 99k | Prozessketten: Order-to-Cash komplett, Procure-to-Pay mit Preisabweichung (3-Wege-Match), Intercompany zwischen Buchungskreisen (Header X-Active-Company-Code), Monats-/Jahresabschluss, Bestand ↔ FI | ke-… |
inventory/sonderfall-matrix.md./api/fi/balance-sheet liest den Stichtag aus year/month.Der Prozesskatalog scenarios/prozesskatalog.json listet jede fachliche Prozessvariante mit Erwartung und den Szenarien, die sie prüfen. Er ist die Messlatte für das Kriterium „Alle Prozessvarianten des Katalogs geprüft“.
| Status | Bedeutung | Stand 30.10. |
|---|---|---|
| abgedeckt | mindestens ein Szenario prüft die Variante; Zustand im Lauf grün, Befund, abgebrochen, nicht gelaufen | 7.779 |
| Lücke | kein Szenario und keine Entscheidung – nach vier Lückenrunden keine mehr offen | 0 |
| nicht angeboten | die App bietet die Variante nicht an: Produktentscheidung offen bzw. Umsetzung geplant (davon 180 aus dem SAP-Abgleich, inventory/sap-abgleich.json, inventory/sap-abgleich-ergaenzung.json, inventory/sap-umsetzungspakete.md; sie werden abgedeckt, sobald die Umsetzung mit ihrem Szenario 96s-sap-* auf dem Prüfstand ist) | 198 |
| ausgenommen | bewusst nicht Gegenstand der Prozessprüfung; Pflichtbegründung ≥ 15 Zeichen (sonst Lücke); zählt nicht in Prüfmenge und Quote | 881 |
| gesamt | Varianten im Katalog | 8.858 |
inventory/kataloge/ (je Bereich Prozesse, Varianten, Erwartungen).scenarios/code-zuordnung/katalog-*.json: katalog-entscheidungen.json (Status, Begründung, ausdrückliche Szenario-Zuordnung – auch für dynamisch erzeugte Szenario-IDs), katalog-sonderfall.json, katalog-sap.json.node scripts/build-process-catalog.mjs --stand <JJJJ-MM-TT> inventory/kataloge/*.md; Optionen --out <datei> (Vorgabe scenarios/prozesskatalog.json) und --ohne-entscheidungen.--vergleich <datei> schreibt das Skript nichts, sondern vergleicht mit dem vorhandenen Katalog – erwartet sind 0 Abweichungen (sonst Exit 1).Die Dateien 98a–98m (IDs lk-… bis lk4-…, Lückenrunden 1–4; Feld runde in katalog-entscheidungen.json) schließen Katalog-Lücken bereichsweise (FI, CRM/Personal/Handel, Plattform, Marktplatz/Treasury, CCM/NGO/Filiale, FI/HR/Einkauf, Abweisungen, Plattform-Module, FSV/Ausgabe, Lohn/GaLaBau/NGO, Rest). 98k prüft die Vorbedingungen der Klasse-c-Ausnahmen (Vier-Augen nur als Plattformvorlage, Zeitablauf ohne Stichtag): wird es rot, ist die Ausnahme neu zu entscheiden. Grundsätze: Vier-Augen nur mit echtem zweitem Benutzer, Zeitablauf nur über Stichtag oder Job der App; Customizing, das ein Szenario vorübergehend umschaltet, wird in finally zurückgesetzt. Entscheidungsarten je Lücke: neues Szenario, Zuordnung korrigiert (ein vorhandenes Szenario erreicht den Zustand nachweislich), Szenario mit Befund (bleibt rot bis zur App-Korrektur), ausgenommen, nicht angeboten. Szenarien mit dynamisch erzeugter ID werden über katalog-entscheidungen.json den Varianten zugeordnet.
Die Szenarien 96s-sap-p0…p7-* (IDs sap-p…) weisen die SAP-Umsetzung je Paket nach; ihre Zuordnung steht in inventory/sap-zuordnung-*.json.
Reiter Prozesse: Kachel und Filter „ausgenommen“ mit Begründung; Lücken und nicht gelaufene Varianten stehen im Prüfauftrag (Paket „Prozessvarianten“ je Bereich).
Vier Ebenen erweitern den Lauf über die Fachlichkeit hinaus. Alle arbeiten nur gegen die QS-Instanz, legen eigene Wegwerf-Objekte an (Kürzel ZZ-SI, QSLT …) und verändern keine Golden-Daten.
Alle vier Dimensionen sind eingebaut und laufen im vollen Lauf mit (im Schnelllauf aus). Zusammen verlängern sie den Lauf um etwa 10 Minuten. Die Kriterien aus rules.json › kriterien fließen in die Freigabe-Entscheidung ein; ein Kriterium entfällt, wenn seine Ebene nicht gelaufen ist.
| Phase / Szenario | Position im Lauf | Was geprüft wird | Abschalten / Umfang |
|---|---|---|---|
| Barrierefreiheit | nach Oberfläche | Top-30-Masken mit axe-core (WCAG 2.1 AA); Mobilansicht 390 px: waagrechtes Scrollen, abgeschnittene Bedienelemente, Touch-Ziele < 24 px (Beobachtung). Befunde mit Schlüssel barrierefrei:axe:* / barrierefrei:mobil:*. | Standard aus – einschalten unter Einstellungen › Prüfumfang; QSGATE_A11Y=off schaltet hart ab, QSGATE_A11Y_MASKEN |
| KI-Zweitprüfung | nach Szenarien | siehe Fachprüfung Rechnungswesen; Schlüssel ki-hinweis:* sind flüchtig (nicht freigabe- und nicht vergleichsrelevant). | Einstellungen › KI |
| Sicherheit | nach Fehleingaben | Mandantentrennung lesen/ändern/löschen (eigene ZZ-SI-Objekte, fremder Mandant „Nordlicht“) plus Stichprobe von 30 Objekt-Endpunkten; Buchungskreistrennung; SQL-Injection-Muster, gespeichertes XSS (Ausführung im Browser geprüft), Path Traversal, übergroße Nutzlast, Mass Assignment; manipulierte JWT, Sperre nach Abmeldung, schreibende Routen ohne Token. Schlüssel sicherheit:*. | QSGATE_SICHERHEIT=off, QSGATE_SICHERHEIT_UI=off, QSGATE_SICHERHEIT_STICHPROBE, QSGATE_SICHERHEIT_OHNEAUTH |
| Nebenläufigkeit (erweitert) | wie bisher | neu: gleichzeitige Materialentnahmen über Bestand, doppelter Zahlungsausgleich; Warenausgang über Bestand erwartet jetzt die Negativbestand-Sperre (höchstens ein Ausgang angenommen, Bestand nie negativ). | — |
| Last | nach Nebenläufigkeit | 8 virtuelle Benutzer in 6 Rollen auf typischen Lese-/Schreibpfaden; Befund bei 5xx, doppelten Nummern, unvollständig gebuchten Rechnungen oder p95 über Schwelle (Lesen 2 s, Schreiben 5 s). Perzentile nur als Info, verglichen wird „Schwelle eingehalten“. Schlüssel last:*. | QSGATE_LAST=off, QSGATE_LAST_VU, QSGATE_LAST_ITER, QSGATE_LAST_P95_LESEN_MS, QSGATE_LAST_P95_SCHREIBEN_MS |
| Datenmigration (Szenario 97m, dm-*) | Szenarien | Stammdatenimport, Eröffnungsbilanz mit Abstimmung der Saldenliste, Cutover-Anfangsbestände (nicht doppelt, Storno zurück auf Ausgangsstand), MCP-Import; Fehlerprotokoll bei kaputten Zeilen, Wiederholbarkeit. | — |
| Kriterium | Art | Gewicht |
|---|---|---|
| Keine Mandanten-/Buchungskreis-Durchgriffe | Muss | 10 |
| Keine kritischen Sicherheitsbefunde | Soll | 10 |
| Last: Datenintegrität (keine Dubletten, keine Halbbuchungen, kein 5xx) | Soll | 5 |
| Last: Antwortzeiten unter Schwelle | Soll | 2 |
| Keine kritischen Barrierefreiheitsverstöße | Soll | 5 |
| Mobilansicht ohne Mängel | Soll | 2 |
| Datenmigration (dm-*) fehlerfrei | Soll | 5 |
Im Cockpit erscheinen die Befunde mit den Klassen „Sicherheit“, „Last“ und „Barrierefreiheit“. Erste Ergebnisse (lokal): Sicherheit 219 Prüfungen ohne Befund, Last ohne Befund; Barrierefreiheit u. a. Kontrast des roten Zähler-Badges, Icon-Schaltflächen ohne Beschriftung, Filter-Auswahlfelder ohne Label.
QSGATE_LAST_VU (1–20), QSGATE_LAST_ITER; Schwellen QSGATE_LAST_P95_LESEN_MS, QSGATE_LAST_P95_SCHREIBEN_MS; aus mit QSGATE_LAST=off.QSGATE_SICHERHEIT_STICHPROBE, Vorgabe 30).tenant_id, isAdmin).QSGATE_SICHERHEIT_OHNEAUTH, Vorgabe 150). Aus mit QSGATE_SICHERHEIT=off.QSGATE_A11Y_MASKEN) mit axe-core nach WCAG 2.0/2.1 A+AA bei 1.440 px: Verstöße „critical“/„serious“ sind Befunde, „moderate“/„minor“ nur Information.QSGATE_A11Y=off schaltet unabhängig von der Einstellung ab. Ist die Ebene aus, entfallen auch ihre Kriterien in der Bewertung.Szenarien 97m (IDs dm-…): Stammdaten-Import mit Abgleich von Anzahl und Summen gegen die Datei, Fehlerprotokoll mit richtiger Zeilennummer und idempotenter Wiederholung; Eröffnungsbilanz mit Abstimmung der Saldenliste und Storno; Cutover-Anfangsbestände; Import über den KI-Assistenten (MCP).
rules.json › kriterien)| Kriterium | Gewicht | Quelle |
|---|---|---|
| Keine Mandanten- oder Buchungskreis-Durchgriffe (lesen, ändern, löschen) | 10 | Sicherheit |
| Keine kritischen Sicherheitsbefunde (Injection, XSS-Ausführung, Token, Abmeldung, Aktionen ohne Anmeldung) | 10 | Sicherheit |
| Unter Last kein Serverfehler, keine doppelte Nummer, keine unvollständige Buchung | 5 | Last |
| Antwortzeiten unter Last im Rahmen (p95 Lesen ≤ 2 s, Schreiben ≤ 5 s) | 2 | Last |
| Keine kritischen Barrierefreiheitsverstöße in den Kernmasken | 5 | Barrierefreiheit |
| Kernmasken in der Mobilansicht ohne waagrechtes Scrollen und abgeschnittene Bedienelemente | 2 | Barrierefreiheit |
| Datenmigration plausibel, abgestimmt und wiederholbar | 5 | Szenarien dm-… |
Ist eine Ebene nicht gelaufen oder abgeschaltet, entfällt ihr Kriterium (wie bei Rechten und Nebenläufigkeit).
Schnittstelle, Dienste, Golden-Record, Rollen
/api/v2Alles, was das Cockpit zeigt, liefert die JSON-Schnittstelle /api/v2 – für Coding-KI, Automatisierung und eigene Auswertungen.
Authorization: Bearer <Zugangspasswort des Prüfstands>. Das Passwort erhalten Sie vom QS-Team; es gehört nie in Code, Tickets oder Unterlagen.{"error":"nicht angemeldet"}. Über die Schnittstelle gesetzte Freigaben tragen den Namen „API“.| Aufruf | Liefert / bewirkt |
|---|---|
GET /meta | angemeldeter Name, Reset-Methode, Ebenen |
GET /overview | Daten des Cockpits: letzter Lauf, laufender Lauf, Trend, Referenz, Freigabe-Entscheidung |
GET /runs · GET /runs/:id | alle Läufe · ein Lauf mit Index, Abweichungen, Freigabe-Entscheidung |
GET /runs/:id/… | endpoints, area?name=, dialogs, code-coverage, processes, causes, obs?key=, search?q=&layer=&status=, scenario/:sid |
GET /history · /stability · /performance · /key-history?key= | Befund-Verlauf, Stabilität, Leistung, Verlauf einer Prüfung |
GET /compare?a=&b= | freier Vergleich zweier Läufe |
GET /compare/seite?a=&b=&offset=&limit=&kind=&layer=&area=&q= | Vergleich seitenweise mit Filtern über alle Treffer; Ergebnis je Laufpaar zwischengespeichert |
GET /chain | Protokollkette mit Prüfergebnis |
GET/POST /triage | Befund-Bearbeitung lesen / setzen |
POST /runs/:id/approve | Abweichungen freigeben/ablehnen: ids, reason (Pflicht), decision |
POST /runs/:id/baseline | Lauf als Referenz übernehmen (nur ohne offene Abweichungen), reason |
POST /runs/:id/nur-testaenderung | reine Testerweiterung festhalten: reason, nachweis – abgelehnt, wenn sich die App-Quellen unterscheiden |
POST /runs/:id/eine-freigabe | Anordnung des Inhabers „eine Freigabe genügt“: reason, angeordnetVon |
POST /start | Lauf starten (mit Reset, sofern eingerichtet; reset: false ohne). Mit {"modus":"schnell", "dateien":[…], "basis":"<commit>"} ein Schnelllauf – Antwort ok, wartet, freigaberelevant: false |
GET /runs/:id/export/pruefauftrag.md | Prüfauftrag; Parameter gesamt=1, key= (mehrfach), bereich=, klasse=, ebene=, befunde=0, abweichungen=0 |
GET /runs/:id/export/pakete | Prüfauftrag in Paketen: Übersicht als JSON (ohne Inhalt) – Kennung, Titel, Priorität mit Grund, Zuständigkeit, Zeilen, Teile |
GET /runs/:id/export/pakete.zip | alle Pakete und 00-uebersicht.md als ZIP |
GET /runs/:id/export/pakete/<datei> | ein Paket als Markdown, z. B. 00-uebersicht.md; Parameter ?max= (Zeilen je Datei, 400–5.000, Vorgabe 1.500) |
GET /runs/:id/export/schema-abgleich.md | Schema-Abgleich Code ↔ Datenbank |
GET /runs/:id/export/befunde.csv · abweichungen.csv · abdeckung.csv | CSV-Exporte |
/studio/… | Prozess-Studio: Prozesse, Makros (lesen, speichern, löschen, export.mjs), Wiedergabe (play, control, session), Aufnahme, Assistent, KI-Einstellungen (/studio/ki, Block pruefung für die KI-Zweitprüfung) |
curl -H "Authorization: Bearer $QS_PASSWORT" https://<prüfstand>/api/v2/overview – das Passwort nur aus einer Umgebungsvariablen lesen.
Außerhalb von /api/v2: /gesund (Erreichbarkeit, ohne Anmeldung; mit laeuft und wartet), /api/status (laufender Lauf, Warteschlange mit wartendem Stand, geplantem Start und Deploy-Modus), /lauf/:id/protokoll.pdf|.md|.json, /lauf/:id/release-notes.md, /klassisch (klassische Ansicht).
qsgate)Docker-Dienst. Beim Start: eigene PostgreSQL im Container, Reset auf den Golden-Record, Uhr eingefroren, dann App-Start.
Static Site – die echte Oberfläche, vom Prüfstand für Masken, Klickpfade und das Prozess-Studio genutzt.
Docker-Dienst mit Disk /data. Erkennt neue Versionen, führt den Lauf in eigenem Thread aus; das Cockpit bleibt bedienbar.
QSGATE_MAX_RPM) und 14 Anmeldungen je 15 Minuten (QSGATE_MAX_AUTH_15MIN); im QS-Testsystem sind beide angehoben (4.500 bzw. 450), passend zu den angehobenen Limits der QS-API.| Variable | Wirkung |
|---|---|
QSGATE_PARALLEL · QSGATE_PARALLEL_CONFIG | Grad der parallelen Szenario-Phase (Vorgabe 3, 1 = nacheinander) · anderer Pfad für config/parallel.json |
QSGATE_DEPLOY_MODUS · QSGATE_BRANCH | auto (Vorgabe) oder fenster · beobachteter Zweig im Modus „fenster“ (Vorgabe qsgate) |
QSGATE_UEBERHOLT_FRIST_S | Frist, bis ein überholter Lauf hart beendet wird (900 s) |
QSGATE_MODUS · QSGATE_SCHNELL_DATEIEN · QSGATE_GIT_DIR | Kommandozeile: schnell · geänderte Dateien (Komma) · Verzeichnis für git diff bei --seit |
QSGATE_MAX_RPM · QSGATE_MAX_AUTH_15MIN | Anfragen je Minute (450) · Anmeldungen je 15 Minuten (14) |
QSGATE_RECHTE_AUSNAHMEN | anderer Pfad für config/rechte-ausnahmen.json |
QSGATE_KI_MAX · …_MAX_TOKENS_LAUF · …_MAX_TOKENS_ANFRAGE · …_MAX_KOSTEN | Budget der KI-Zweitprüfung, solange im Cockpit nichts gespeichert ist |
QSGATE_LAST · QSGATE_SICHERHEIT · QSGATE_A11Y | off schaltet die jeweilige neue Ebene ab; Barrierefreiheit ist ohnehin standardmäßig aus (Einstellungen › Prüfumfang, QSGATE_A11Y=on nur ohne gespeicherte Einstellung) |
config/)| Datei | Inhalt |
|---|---|
parallel.json | Regeln der parallelen Szenario-Phase: Sammelbereiche, exklusive Bereiche und Dateien |
route-dateien.json | Zuordnung Router-Datei → Bereiche für den Schnelllauf |
rechte-ausnahmen.json | Fehlalarm-Ausnahmen der Rechte-Schicht: muster (regulärer Ausdruck), art „lesend“ (POST, die nur rechnet/prüft/liest) oder „persoenlich“ (eigene Aktion jedes Benutzers), grund ist Pflicht |
buchungssaetze.json | Buchungssatz-Katalog der Fachprüfung Rechnungswesen |
node src/cli.js run [--parallel=N] [--schnell --dateien=…|--seit=<ref>] – Lauf bzw. Schnelllauf.node src/cli.js plan [--parallel=N] – Parallel-Plan der Szenario-Phase aus dem Profil der Referenz.node src/cli.js vergleich <laufA> <laufB> [--ebene=szenarien] – Beobachtungen zweier Läufe vergleichen..github/workflows/pruefstand.yml bei Änderungen unter qsgate/pruefstand/**: npm ci, Syntax aller Quellen und Szenarien, Szenarien laden, Konfiguration prüfen, npm test./data)| Datei | Inhalt |
|---|---|
runs/<lauf>/run.json | Kopf: Version, Zeiten, Zähler, Abdeckung |
runs/<lauf>/observations.json.gz | alle normalisierten Beobachtungen |
runs/<lauf>/deviations.json | Abweichungen gegen die Referenz |
runs/<lauf>/approvals.json | Freigaben je Abweichung |
runs/<lauf>/index-v7.json · sig-v1.json | Lauf-Index und Signatur (Status, Inhalts-Hash, Laufzeit je Beobachtung) – für ältere Läufe im Hintergrund erzeugt |
baseline.json · chain.log | aktuelle Referenz · Protokollkette |
triage.json · macros/ | Befund-Bearbeitung · eigene Makros |
ki.json · ki-fachpruefung-cache.json | KI-Einstellungen (Schlüssel verschlüsselt) · Ergebnis-Cache der KI-Zweitprüfung je Beleg |
Nichts wird überschrieben außer Freigaben und Referenz; die Protokollkette wird nur ergänzt. Das QS-Gate verändert keine Kunden- oder Produktivdaten.
Nimmt Kundenprozesse im Prozess-Studio auf und passt Makros an; ordnet Befunde fachlich ein; bereitet die Freigabe-Entscheidung für den Kunden auf. Ansichten: Prozess-Studio, Prozesse, Befunde, Prüfbericht.
Prüft jede Abweichung und gibt sie mit Begründung frei oder lehnt ab; kritische und unangekündigte brauchen zwei Personen. Ansichten: Abweichungen, Freigabe, Protokollkette.
Arbeitet den Prüfauftrag je Ursachen-Gruppe ab, korrigiert in main mit Test und merged nach qsgate. Ansichten: Prüfauftrag, Befund-Detail, Szenarien.
Bestätigt fachliche Erwartungen und Varianten; entscheidet Go-Live auf Basis von GO/NO-GO und Prüfbericht. Ansichten: Cockpit, Prüfbericht, Vergleich.
Die Rechte-Matrix prüft jede schreibende Route gegen jede Rolle: Recht vorhanden → keine Abweisung; Recht fehlt → 401/403; fremder Mandant → 403/404.
| Benutzer | Rolle | Darf schreiben in |
|---|---|---|
| demo-admin | Administrator | allen Bereichen |
| qs-lesen | nur lesen | — (Abweisung erwartet) |
| qs-vertrieb | Vertrieb/CRM | Vertrieb/CRM |
| qs-fi | Finanzbuchhaltung | Finanzen (FI) |
| qs-einkauf | Einkauf | Einkauf |
| qs-lager | Lager | Lager |
| qs-freigeber | Vier-Augen-Freigaben | Freigaben |
Weitere Fachrollen: qs-fertigung, qs-personal, qs-crm, qs-controlling, qs-admin-light. Passwörter stehen nie in Unterlagen oder Makros (dort nur {{password}}).
Das System misst und dokumentiert – Menschen entscheiden: über Abweichungen mit vier Augen, über Go-Live mit dem Kunden.
Häufige Fragen, Begriffe, Änderungen
Nein. Es läuft in einer eigenen Umgebung, deren Datenbank bei jedem Start aus dem Golden-Record neu entsteht.
Der Lauf vom 29.10.2026 dauerte 4 h 08 min. Mit paralleler Szenario-Phase und angehobenen Anfragelimits sind voraussichtlich rund 2 Stunden zu erwarten. Er startet automatisch ca. 3 Minuten nach einer neuen Version; die Restzeit zeigt der Live-Block im Cockpit. Für einen schnellen Zwischenstand gibt es den Schnelllauf.
Während des laufenden Laufs ist ein neuer Stand eingetroffen. Er wird nach dem Lauf automatisch geprüft; kommt ein noch neuerer, ersetzt er den wartenden.
Die API wurde während des Laufs neu deployt (Deploy-Modus „auto“) und hat ihre Datenbank zurückgesetzt – die restlichen Ergebnisse wären falsch. Das Teilergebnis bleibt, der neue Stand wird automatisch geprüft. Abhilfe auf Dauer: Deploy-Modus „fenster“.
Nein. Ein Schnelllauf prüft nur die betroffenen Bereiche, vergleicht nur den Status und ist ausdrücklich nicht freigaberelevant – er kann weder Referenz werden noch ein GO geben.
Muss-Kriterien entscheiden, nicht die Punktzahl – z. B. offene kritische Abweichungen oder ein verschlechtertes Szenario.
Menschen, nicht das System: Jede Abweichung wird begründet freigegeben, kritische und unangekündigte von zwei Personen; dann „Als Referenz übernehmen“.
Abweichung = Unterschied zur Referenz (kann gewollt sein). Befund = im Lauf fehlgeschlagene Prüfung.
Ja. Im Prozess-Studio aufnehmen oder ein fertiges Makro anpassen und „In jeden Prüflauf aufnehmen“ ankreuzen.
Damit Fälligkeiten, Alter und Perioden in jedem Lauf gleich sind – sonst wäre der Vergleich mit der Referenz wertlos.
Läufe, Freigaben und Referenzwechsel stehen in einer per SHA-256 verketteten Protokollkette.
Als Prüfauftrag (Markdown) mit Ursachen-Gruppen und Reproduktion; Korrektur in main, der nächste Lauf bestätigt „behoben“.
Nein. Makros enthalten nur den Platzhalter {{password}}, Prüfaufträge nur $TOKEN; ein KI-Schlüssel wird verschlüsselt gespeichert.
Kategorie lesen: „Fachlich abgewiesen“ oder „Fachliche Erwartung“ prüft der Berater; ist die Ablehnung richtig, wird das Szenario angepasst. Bei „Golden-Daten/Customizing“ wird der Golden-Record ergänzt. Zeitabhängige Prüfungen in Stabilität prüfen.
Es läuft bereits ein Lauf (Hinweis „Lauf läuft“ in der Kopfzeile) – „Lauf starten“ und „Schnelllauf“ sind dann gesperrt. Auch eine laufende Studio-Wiedergabe lässt den Lauf warten.
Die Spalte „Zuständig“ ordnet jeden Befund automatisch ein: App-Fehler → Entwicklung, Testdaten/Szenario → Prüfstand-Team, Customizing/Golden-Record → Berater, Fehlalarm-Verdacht → Prüfstand, Infrastruktur → Betrieb. Den Prüfauftrag gibt es passend dazu in Paketen.
Über die Schaltfläche „Handbuch“ in der Kopfzeile des Cockpits – sie springt zum Kapitel des aktiven Menüpunkts (Sprungmarke #<menü-id>).
scenarios/*.mjs), läuft über die API bis zum Endzustand.Jede Änderung, die Anwender sehen oder bedienen, ändert im selben Commit das Handbuch mit (siehe AGENTS.md). Neueste Einträge oben.
| Datum | Änderung |
|---|---|
| 30.10.2026 | Ausbau: Prüfauftrag-Pakete, Zuständigkeit, Schnelllauf, Warteschlange, Fachprüfung Rechnungswesen, KI-Zweitprüfung, Sonderfälle & Ketten, Prozesslücken, neue Prüfdimensionen. Neue Kapitel Schnelllauf, Fachprüfung Rechnungswesen, Sonderfälle & Ketten, Prozesskatalog, Neue Prüfdimensionen (Teil D); erweitert: Ablauf (Warteschlange, Deploy-Modus, parallele Szenarien, Phasen), Befund-Klassen und Befunde (Zuständig), Läufe (Pakete, Hinweis, KI-Zeile), Prozesse (ausgenommen), Vergleich (seitenweise), Einstellungen (KI-Zweitprüfung), Prüfauftrag (Pakete), Schnittstelle, Betrieb, FAQ, Glossar; neue Bildschirmfotos. Barrierefreiheit ist standardmäßig aus (Einstellungen › Prüfumfang). |
| 30.10.2026 | Erstausgabe – alle 22 Menüpunkte, Grundlagen, Arbeitsabläufe, Schnittstelle, Betrieb, FAQ und Glossar. |