54 lines
4.1 KiB
Markdown
54 lines
4.1 KiB
Markdown
# Validation – Production Readiness v1.2
|
||
|
||
## Ausgangsdaten
|
||
|
||
Der reale Testbestand zeigte unter anderem:
|
||
|
||
- 50/50 Security-Lifecycles sauber abgeschlossen, kausal exakt +50 Nodes / +50 Edges / +50 Vektoren.
|
||
- 21.341 Vektoren bei 21.351 vektorberechtigten Nodes: 10 Relation-Research-Nodes ohne Embedding.
|
||
- Zwei Staging-Artikel. Ein HAProxy-Artikel war thematisch kohärent; ein Water-Leak-Artikel enthielt acht Quellen aus Water Leak Detection, Triple Extortion und BGP Prefix Filtering.
|
||
- Der Water-Leak-Artikel hatte beim Erzeugen acht `synthesized_from`- und eine `proposes_merge`-Edge; ein späterer Staging-Reimport löschte exakt diese neun Runtime-Provenienz-Edges.
|
||
- Learning-Run-Mutationen wurden durch `graph.updated` + Terminalsnapshot doppelt gezählt.
|
||
|
||
Diese Befunde wurden als Regressionstests bzw. deterministische Readiness-Invarianten umgesetzt.
|
||
|
||
## Validierung
|
||
|
||
Die Release-Quellen bleiben auf Go 1.26 und dem echten `modernc.org/sqlite`. Die lokale Offline-Umgebung stellt nur Go 1.23 bereit; Compile-/Unit-Validierung erfolgt deshalb in einer separaten Kopie mit einem compile-only SQLite-Stub. Der Release-Tree enthält diesen Stub nicht.
|
||
|
||
Erfolgreich ausgeführt:
|
||
|
||
- Topic-Guard-Tests für Water Leak / Triple Extortion / BGP.
|
||
- Shared-Seed-Test: gemeinsamer generischer Hub darf den Topic-Guard nicht umgehen.
|
||
- deterministischer Draft-Coherence-Gate: beobachteter Water-Leak-Mix wird verworfen; ein einzelner Supporting-Outlier in einem HAProxy-Artikel bleibt erlaubt.
|
||
- Graph-Test: Legacy-Runtime-Provenienz überlebt Staging-Reimport.
|
||
- Graph-Test: echte Artikellöschung cascadiert Runtime-Provenienz und hinterlässt keine dangling Edges.
|
||
- Graph-Test: Legacy-Artikelstruktur (`generation_depth`, `source_node_ids`, Fingerprint) bleibt bei Reimport erhalten.
|
||
- Analysis-Test: parallele Artikel bleiben über native Run-IDs getrennt.
|
||
- Analysis-Test: Cluster-Scheduling wird nicht einem offenen Artikelrun zugerechnet.
|
||
- Analysis-Test: Learning-Terminalmutationen werden exakt einmal gezählt.
|
||
- projektweite Typkompilierung `go test ./... -run '^$'`.
|
||
- `go vet ./...`.
|
||
- vollständige ausführbare Tests für `internal/activity`, `internal/config`, `internal/research`, `internal/ollama`, `internal/workqueue`.
|
||
- Race Detector für Activity, Article-Run-Rekonstruktion, Learning-Mutationsbilanz und Topic-Guard.
|
||
- `node --check` für `analysis.js`, `source-agents.js`, `app.js`.
|
||
- YAML-Parsing für `docker-compose.yml`, `deployment/docker-compose.full.yml`, `deployment/docker-compose.source-agent.yml`.
|
||
|
||
## Erwartete Invarianten nach Upgrade
|
||
|
||
1. Readiness `Embedding-Konsistenz`: exakt `vector_rows == vector_eligible_nodes`, nur 768D.
|
||
2. Readiness `Artikel-Provenienz / Topic-Coherence`: grün, nachdem bekannte Alt-Mixed-Topic-Entwürfe quarantänisiert wurden.
|
||
3. Ein erfolgreich erzeugter Artikelrun meldet kausal seinen Artikel-Node, seine Provenienz-Edges und sein Artikel-Embedding; keine fremden Parallelmutationen.
|
||
4. Learning-Bootstrap-Mutationen erscheinen nur einmal in der Workflow-Bilanz.
|
||
5. Neue Relation-Research-Nodes erhalten sofort ein Embedding; vorhandene Lücken werden durch `embedding.external_repair.completed` geschlossen.
|
||
6. `article.cluster.started` enthält `topic_guard=strict-v2` und `topic_labels`.
|
||
7. Parallel laufende Artikel haben unterschiedliche `article-...` Run-IDs und genau ein Terminalevent.
|
||
8. Nach Staging-Reimport bleiben `synthesized_from`, `proposes_*`, Generation Depth und Source-IDs erhalten.
|
||
|
||
## Bewusst nicht behauptet
|
||
|
||
Ein vollständiger Go-Runtime-Test gegen den echten `modernc.org/sqlite`-Treiber kann in der Offline-Go-1.23-Umgebung weiterhin nicht ausgeführt werden. Der endgültige Runtime-Nachweis erfolgt auf der Zielumgebung mit Go 1.26. Deshalb ist v1.2 ein Release Candidate; Go/No-Go wird anhand des Readiness-Panels und eines neuen Analyseexports entschieden.
|
||
- Analysis-Test: unkeyed Artikel-/Inbox-Telemetrie wird nicht mehr per Zeitnähe an einen offenen Workflow gehängt.
|
||
- Legacy-Strukturtest: Generation Depth und Fingerprint überleben einen Reimport ohne `ai_think` im alten Staging-JSON.
|
||
- finale projektweite Typkompilierung und `go vet` nach Grounding-Mutationshärtung erneut erfolgreich.
|