Graph-, Anwendbarkeits- und Kompositionsansichts-Validierung
Generated artifact. Do not edit manually.
Generated by:
scripts/build_compendia.pyRegenerate with:python3 scripts/build_compendia.py --compendium qa-ci --web-and-texSource of truth:docs/qa-ci/source/
Sprache / Language: Deutsch (DE) · English (EN) | PDF: Deutsches PDF · English PDF
Kompendium: §1 Reifegrade & Erprobung · §2 QA-Scopes & CQR · §3 Graph-Validierung · §4 Semantische Atomizität · §5 Champion-Leitfaden · §6 Vier-Stufen-Modell
3. Graph-, Anwendbarkeits- und Kompositionsansichts-Validierung
Autoritative CI-Quelle und Validierungsgrenzen vom November 2026
Maßgebliche Spezifikation für die algorithmische Graph- und Ansichten-Validierung in .github/workflows/ci.yml (graph-validation & backend-ci). Transitive Minimalität (Graph-Definition §3.1) sowie vollständige lokale Prüfungsrouten, geschützte explizite Klausur-/Kartenziele und versionierte Lerneinheitsverträge (Gültigkeitsregeln R1–R5 vom 11. November 2026; Assessment-Gated Completion) sind verbindliche Zielanforderungen für den Validatorausbau. Atomare Normalform und transitive Minimalität (G17) werden nicht durch validate:graph geprüft; seit dem 11. November 2026 prüft CQR-001 sie für den kanonischen Gymnasialkatalog (2). Bestehende CI-Regeln ersetzen kein inhaltliches Aufgaben-/Rubrikreview auf selbständige Kompetenzanwendung.
3.1. CI-Einstiegspunkte, Profile und Basis-DAG-Prüfungen
- Rohgraph-Validator:
app/scripts/validateGraph.ts(npm run validate:graph) — Profile:default(Struktur- undGVR-*-Regeln harterror) vs. temporärer MigrationsmodusVALIDATE_GRAPH_STRICT_RULES=0(legacy-warn, wobeiGVR-012,GVR-014,GVR-015undGVR-016bedingungsloserrorbleiben). - Filter-Projektions-Validator:
app/scripts/validateViewFilters.ts(npm run validate:view-filters) für die 17 reviewten kanonischen Gymnasial-Landschaften (Mathematik,Physik,Chemie,Biologie,Informatik,Deutsch,Englisch,Französisch,Griechisch,Chinesisch,Geschichte,Politik und Wirtschaft,Musik,Latein,Spanisch,Wirtschaft,Overview). - Dauermodell- & View-Validatoren:
app/scripts/reportHeMathDurationProjection.ts --check(npm run check:he-math-duration-projectionfür Hessen Mathematik Sek-IG8/G9) undapp/scripts/validateCompositionViews.ts(npm run validate:composition-viewsfür alle.view.jsonuntercurricula/DE/Gymnasium/composition-views/). - Archiv- & Legacy-Handoff-Gates:
scripts/validate_hessen_upper_secondary_{archive_paths,legacy_refs}.py,scripts/validate_hessen_lower_secondary_{archive_paths,legacy_refs}.pyundscripts/validate_bavaria_gymnasium_{archive_paths,legacy_refs}.pygegen die expliziten*-retirement-registry.json-Allowlists untercurricula/DE/Gymnasium/provenance/undretained-asset-registry.json.
Immer aktive Kernprüfungen (error): JSON-Parsing, Ziel-ID- und logische shortKey-Eindeutigkeit, Referenzintegrität und Selbstreferenzschutz für requires/contains, erlaubte phase-/Leitideen-/Kompetenz-Domänen, Zyklenfreiheit von direktem requires, contains und effektivem requires, curricula/curriculum_manifest.json-Konsistenz sowie projektspezifische Guards (u. a. Physik-Mathematik-Querverweisprüfung).
3.2. Stabile Graph-Validierungsregeln (GVR-001 bis GVR-016)
| Regel | Standard / Scope | Geprüfte strukturelle Bedingung |
|---|---|---|
GVR-001 |
error · lokal |
Ein Ziel darf keinen seiner contains-Vorfahren direkt in requires referenzieren. |
GVR-002 |
error · lokal |
Phasen-Kompatibilitätslint: Effektive Voraussetzungen zeigen nicht auf spätere Phasen (E, Q1..Q4, Abitur, S*, J*). |
GVR-003 |
error · lokal |
Ein Ziel darf nicht direkt seinen unmittelbaren contains-Elternknoten voraussetzen (Deadlock-Schutz). |
GVR-004 |
error · DE_HES_S_GYM_2_* |
Erster atomarer Knoten ist ein Motivationsanker (Warum/Why; ohne OVERVIEW). |
GVR-005 |
error · DE_HES_S_GYM_2_* |
Jedes Atom erreicht den Motivationsanker transitiv über effektives requires (\(R_{\mathrm{effective}}^+\)). |
GVR-006 |
error · DE_HES_S_GYM_2_* |
Ein Ziel darf keines seiner direkten contains-Kinder direkt in requires voraussetzen (inkl. OVERVIEW). |
GVR-007 |
error · mit-ocw-* |
MIT-OCW-Modulatome (module:*) tragen in resourceLinks jeweils concept + practice + assessment auf https://ocw.mit.edu/courses/.... |
GVR-008 |
error · lokal |
Ausschließlich kanonisches Top-Level-Feld resourceLinks für zielbezogene Hilfslinks zulässig. |
GVR-009 |
error · lokal |
Optionales type-Feld stimmt mit struktureller Blatt/Nicht-Blatt-Klassifikation überein (atomic gdw. contains leer). |
GVR-010 |
error · landscapeId |
shortKey ist innerhalb der logischen landscapeId eindeutig (Sprachdatei-Paare nur bei identischer Ziel-UUID). |
GVR-011 |
error · Profil-Scopes |
Konfigurierte curricularAtomic-Ziele erreichen stufengetrennt ihren Motivationsanker über \(R_{\mathrm{effective}}^+\). |
GVR-012 |
unconditional error · Mathe DE Sek I & II |
Harte Vollrouten-Invariante: Jedes curricularAtomic-Ziel liegt stufenlokal auf einer direkten atomaren requires-Route vom orientation-Anker zu einem atomaren practiceAssessment-Endpunkt (Sek I: Einzelaufgaben unter Prüfungen Jahrgangsstufe 5..10; Sek II: atomare Aufgaben unter Übungen E-Phase, Q1..Q4, Prozesskompetenzen; exakte semanticKind-Klassifikation aller Knoten, keine Cluster-/Struktur-Abkürzungen). |
GVR-013 |
error · Mathe DE |
Kein ausgewähltes Nicht-Memory-Atom verweist mit direktem lokalem requires auf einen Clusterknoten. |
GVR-014 |
unconditional error · alle |
Motivations-/Orientierungsknoten sind reine, voraussetzungsfreie atomare Einstiegsanker ohne examData, examples, Memory-/SRS- oder Assessment-Tags. |
GVR-015 |
unconditional error · Mathe DE Sek I & II |
Geprüfte zweisprachige Orientierungs-Outlooks (2–4 Pfade mit curricularArea-Wurzeln sowie atomaren curricularAtomic-entryGoalIds und milestoneGoalIds, direkte atomare Rückbindung zum Anker, keine internen Begriffe wie Source-Extraction; fail-closed Schnitt mit targetGoalIds zur Laufzeit). |
GVR-016 |
unconditional error · examData |
GFM-Tabellenintegrität in taskContent* und solutionContent* (gültige Trennzeile und konsistente Spaltenzahl ab zwei aufeinanderfolgenden Pipe-Zeilen). |
3.3. Filter-Projektion (APV-*), Pflichtlernbasis und Assessment-Anwendbarkeit
| Regel | Standard | Bedeutung in validate:view-filters & backend-ci |
|---|---|---|
APV-102 |
error |
Ein notwendiges kanonisches Atom fehlt in den persönlichen Erwerbszielen, ausgelieferten Definitionen oder Abschluss-Inputs (erzwungen durch den nativen Backend-Pflichttest). |
APV-103 |
error |
Ein sichtbares Ziel ist von der projizierten Wurzel aus nicht erreichbar (ausgeklammerte Altcluster tragen extendedData.applicabilityProjection = "excluded"). |
APV-201 |
warning |
Expliziter Applicability-Override aktiv (akzeptierte Fälle mit Begründung in docs/qa-ci/applicability-accepted-warnings.json). |
APV-202 |
diagnostic |
Sichtbarkeit beruht nur auf partial-Mappings (1:n-Formdiagnose, keine aktive Warnschuld). |
APV-203 |
warning |
Kompilierte Anwendbarkeit weicht von committeten Metadaten ab. |
- Vertrag der geschlossenen persönlichen Lernbasis (Product Owner, 10. November 2026): Gemäß View Projection & Goal Placement muss jedes effektiv notwendige Atom tatsächliches Erwerbsziel im gesamten Persönlichen Curriculum sein — unabhängig von seiner Quell-Jurisdiktion (ohne dass daraus Quellabdeckung für
CQR-003entsteht). Durchgesetzt wirdAPV-102in.github/workflows/ci.yml(backend-ci->./gradlew check) überFirstMathPrerequisiteReductionTest.currentCatalogLearningScopesRetainEveryCanonicalAcquisitionTargetüber alle 20 Fächer und 17 Jurisdiktionswahlen (inkl. Biologie-Regressionsschutz bei entferntem Pflichtziel). - Explizite Assessment-Anwendbarkeitsbasis (ruhende Compiler-Unterstützung): Für atomare Prüfungs-/Übungsziele mit
applicabilityFromRequires: truewertetextendedData.assessmentApplicabilityBasis = { kind: "allOfGoalApplicability", goalRefs: [...] }ausschließlich die Seed-Eignung aus (weist Zyklen, Duplikate, Fremd- und Memory-Abhängigkeiten ab); die Pflichtlernmenge folgt weiterhin kanonischemrequires. Vor jeder produktiven Datenaufnahme sind Beweiserweiterung,APV-Zielprüfung und nativer Vergleich erforderlich.
3.4. Kompositionsansichts-Validierung (CPV-000 bis CPV-216)
validate:composition-views prüft alle .view.json-Dateien unter curricula/DE/Gymnasium/composition-views/ deterministisch gegen ihren kanonischen Graphen:
| Regel | Stufe | Geprüfte Kompositionsbedingung |
|---|---|---|
CPV-000 |
error |
.view.json-Datei konnte nicht geladen oder geparst werden. |
CPV-001 |
error |
Pflichtmetadaten der View oder eines Strukturknotens fehlen/sind ungültig. |
CPV-002 |
error |
Referenzierte kanonische Teilbaumwurzel existiert nicht im kanonischen Graphen. |
CPV-004 |
error |
Zwei referenzierte kanonische Teilbäume überlappen sich oder dieselbe Wurzel wird mehrfach referenziert. |
CPV-005 |
error |
Der kompilierte Standardbaum enthält dasselbe kanonische Ziel mehrfach. |
CPV-006 |
error |
Ein kanonisches Ziel erhält im kompilierten Baum mehr als einen sichtbaren Elternknoten. |
CPV-007 |
error |
Ein leerer Strukturknoten bleibt im sichtbaren View-Baum stehen. |
CPV-008 |
error |
Unbekannte projectionRole in einer Kompositionsreferenz. |
CPV-009 |
error |
Ein goalEntry legt einen curricularArea-Cluster opak offen statt ihn über canonicalSubtree oder explizite Atome zu entfalten. |
CPV-101 |
warning |
Zu generisches Strukturknoten-Label. |
CPV-102 |
warning |
Kanonische Teilbaumwurzel trägt noch phasen- oder länderspezifischen Titel. |
CPV-210 |
error |
Kanonische Mathe-Sek-I-View zeigt den geprüften Motivationsanker nicht. |
CPV-211 |
error |
Kanonische Mathe-Sek-I-View zeigt nicht alle Jahrgangs-Prüfungsordner samt Einzelaufgaben. |
CPV-212 |
error |
Fehlerhafte Mathe-Sek-I-Prüfungsordnerstruktur (fehlender Jahrgang, nicht-atomare Aufgabe, fehlende examData, Cluster-requires, Duplikat oder veralteter Sammelendpunkt). |
CPV-213 |
error |
Mathe-Sek-I-View exponiert noch den veralteten Sammelzweig Übungen Sekundarstufe I. |
CPV-214 |
error |
Mathe-Sek-II-/CrossStage-View zeigt den geprüften Sek-II-Motivationsanker nicht. |
CPV-215 |
error |
Mathe-Sek-II-/CrossStage-View exponiert keinen atomaren terminalen Prüfungs-/Autonomieendpunkt. |
CPV-216 |
error |
Learner-facing View-Label enthält interne Autorenbegriffe wie Source-Extraction. |