+15
-3
@@ -1,7 +1,14 @@
|
||||
BRAIN_MODE=agent
|
||||
BRAIN_AGENT_BRAIN_URL=http://127.0.0.1:8091
|
||||
BRAIN_AGENT_ID=agent-54818724445d1ba09d55dda0
|
||||
BRAIN_AGENT_TOKEN=brain_agent_9e3accf00b8fab6d63d66efb80c792f1d377166a0dbb93d29436212eb3940641
|
||||
BRAIN_AGENT_ID=agent-c5e0717003f216bffb7cb263
|
||||
BRAIN_AGENT_TOKEN=brain_agent_e2f8a3e9e1e153e59ed0a8c9a50144a229f7317f0a3cb8d18393d6fc7b13f8a8
|
||||
BRAIN_AGENT_COMPUTE_ENABLED=true
|
||||
BRAIN_AGENT_DOCKER_CONTROLLER_ENABLED=true
|
||||
|
||||
BRAIN_AGENT_DOCKER_SOCKET=/var/run/docker.sock
|
||||
BRAIN_AGENT_DOCKER_COMPOSE_BINARY=docker
|
||||
BRAIN_AGENT_CONTROLLER_POLL_INTERVAL=5s
|
||||
BRAIN_AGENT_CONTROLLER_MAX_DURATION=15m
|
||||
|
||||
# =============================================================================
|
||||
# SOURCE AGENT
|
||||
@@ -17,4 +24,9 @@ BRAIN_AGENT_CONCURRENCY=3
|
||||
BRAIN_AGENT_BATCH_SIZE=50
|
||||
|
||||
# Nur true, wenn der Agent absichtlich Intranet-Webseiten crawlen soll.
|
||||
BRAIN_AGENT_ALLOW_PRIVATE=false
|
||||
BRAIN_AGENT_ALLOW_PRIVATE=false
|
||||
|
||||
BRAIN_AGENT_COMPUTE_POLL_INTERVAL=5s
|
||||
|
||||
# 128 MiB reichen momentan locker für deine ~63,5 MiB
|
||||
BRAIN_AGENT_COMPUTE_MAX_BYTES=134217728
|
||||
+53
-1
@@ -78,7 +78,9 @@ BRAIN_LOW_POWER_MODE=false
|
||||
|
||||
# Sequential enrichment
|
||||
BRAIN_AUTO_ENRICH=true
|
||||
BRAIN_SCAN_INTERVAL=20s
|
||||
BRAIN_SCAN_INTERVAL=5m
|
||||
# Safety verification: periodically parse/hash full knowledge content even when path/size/mtime are unchanged. 0 disables.
|
||||
BRAIN_KNOWLEDGE_FULL_VERIFY_INTERVAL=6h
|
||||
BRAIN_ENRICH_INTERVAL=90s
|
||||
BRAIN_ENRICH_BATCH_SIZE=3
|
||||
BRAIN_ENRICH_STEP_DELAY=3s
|
||||
@@ -87,6 +89,36 @@ BRAIN_ENRICH_ANCHORS=48
|
||||
BRAIN_PROCESSING_MODE=precise
|
||||
BRAIN_CLUSTER_HASH_BITS=24
|
||||
BRAIN_CLUSTER_HASH_TABLES=2
|
||||
|
||||
# Experimental mathematical Knowledge<->Knowledge layer. Reuses embeddings that
|
||||
# already exist; edge scoring/layout perform no additional model call.
|
||||
BRAIN_VECTOR_GRAPH_ENABLED=false
|
||||
BRAIN_VECTOR_GRAPH_NEIGHBORS=4
|
||||
BRAIN_VECTOR_GRAPH_CANDIDATES=96
|
||||
BRAIN_VECTOR_GRAPH_MIN_SIMILARITY=0.80
|
||||
BRAIN_VECTOR_GRAPH_MIN_AFFINITY=0.35
|
||||
# Optional second pass for nodes left isolated after the conservative mutual-kNN pass.
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_PASS=false
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_NEIGHBORS=2
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_CANDIDATES=256
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_MIN_SIMILARITY=0.80
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_MIN_AFFINITY=0.30
|
||||
# Let an integrated BRAIN_MODE=agent worker calculate vector-graph CPU jobs.
|
||||
# The Brain remains graph owner and validates every returned endpoint/value.
|
||||
BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=false
|
||||
BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false
|
||||
BRAIN_VECTOR_GRAPH_AGENT_WAIT=2m
|
||||
# AI-THINK consumes mathematical semantic_neighbor candidates before doing a new vector search.
|
||||
BRAIN_THINKING_VECTOR_GUIDED=true
|
||||
# Optional hard semantic 3D layout. Keep false unless you want an immediate full layout replacement.
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT=false
|
||||
# Re-evaluate semantic proximity from the existing embeddings periodically without model calls.
|
||||
BRAIN_VECTOR_GRAPH_REEVALUATE_INTERVAL=30m
|
||||
# Gradually relax dense visual clouds toward the semantic layout instead of moving all nodes at once.
|
||||
BRAIN_VECTOR_GRAPH_RELAX_LAYOUT=true
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_RELAX_INTERVAL=2h
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_BLEND=0.08
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_MAX_SHIFT=0.035
|
||||
BRAIN_CLUSTER_CANDIDATES_PER_ANCHOR=96
|
||||
BRAIN_CLUSTER_ARTICLE_CANDIDATES=192
|
||||
BRAIN_CLUSTER_REVIEW_EVIDENCE=8
|
||||
@@ -147,6 +179,13 @@ BRAIN_ARTICLE_MAX_GENERATION_DEPTH=2
|
||||
BRAIN_ARTICLE_MIN_CONFIDENCE=0.74
|
||||
BRAIN_ARTICLE_MIN_TEXT_CHARS=180
|
||||
BRAIN_ARTICLE_MIN_ANSWER_CHARS=420
|
||||
# Model-free pre-review. It scores depth, redundancy, source coverage and information density
|
||||
# before the expensive Qwen claim/coverage review. Local CPU is the privacy-safe default;
|
||||
# enable Agent offload only when that worker is trusted to receive article/source text.
|
||||
BRAIN_ARTICLE_CPU_QUALITY_ENABLED=true
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_OFFLOAD=false
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_REQUIRED=false
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_WAIT=20s
|
||||
# Web-Routing: auto = precise: always, clustered: adaptive.
|
||||
# always = breite Vorabrecherche; adaptive = intern/Gemma zuerst und Web nur bei Aktualität/Evidenzlücke; review_only = Web nur auf Reviewer-Anforderung.
|
||||
BRAIN_ARTICLE_RESEARCH_STRATEGY=auto
|
||||
@@ -224,3 +263,16 @@ BRAIN_AUTONOMOUS_RESEARCH_OPPORTUNITY_LIMIT=8
|
||||
# BRAIN_AGENT_BATCH_SIZE=50
|
||||
# Allow polling RFC1918/private URLs only for intentionally trusted intranet sources.
|
||||
# BRAIN_AGENT_ALLOW_PRIVATE=false
|
||||
# CPU compute worker. No Ollama/chat/embedding call is made for vector_graph or article_quality jobs;
|
||||
# vector jobs receive existing float32 embeddings, article-quality jobs receive the already selected article/evidence text.
|
||||
# BRAIN_AGENT_COMPUTE_ENABLED=true
|
||||
# BRAIN_AGENT_COMPUTE_POLL_INTERVAL=5s
|
||||
# BRAIN_AGENT_COMPUTE_MAX_BYTES=134217728
|
||||
|
||||
# Optional Docker-controller role. Keep disabled unless this Agent is intentionally
|
||||
# trusted with the host Docker socket. Docker.sock is effectively host-root.
|
||||
# BRAIN_AGENT_DOCKER_CONTROLLER_ENABLED=false
|
||||
# BRAIN_AGENT_DOCKER_SOCKET=/var/run/docker.sock
|
||||
# BRAIN_AGENT_DOCKER_COMPOSE_BINARY=docker
|
||||
# BRAIN_AGENT_CONTROLLER_POLL_INTERVAL=5s
|
||||
# BRAIN_AGENT_CONTROLLER_MAX_DURATION=15m
|
||||
|
||||
@@ -16,6 +16,8 @@ interne KB-Quellen auswählen
|
||||
│
|
||||
▼
|
||||
Artikelplan
|
||||
│
|
||||
├─ nur 2 kohärente Quellen für how_to/troubleshooting? ──> Gap-Research
|
||||
│
|
||||
▼
|
||||
Aktualitätsdetektor
|
||||
@@ -27,6 +29,7 @@ Aktualitätsdetektor
|
||||
▼
|
||||
Gemma / Autor schreibt intern-first
|
||||
│
|
||||
├─ <3 Lösungsschritte oder keine Validierung? ──> feldgerichtete Webrunde + Neufassung
|
||||
├─ research_needed / freshness_sensitive? ──> kleine gezielte Webrunde + Neufassung
|
||||
│
|
||||
▼
|
||||
@@ -50,7 +53,7 @@ Ein eigener LLM-Aufruf nur für die Frage „brauche ich Webrecherche?“ würde
|
||||
- `freshness_sensitive`
|
||||
- `research_reason`
|
||||
|
||||
Diese Felder erscheinen niemals im sichtbaren KB-Artikel. Wenn die internen Quellen ausreichen, bleibt die Pipeline ohne Webzugriff. Wenn Gemma eine konkrete Lücke erkennt, werden höchstens wenige präzise Queries ausgeführt und der Draft einmal mit dem neuen Material neu erzeugt.
|
||||
Diese Felder erscheinen niemals im sichtbaren KB-Artikel. Wenn die internen Quellen ausreichen, bleibt die Pipeline ohne Webzugriff. Zusätzlich zu Gemmas Routingfeldern kann der deterministische Task-Completeness-Guard Recherche auslösen: Ein `how_to`/`troubleshooting` mit weniger als drei konkreten Schritten oder ohne Validierung gilt als Evidenzlücke. Findet bereits der Planner nur zwei kohärente interne Quellen, werden ebenfalls gezielte Gap-Queries erzeugt, statt den Auftrag sofort zu verwerfen.
|
||||
|
||||
## Aktualitätsdetektor
|
||||
|
||||
@@ -72,7 +75,7 @@ BRAIN_ARTICLE_RESEARCH_STRATEGY=auto
|
||||
|
||||
- `auto`: `precise` verwendet `always`, `clustered` verwendet `adaptive`.
|
||||
- `always`: breites Webmaterial vor dem ersten Draft wie im bisherigen Generate-then-Review-Pfad.
|
||||
- `adaptive`: intern/Gemma-first; Web nur bei Aktualität, Autor-Evidenzbedarf oder Reviewer-Gap.
|
||||
- `adaptive`: intern/Gemma-first; Web bei Aktualität, Planner-Gap, fehlenden operationalen Schritten/Validierung, Autor-Evidenzbedarf oder Reviewer-Gap.
|
||||
- `review_only`: kein initiales Web; ausschließlich der Reviewer darf Nachrecherche auslösen.
|
||||
|
||||
Budget für die erste adaptive Runde:
|
||||
|
||||
+203
-95
@@ -1,31 +1,27 @@
|
||||
# BRAIN ANALYSIS CENTER
|
||||
|
||||
Das technische Analyse-Dashboard ist bewusst von der animierten Gehirnansicht getrennt.
|
||||
Das technische Analyse-Dashboard ist von der animierten Gehirnansicht getrennt:
|
||||
|
||||
- Visualisierung: `http://localhost:8090/`
|
||||
- Analyse: `http://localhost:8090/analysis.html`
|
||||
- Kurzpfad: `http://localhost:8090/analysis`
|
||||
|
||||
In der Gehirnansicht führt der neue Button **ANALYSE** direkt zum Dashboard.
|
||||
|
||||
## Zweck
|
||||
|
||||
Das Dashboard beantwortet insbesondere:
|
||||
Das Dashboard soll nicht nur einzelne Events anzeigen, sondern beantworten:
|
||||
|
||||
- Hatte der letzte Lauf ein materiell positives Ergebnis?
|
||||
- Wurden Nodes, Edges oder Embeddings erzeugt, verändert oder gelöscht?
|
||||
- Welche konkreten Objekt-IDs waren betroffen?
|
||||
- Wurde lediglich geprüft und anschließend wegen Qualitätsregeln übersprungen?
|
||||
- Wie viele semantische Vergleiche, SearXNG-Treffer, Volltextabrufe und akzeptierte Belege gab es?
|
||||
- Wurde ein Artikel erzeugt oder blieb nur neue Research-Evidence zurück?
|
||||
- Ist der Graph strukturell gesund und wie hoch ist die Vektorabdeckung?
|
||||
- Sind Ollama, Autonomous Research, Persistenz und SQLite aktuell arbeitsfähig?
|
||||
- Was hat ein Workflow tatsächlich bewirkt?
|
||||
- Wie lange dauerte er und wo liegen P50/P95-Ausreißer?
|
||||
- Wie viele Nodes, Edges oder Embeddings wurden erzeugt, verändert oder gelöscht?
|
||||
- Wie teuer waren Artikel-, Research-, Security- und THINK-Läufe relativ zueinander?
|
||||
- Wurde Research aus der Source Inbox wiederverwendet oder musste SearXNG arbeiten?
|
||||
- Wie viele Security-Meldungen wurden materialisiert, verworfen oder sind fehlgeschlagen?
|
||||
- Welche Claims hat der Article Reviewer unterstützt, nur teilweise gestützt, verworfen oder als widersprüchlich bewertet?
|
||||
- Ist die Analysehistorie vollständig genug oder wurde sie von Telemetrie-/Queue-Limits beschnitten?
|
||||
|
||||
## Persistentes Auditprotokoll
|
||||
|
||||
Die Historie liegt in `BRAIN_DATA_DIR/graph.db`. Die Datenbank wird automatisch von Schemaversion 2 auf 3 erweitert. Ein Löschen oder Neuaufbau des Graphen ist nicht erforderlich.
|
||||
|
||||
Neue Tabellen:
|
||||
Die Historie liegt in `BRAIN_DATA_DIR/graph.db`:
|
||||
|
||||
```text
|
||||
analysis_events
|
||||
@@ -33,125 +29,237 @@ analysis_points
|
||||
analysis_changes
|
||||
```
|
||||
|
||||
`analysis_events` enthält die ursprünglichen Engine-Aktivitäten mit Query, Meldung, IDs und Metadaten. `analysis_points` speichert den unmittelbar dazu erfassten Graphstand sowie monotone Änderungszähler. `analysis_changes` enthält die konkreten betroffenen Nodes, Edges und Vektoren.
|
||||
`analysis_events` enthält Aktivitäten und Metadaten. `analysis_points` speichert den dazugehörigen Graphzustand und exakte Mutation-Deltas. `analysis_changes` enthält die konkreten Node-, Edge- und Vector-Änderungen.
|
||||
|
||||
Die Historie wird 90 Tage aufbewahrt. Die Aufzeichnung beginnt erst mit dieser Version; frühere Läufe lassen sich nicht rückwirkend rekonstruieren.
|
||||
Die Rohhistorie wird 90 Tage aufbewahrt. Detailänderungen sind pro Event auf 2.000 Datensätze begrenzt; die aggregierten Mutation-Zähler bleiben auch bei Kürzung vollständig.
|
||||
|
||||
## Event-Hygiene
|
||||
|
||||
Hochfrequente Hintergrundtelemetrie darf fachlich relevante Läufe nicht aus dem Analysefenster verdrängen.
|
||||
|
||||
### Unveränderte KB-Scans
|
||||
|
||||
`learning.scan.started` wird nicht mehr separat persistiert. Ein `learning.scan.completed` mit `result=unchanged` und ohne Graphänderung wird gesammelt. Standardmäßig werden bis zu 15 solcher Läufe beziehungsweise maximal fünf Minuten zu einem Event verdichtet:
|
||||
|
||||
```text
|
||||
learning.scan.unchanged.aggregate
|
||||
```
|
||||
|
||||
Das Aggregate enthält unter anderem:
|
||||
|
||||
- exakte Anzahl der Scan-Läufe,
|
||||
- äquivalente Zahl früherer Roh-Events,
|
||||
- First/Last Timestamp,
|
||||
- Gesamt-, Durchschnitts-, Minimal- und Maximallaufzeit,
|
||||
- Zahl der geprüften Wissenselemente,
|
||||
- Ollama-Status.
|
||||
|
||||
### Embedding-Batches
|
||||
|
||||
Repetitive `embedding.batch`-Fortschrittsereignisse werden ebenfalls verdichtet. Bis zu 16 Batch-Events beziehungsweise maximal 60 Sekunden werden zu
|
||||
|
||||
```text
|
||||
embedding.batch.aggregate
|
||||
```
|
||||
|
||||
zusammengefasst. Anders als bei reiner Telemetrie bleiben hierbei die Mutation-Deltas erhalten: Vector-Created/Updated/Deleted werden exakt aufsummiert und vorhandene Detailänderungen in das Aggregate übernommen.
|
||||
|
||||
### Bestehende Datenbanken
|
||||
|
||||
Alte Rohdaten werden nicht gelöscht oder umgeschrieben. Beim Lesen des Dashboards werden historische unveränderte Scans und historische Embedding-Batches zusätzlich virtuell verdichtet. Dadurch wird eine bestehende `graph.db` sofort übersichtlicher.
|
||||
|
||||
Der Bereich **Analysequalität / Event-Hygiene** zeigt:
|
||||
|
||||
- persistierte Events,
|
||||
- tatsächlich geladene aussagekräftige Events,
|
||||
- verdichtete No-op-Scans,
|
||||
- verdichtete Embedding-Batches,
|
||||
- durch die neue Persistenz künftig vermiedene Roh-Events,
|
||||
- ausgelassene Events durch das Anzeige-Limit,
|
||||
- Audit-Queue-Fehler oder verworfene Detailänderungen.
|
||||
|
||||
## Laufmodell
|
||||
|
||||
Zusammengehörige Events werden zu Workflows gruppiert. Unterstützt werden unter anderem:
|
||||
|
||||
- `learning`
|
||||
- `thinking`
|
||||
- `research`
|
||||
- `autonomous-research`
|
||||
- `security-source`
|
||||
- `article`
|
||||
- `query`
|
||||
- `searxng-test`
|
||||
- Persistenz-/Synchronisationsaktionen
|
||||
|
||||
### Article Pipeline
|
||||
|
||||
Ein Artikellauf beginnt bei `article.plan.started` und endet bei einem Terminal-Event wie:
|
||||
|
||||
```text
|
||||
article.created
|
||||
article.draft.rejected
|
||||
article.failed
|
||||
article.duplicate
|
||||
article.skipped
|
||||
article.plan.skipped
|
||||
```
|
||||
|
||||
Zwischenereignisse wie Draft, Rewrite, Inbox Research, SearXNG Research, Revision und Review werden demselben Lauf zugeordnet.
|
||||
|
||||
### Security Source Pipeline
|
||||
|
||||
Neue proactive Security-Verarbeitung erzeugt einen echten Lifecycle:
|
||||
|
||||
```text
|
||||
source.security.started
|
||||
-> source.security.research optional
|
||||
-> source.security.materialized
|
||||
| source.security.rejected
|
||||
| source.security.failed
|
||||
```
|
||||
|
||||
Die Terminal-Events enthalten `duration_ms`. Damit sind ab dieser Version echte Laufzeitstatistiken für Security-Materialisierung möglich. Ältere bereits materialisierte Security-Nodes bleiben in den Zählern sichtbar, besitzen aber rückwirkend keine rekonstruierbare Startzeit.
|
||||
|
||||
### Research Lifecycle
|
||||
|
||||
Nur Root-Events öffnen oder schließen einen Research-Lauf:
|
||||
|
||||
```text
|
||||
research.started / completed / failed
|
||||
article.research.started / completed / failed
|
||||
```
|
||||
|
||||
Fetch-, Ranking-, Material- und Evidence-Events sind Unterereignisse. Doppelte native Run-IDs erzeugen keinen zweiten aktiven Prozess. Historische Relationsrecherchen ohne Terminal-Event können nach einer Grace-Period als Legacy-Abschluss rekonstruiert werden.
|
||||
|
||||
## Workflow-Kosten
|
||||
|
||||
Der Bereich **Ressourcen / Laufzeit** aggregiert pro Workflow-Typ:
|
||||
|
||||
- Anzahl Läufe,
|
||||
- Success/Warning/Error/Running,
|
||||
- Anzahl Events,
|
||||
- summierte Graphmutationen,
|
||||
- Gesamtzeit,
|
||||
- Durchschnitt,
|
||||
- P50,
|
||||
- P95,
|
||||
- Maximum.
|
||||
|
||||
Die Gesamtzeit ist eine aufsummierte Workflow-Zeit und bei parallelen Läufen nicht mit Wall-Clock-Zeit gleichzusetzen.
|
||||
|
||||
Das Laufprotokoll kann sortiert werden nach:
|
||||
|
||||
- neueste zuerst,
|
||||
- langsamste zuerst,
|
||||
- meiste Graphänderungen,
|
||||
- meiste Events.
|
||||
|
||||
## Pipeline-Bilanzen
|
||||
|
||||
### Security Pipeline
|
||||
|
||||
Das Dashboard zeigt separat:
|
||||
|
||||
- materialisierte Meldungen,
|
||||
- verworfene Meldungen,
|
||||
- Fehler,
|
||||
- Zusatzrecherchen,
|
||||
- ergänzende Quellen,
|
||||
- durchschnittliche Gemma-Konfidenz,
|
||||
- Severity-Verteilung,
|
||||
- Security-Eventtyp-Verteilung,
|
||||
- letzte Security-Läufe samt Dauer und Mutationen.
|
||||
|
||||
### Article Pipeline
|
||||
|
||||
Separat dargestellt werden:
|
||||
|
||||
- erzeugte Artikel,
|
||||
- Reviews,
|
||||
- Rejections/Failures,
|
||||
- Duplicates/Skips,
|
||||
- Source-Inbox-Treffer,
|
||||
- Web-Fetches,
|
||||
- supported / partially-supported / unsupported / contradicted Claims,
|
||||
- letzte Artikelläufe.
|
||||
|
||||
## Änderungssemantik
|
||||
|
||||
### Nodes
|
||||
|
||||
- `created`: neue Node-ID wurde aufgenommen.
|
||||
- `updated`: vorhandene Node wurde mit geänderten Daten ersetzt.
|
||||
- `updated`: vorhandene Node wurde mit geändertem Inhalt ersetzt.
|
||||
- `deleted`: Node ist aus einer verwalteten Quelle verschwunden.
|
||||
|
||||
### Edges
|
||||
|
||||
- `created`: neue Relation wurde aufgenommen.
|
||||
- `updated`: Typ, Status, Confidence, Evidenz oder Metadaten einer vorhandenen Relation wurden geändert.
|
||||
- `deleted`: Relation wurde entfernt, etwa weil die Quelle oder ein Endpunkt nicht mehr existiert.
|
||||
- `updated`: Typ, Status, Confidence, Evidenz oder Metadaten wurden verändert.
|
||||
- `deleted`: Relation wurde entfernt.
|
||||
|
||||
### Vektoren
|
||||
|
||||
- `created`: ein Node erhielt erstmals ein Embedding.
|
||||
- `recalculated`: ein vorhandenes Embedding wurde ersetzt.
|
||||
- `deleted`: ein Vektor wurde invalidiert oder sein Node entfernt.
|
||||
- `created`: Node erhielt erstmals ein Embedding.
|
||||
- `recalculated`: vorhandenes Embedding wurde ersetzt.
|
||||
- `deleted`: Vektor wurde invalidiert oder der Node entfernt.
|
||||
|
||||
Eine veränderte semantische Nähe wird sichtbar, wenn eine AI-Edge aktualisiert wird. Reine Kandidatenprüfungen ohne Edge-Übernahme bleiben über die Activity-Metadaten wie `semantic_similarity`, `confidence` und `candidate_comparisons` nachvollziehbar.
|
||||
## Queue-Diagnostik
|
||||
|
||||
## Laufbewertung
|
||||
Die Ollama-/Research-Zusammenfassung zeigt neben Active/Waiting auch Operationstypen wie:
|
||||
|
||||
Das Dashboard fasst zusammengehörige Events zu Läufen zusammen:
|
||||
```text
|
||||
searxng.search
|
||||
web.fetch
|
||||
ollama.chat
|
||||
ollama.embedding
|
||||
```
|
||||
|
||||
- KB-Lernlauf
|
||||
- AI-THINK-Zyklus
|
||||
- SearXNG-Recherche
|
||||
- autonome Rechercheaufgabe
|
||||
- Wissensabfrage
|
||||
- Artikelsynthese
|
||||
- GLPI-Synchronisierung
|
||||
- Persistenz- und Embedding-Aktionen
|
||||
|
||||
Bewertungen:
|
||||
|
||||
| Bewertung | Bedeutung |
|
||||
|---|---|
|
||||
| `positives Ergebnis` | mindestens ein Node, eine Edge oder ein Embedding wurde erzeugt |
|
||||
| `aktualisiert` | bestehende Objekte wurden geändert oder Vektoren neu berechnet |
|
||||
| `Bereinigung` | veraltete Objekte wurden entfernt |
|
||||
| `ohne Übernahme` | Prüfung lief, aber Qualitäts-, Relevanz- oder Quellenregeln verhinderten eine Übernahme |
|
||||
| `ohne Graphänderung` | Lauf endete regulär, ohne den Graphzustand zu verändern |
|
||||
| `fehlgeschlagen` | mindestens ein Fehlerereignis gehört zum Lauf |
|
||||
|
||||
## Detailgrenze
|
||||
|
||||
Bei sehr großen Erstimporten können zehntausende Nodes und Vektoren in einem einzigen Event entstehen. Deshalb werden pro Event höchstens 2.000 konkrete Detailzeilen persistiert. Die aggregierten Änderungszähler bleiben vollständig und exakt. Das Dashboard weist sichtbar auf gekürzte Detaildaten hin.
|
||||
|
||||
Die API liefert standardmäßig die neuesten konkreten Änderungen im gewählten Zeitraum. Dadurch bleibt das Dashboard auch bei großen Wissensbasen bedienbar.
|
||||
|
||||
## Performance
|
||||
|
||||
Die Aufzeichnung selbst ist absichtlich leichtgewichtig:
|
||||
|
||||
1. Graphmutationen erhöhen im Speicher konstante Zähler und sammeln begrenzte Detailinformationen.
|
||||
2. Ein Activity-Event übernimmt den aktuellen Checkpoint in eine asynchrone Queue.
|
||||
3. Bursts werden bis zu 50 ms beziehungsweise 64 Events gesammelt und gemeinsam in einer SQLite-Transaktion geschrieben.
|
||||
4. SQLite wird außerhalb des Render- und Engine-Hotpaths beschrieben.
|
||||
5. Die aufwendige strukturelle Graphanalyse wird erst beim Öffnen des Dashboards berechnet und pro Graphversion gecacht.
|
||||
6. Die animierte Gehirnansicht lädt die Analysehistorie nicht.
|
||||
|
||||
Das Analyse-Dashboard aktualisiert sich über den bestehenden SSE-Stream, aber zusammengefasst und verzögert, damit Event-Bursts nicht für jedes einzelne Ereignis eine neue Vollanalyse auslösen.
|
||||
Damit lässt sich unterscheiden, ob Arbeit wirklich ausgeführt wird oder nur auf GPU-/Queue-Kapazität wartet.
|
||||
|
||||
## HTTP-API
|
||||
|
||||
```text
|
||||
GET /api/analysis/dashboard?hours=24&limit=400
|
||||
GET /api/analysis/export?hours=24
|
||||
GET /api/analysis/export?hours=24&limit=1000
|
||||
```
|
||||
|
||||
`hours` ist auf 1 bis 2.160 Stunden begrenzt. `limit` steuert die maximale Zahl zurückgegebener Läufe und Events. Der Export liefert dieselbe Struktur als formatiertes JSON und benötigt bei gesetztem `BRAIN_API_KEY` eine Autorisierung.
|
||||
`hours` ist auf 1 bis 2.160 Stunden begrenzt. `limit` ist auf maximal 1.000 Events/Läufe begrenzt. Der Dashboard-JSON-Export verwendet standardmäßig 1.000, damit Diagnoseexporte deutlich mehr Workflow-Kontext enthalten.
|
||||
|
||||
Wesentliche Antwortbereiche:
|
||||
Neue History-Bereiche:
|
||||
|
||||
```json
|
||||
{
|
||||
"graph": {
|
||||
"summary": {},
|
||||
"node_sources": {},
|
||||
"edge_types": {},
|
||||
"vector_coverage": 0.98,
|
||||
"average_ai_confidence": 0.86,
|
||||
"average_ai_similarity": 0.91
|
||||
},
|
||||
"history": {
|
||||
"event_selection": {},
|
||||
"run_stats": [],
|
||||
"pipelines": {
|
||||
"security": {},
|
||||
"articles": {}
|
||||
},
|
||||
"runs": [],
|
||||
"events": [],
|
||||
"changes": [],
|
||||
"totals": {},
|
||||
"timeline": [],
|
||||
"change_count": 0
|
||||
},
|
||||
"system": {}
|
||||
"timeline": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Dashboardbereiche
|
||||
## Performance
|
||||
|
||||
- Ergebnisbewertung des letzten abgeschlossenen Laufs
|
||||
- aktuelle Graph-, Vektor-, Thinking-, Research-, Ollama- und Persistenzkennzahlen
|
||||
- Zeitverlauf von Erzeugungen, Aktualisierungen, Löschungen und Events
|
||||
- filterbares Laufprotokoll mit vollständigen Unterevents
|
||||
- Source-, Kind-, Origin- und Edge-Verteilungen
|
||||
- Confidence- und Similarity-Auswertung
|
||||
- Embedding- und Research-Auswertung
|
||||
- neueste Nodes und Edges
|
||||
- exaktes Änderungsjournal
|
||||
- technischer Roh-Eventstream mit ursprünglichen Metadaten und Graphcheckpoint
|
||||
Die Analyseaufzeichnung bleibt außerhalb des Engine-Hotpaths:
|
||||
|
||||
## Prozess-Lifecycle und Queue-Diagnostik
|
||||
1. Graphmutationen aktualisieren konstante Zähler und begrenzte Detaildaten.
|
||||
2. Activities übernehmen nur einen billigen Graphcheckpoint.
|
||||
3. Hintergrundtelemetrie wird vor der SQLite-Persistenz verdichtet.
|
||||
4. Audit-Records werden asynchron und gebündelt geschrieben.
|
||||
5. Die aufwendige strukturelle Graphanalyse wird erst beim Öffnen des Dashboards berechnet und nach Graphversion gecacht.
|
||||
6. Die animierte Gehirnansicht lädt die Analysehistorie nicht.
|
||||
|
||||
Research-Unteroperationen werden nicht als eigene Prozesse gezählt. Nur `research.started`/`research.completed` beziehungsweise `article.research.started`/`article.research.completed` öffnen und schließen einen Research-Lauf. `fetch.started`, `fetch.completed`, Ranking-, Material- und Evidence-Events bleiben Unterevents desselben Laufs.
|
||||
Es sind für die Observability-V2-Änderungen keine neuen ENV-Variablen erforderlich.
|
||||
|
||||
Doppelte Start-Events mit derselben nativen Run-ID erzeugen keinen zweiten aktiven Eintrag. Ältere Relationsrecherchen aus Versionen ohne explizites `research.completed` werden nach einer Grace-Period anhand eines vorhandenen `research.results`-Events als Legacy-Abschluss rekonstruiert, statt dauerhaft als `läuft` angezeigt zu werden.
|
||||
## Production Readiness v1
|
||||
|
||||
Die Ollama-Zusammenfassung zeigt neben dem gemeinsamen Active/Waiting-Zähler auch die aktiven/wartenden Operationen für Search, Fetch, Chat und Embedding. Dadurch lässt sich unterscheiden, ob tatsächlich mehrere Arbeiten parallel laufen oder lediglich auf Ollama-/Queue-Kapazität gewartet wird.
|
||||
Das Dashboard unterscheidet jetzt globale Timeline-Deltas von kausal einem Workflow zugeordneten Mutationen. Bei Parallelität wird eine unbekannte Kausalität ausdrücklich als „nicht kausal gemessen“ angezeigt statt fremde Graphänderungen einem offenen Run zuzuschreiben. Security-Runs werden zusätzlich mit dem autoritativen Source-Inbox-Lifecycle reconciled.
|
||||
|
||||
Der Bereich **Produktionsreife** prüft Startup-Bootstrap, Audit-Verlust, Embedding-Coverage/-Dimension, Scan-Cadence, Persistenz, Ollama/Artikelmodelle, SearXNG, Agenten, Source-Inbox↔Graph und die Security-Run-Rekonstruktion. Rot ist ein Betriebsblocker; Gelb ist ein plausibler Übergangs- oder Tuningzustand.
|
||||
|
||||
@@ -76,3 +76,7 @@ Außenkanten werden nach sichtbaren Endpunkten, Relationstyp, Richtung, Herkunft
|
||||
`BRAIN_MODE` selects one of two startup graphs in the same executable. `brain` initializes the Graph, Ollama, knowledge scanner, article pipeline, Source Agent registry and Source Inbox. `agent` initializes only the source-poller runner, local dedupe/config cache and a minimal health/status HTTP server.
|
||||
|
||||
Remote discovery follows `Agent -> authenticated batch ingest -> Source Inbox -> embedding/ANN relevance classification -> candidate archive`. Article evidence acquisition follows `internal KB -> Source Inbox -> SearXNG`, and permanent graph materialization happens only after claim-level grounding.
|
||||
|
||||
## Startup-Gate und kausale Telemetrie
|
||||
|
||||
Der HTTP-Server bleibt während des Startups erreichbar. GPU-/Graph-schwere autonome Workflows warten jedoch auf den initialen Knowledge-/Embedding-Bootstrap. Ein fataler Knowledge-Scan hält den Gate geschlossen und wird periodisch erneut versucht. Workflow-Telemetrie verwendet explizite MutationStats; globale Graph-Deltas dienen nur noch der chronologischen Timeline.
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
# Article Quality v2 und modellfreie CPU-Prüfung (v8)
|
||||
|
||||
## Ziel
|
||||
|
||||
v8 trennt die Artikelqualität in zwei unabhängige Ebenen. Der mathematische CPU-Layer verwirft offensichtlich zu kurze, redundante oder schlecht evidenzgebundene Entwürfe **vor** dem teuren LLM-Review. Qwen bleibt anschließend für Aufgaben zuständig, die reine Mathematik nicht zuverlässig lösen kann: Faktentreue, semantische Vollständigkeit, Kausalität und die Frage, ob wesentliche belegbare Inhalte fehlen.
|
||||
|
||||
```text
|
||||
Gemma Author
|
||||
↓
|
||||
CPU Quality (Brain oder Agent, kein Modellaufruf)
|
||||
↓ nur bei Pass
|
||||
Qwen Claim + Coverage Review
|
||||
↓
|
||||
finale deterministische Gates
|
||||
↓
|
||||
Staging-Artikel
|
||||
```
|
||||
|
||||
Der CPU-Layer ersetzt den semantischen Reviewer bewusst **nicht vollständig**.
|
||||
|
||||
## Mathematische Metriken
|
||||
|
||||
Algorithmus: `lexical-coverage-depth-v1`.
|
||||
|
||||
Aus sichtbarem Artikel und den bereits ausgewählten Quellen werden deterministisch berechnet:
|
||||
|
||||
- Wort- und Inhaltswortzahl;
|
||||
- Zahl substantieller Abschnitte, Absätze und Listenpunkte;
|
||||
- lexikalische Diversität;
|
||||
- Absatz-Redundanz über Jaccard-Ähnlichkeit;
|
||||
- evidenzgewichtete Tokenabdeckung mit IDF-artiger Gewichtung;
|
||||
- Quellennutzung: Anteil der Quellen, deren spezifische Terminologie im Artikel tatsächlich auftaucht;
|
||||
- technische Spezifität;
|
||||
- artikeltypspezifischer Tiefenscore.
|
||||
|
||||
Harte Mindesttiefe:
|
||||
|
||||
| Typ | Mindestumfang | Mindestabschnitte |
|
||||
|---|---:|---:|
|
||||
| `reference` | 600 Wörter | 4 |
|
||||
| `concept` | 520 Wörter | 4 |
|
||||
| `decision_guide` | 520 Wörter | 4 |
|
||||
| `troubleshooting` | 500 Wörter | 4 |
|
||||
| `how_to` | 450 Wörter | 4 |
|
||||
|
||||
Bei mindestens drei Quellen muss die mathematische Quellennutzung mindestens 0,34 betragen. Evidenzalignment muss mindestens 0,48 erreichen; starke Redundanz und sehr niedrige Informationsdichte werden ebenfalls abgewiesen. Operationalen Artikeln fehlen ohne mindestens drei Schritte plus Validierung weiterhin die Voraussetzungen für einen Pass.
|
||||
|
||||
## Agent-Offload und Vertrauensgrenze
|
||||
|
||||
Ein integrierter Compute-Agent meldet zusätzlich zur Capability `vector_graph` nun `article_quality`. Das Brain kann die mathematische Prüfung auf diesen Agent auslagern.
|
||||
|
||||
Der Agent darf **keine** frei formulierten Rewrite-Anweisungen bestimmen. Nach Rückgabe rekonstruiert das Brain aus den begrenzten Metriken/Zählern selbst:
|
||||
|
||||
- Tiefenscore;
|
||||
- Gesamtscore;
|
||||
- harte Fehlercodes;
|
||||
- Pass/Fail;
|
||||
- feste Rewrite-Empfehlungen.
|
||||
|
||||
Dadurch können Agent-Antworten nicht als Prompt-Injection-Kanal für den Author dienen. Bei optionalem Offload verwendet das Brain denselben lokalen CPU-Code als Fallback. Weil der Agent dafür sichtbaren Artikel- und Quelltext erhält, ist der Offload aus Datenschutz-/Trust-Gründen standardmäßig deaktiviert. Für einen vertrauenswürdigen internen Worker `BRAIN_ARTICLE_CPU_QUALITY_AGENT_OFFLOAD=true` setzen.
|
||||
|
||||
Konfiguration:
|
||||
|
||||
```env
|
||||
BRAIN_ARTICLE_CPU_QUALITY_ENABLED=true
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_OFFLOAD=false
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_REQUIRED=false
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_WAIT=20s
|
||||
```
|
||||
|
||||
## Knowledge Article Quality v2
|
||||
|
||||
Das Author-Schema besitzt nun zusätzliche Inhaltsfelder:
|
||||
|
||||
- `technical_background`
|
||||
- `technical_details`
|
||||
- `mappings`
|
||||
- `operational_use`
|
||||
- `examples`
|
||||
- `limitations`
|
||||
|
||||
Die sichtbaren Abschnitte hängen vom Artikeltyp ab. Eine Referenz erhält beispielsweise technischen Hintergrund, Zuordnungen, operative Nutzung, Beispiele und Grenzen statt künstlicher Symptome/Fehlerbehandlung. Der Author erhält natürliche Zielspannen von etwa 500 bis 1.300 Wörtern je Artikeltyp; künstliches Aufblähen ohne belegbaren Inhalt ist ausdrücklich untersagt.
|
||||
|
||||
Der Qwen-Reviewer führt zusätzlich zur Claim-Prüfung einen Coverage-Review durch. Ein Artikel kann nur akzeptiert werden, wenn `coverage_complete=true` und `coverage_score>=0.70` ist. Für wissensintensive Artikeltypen wird der Review-Kontext im Cluster-Modus adaptiv auf mindestens etwa 12k Zeichen angehoben, soweit `BRAIN_MAX_CONTEXT_CHARS` dies erlaubt.
|
||||
|
||||
Bei autonomer Recherche darf vorhandene Web-Evidenz nicht stillschweigend verschwinden. Wenn Web-Evidenz zum finalen Review vorliegt, aber kein Claim darauf grounded ist, muss der Reviewer ihre Nichtverwendung fachlich begründen; andernfalls scheitert der Artikel.
|
||||
|
||||
Die Pipeline-ID wurde auf `adaptive_generate_review/v3-quality-v2` angehoben, damit bereits erzeugte kurze v7-Artefakte die neue Synthese nicht als bereits erledigt deduplizieren.
|
||||
|
||||
## Regelmäßige semantische Nähe und sanfte Layout-Entzerrung
|
||||
|
||||
Die bestehenden Embeddings werden regelmäßig neu mathematisch bewertet, ohne einen neuen Embedding- oder Chat-Aufruf auszulösen:
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_REEVALUATE_INTERVAL=30m
|
||||
```
|
||||
|
||||
Der `semantic_neighbor`-Layer wird dabei mit demselben mutual-kNN/local-scaling-Verfahren neu berechnet. Der Job kann wie bisher über `vector_graph` auf einen Agent ausgelagert werden.
|
||||
|
||||
Zusätzlich kann die Visualisierung große dichte Wolken schrittweise in Richtung des semantischen 3D-Layouts bewegen:
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT=false
|
||||
BRAIN_VECTOR_GRAPH_RELAX_LAYOUT=true
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_RELAX_INTERVAL=2h
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_BLEND=0.08
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_MAX_SHIFT=0.035
|
||||
```
|
||||
|
||||
`BRAIN_VECTOR_GRAPH_LAYOUT=false` bedeutet weiterhin: kein harter Layout-Austausch. Die Relaxation verwendet stattdessen standardmäßig nur 8 % des Zielvektors pro Zyklus und begrenzt die maximale Positionsänderung auf 0,035. Sehr dichte räumliche Zellen werden deterministisch leicht auseinandergezogen. Bewegungen unter 0,00075 werden nicht persistiert, damit periodische Layoutpflege nicht tausende SQLite-Zeilen wegen Rundungsrauschen dirty markiert.
|
||||
|
||||
Die Positionspflege verändert **keine fachlichen Relationstypen**. Sie ist eine abgeleitete Visualisierungseigenschaft.
|
||||
|
||||
## Grenzen der CPU-Prüfung
|
||||
|
||||
Mathematik kann zuverlässig erkennen, dass ein Text zu kurz, redundant, strukturell flach, terminologisch dünn oder kaum mit den Quellen überlappend ist. Sie kann jedoch nicht sicher entscheiden, ob:
|
||||
|
||||
- eine Aussage faktisch korrekt ist;
|
||||
- eine Ursache-Wirkungs-Beziehung stimmt;
|
||||
- eine technische Empfehlung gefährlich oder fachlich falsch ist;
|
||||
- ein wesentlicher semantischer Aspekt trotz ähnlicher Wörter fehlt;
|
||||
- zwei Aussagen einander inhaltlich widersprechen.
|
||||
|
||||
Darum ist der CPU-Layer ein billiger Vorfilter und Qualitätsmesser, kein Ersatz für Claim-/Coverage-Review.
|
||||
@@ -0,0 +1,53 @@
|
||||
# Autonomous Opportunity Scoring v5
|
||||
|
||||
## Trennung der Ebenen
|
||||
|
||||
v5 trennt drei Entscheidungen explizit:
|
||||
|
||||
1. **Deterministisches Graphsignal** – `raw_score` und `novelty`
|
||||
2. **LLM-Planerurteil** – `model_worthy` und `model_priority`
|
||||
3. **Schedulerentscheidung** – `final_priority`, Cooldown, Cycle-Limit und Queue-Ergebnis
|
||||
|
||||
Damit ist ein `0 Tasks`-Scan nicht mehr mehrdeutig.
|
||||
|
||||
## Orphan-Cluster
|
||||
|
||||
Die Clusterbildung verwendet ausschließlich bereits vorhandene Graph-/Taxonomiedaten. Sie ist keine neue Relation und verändert den Graph nicht.
|
||||
|
||||
Breite Features werden anhand ihrer Dokumenthäufigkeit verworfen. Für eine Paarbeziehung sind mindestens zwei gemeinsam geteilte Features erforderlich. Dadurch erzeugt eine Kategorie wie `IT-Security` alleine keinen Cluster.
|
||||
|
||||
Die Cluster sind Research-Hinweise, keine Behauptung von `same_topic`.
|
||||
|
||||
## Erwartete Analyseausgabe
|
||||
|
||||
Beispiel:
|
||||
|
||||
```json
|
||||
{
|
||||
"last_scan": {
|
||||
"candidate_count": 8,
|
||||
"created": 1,
|
||||
"rejection_counts": {
|
||||
"accepted": 1,
|
||||
"model_not_worthy": 4,
|
||||
"priority_below_threshold": 2,
|
||||
"cooldown_or_duplicate": 1
|
||||
},
|
||||
"decisions": [
|
||||
{
|
||||
"topic": "ZFS / Snapshot / Restore",
|
||||
"signal_type": "orphan_cluster",
|
||||
"raw_score": 0.71,
|
||||
"novelty": 0.84,
|
||||
"model_worthy": true,
|
||||
"model_priority": 0.78,
|
||||
"final_priority": 0.76,
|
||||
"accepted": true,
|
||||
"recommended_action": "queued"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Die Zahlen im Beispiel sind illustrativ; im Betrieb stammen sie aus dem jeweiligen Scan.
|
||||
@@ -0,0 +1,123 @@
|
||||
# Autonomous Research Quality v6
|
||||
|
||||
## Ziel
|
||||
|
||||
v6 verschiebt den Engpass hinter die bereits funktionierende autonome Opportunity-Kette. Der Realbetrieb mit v5 zeigte:
|
||||
|
||||
- autonome Opportunity-Erkennung funktioniert,
|
||||
- ein Orphan-Cluster wurde erfolgreich als Research-Task ausgeführt,
|
||||
- Primärevidenz wurde gelernt und mit Knowledge-Nodes verbunden,
|
||||
- die nachgelagerte Artikelsynthese scheiterte jedoch an einem zu breiten Multi-Error-Artikelziel,
|
||||
- mehrere Opportunity-Cluster bestanden aus Taxonomie-/Token-Rauschen,
|
||||
- starke Primärquellen konnten am Snippet-Vorabruf scheitern, bevor ihr Volltext geprüft wurde.
|
||||
|
||||
v6 adressiert genau diese drei Punkte, ohne Vector-Schwellen oder das finale Evidence-Quality-Gate zu lockern.
|
||||
|
||||
## 1. Kohärente Orphan-Cluster statt Connected-Component-Chaining
|
||||
|
||||
v5 verband Orphans zunächst paarweise und bildete anschließend Connected Components. Dadurch konnte eine Kette `A~B`, `B~C`, `C~D` einen großen Cluster erzeugen, obwohl A und D keinen gemeinsamen fachlichen Kern besitzen.
|
||||
|
||||
v6 verwendet stattdessen **exakte gemeinsame Feature-Kerne**:
|
||||
|
||||
1. Nur produktive Knowledge-Orphans werden betrachtet.
|
||||
2. `mentions` und `categorized_as` liefern Taxonomiefeatures.
|
||||
3. Features mit Dokumenthäufigkeit > 64 werden weiterhin ausgeschlossen.
|
||||
4. Zusätzlich werden schwache Token-/Boilerplate-Features wie `Found`, `Not`, `Many`, `Too`, `Permission`, `ist`, `Datei`, `file` und `sst` nicht als Clusteranker verwendet.
|
||||
5. Ein Cluster entsteht nur, wenn **alle Mitglieder dieselben mindestens zwei spezifischen Features** teilen.
|
||||
6. Gruppen über 32 Nodes werden nicht als Mega-Opportunity verwendet. Sie werden über ein drittes spezifisches Feature gesplittet; bleibt keine ausreichend kleine Untergruppe, wird die breite Gruppe verworfen.
|
||||
7. Nahezu identische Gruppen werden per Node-Jaccard unterdrückt.
|
||||
|
||||
Neue Diagnosesignale:
|
||||
|
||||
- `cluster_density`
|
||||
- `core_feature_coverage`
|
||||
- `core_taxonomy_feature_count`
|
||||
- `cluster_size_limit`
|
||||
- `split_strategy=exact-shared-feature-core-v2`
|
||||
|
||||
Die Clusterbildung bleibt rein deterministisch und erzeugt keine Graph-Edges.
|
||||
|
||||
## 2. Begrenzter Volltext-Probeabruf für Primärquellen
|
||||
|
||||
Ein Search-Snippet kann bei konkreten Fehlercodes sehr kurz sein. v5 konnte deshalb z. B. einen passenden Microsoft-Learn-Treffer ablehnen, bevor die eigentliche Seite gelesen wurde.
|
||||
|
||||
v6 ergänzt einen engen Sonderpfad:
|
||||
|
||||
- maximal **ein** zusätzlicher Primärquellen-Probeabruf pro Research-Query,
|
||||
- nur `source_quality=primary` oder `authoritative`,
|
||||
- Mindest-Quellenqualität >= 0.75 bzw. das konfigurierte Minimum,
|
||||
- der deterministische Topic-/Entity-Guard muss bestanden sein,
|
||||
- konkrete Query-/Topic-Abdeckung muss vorhanden sein.
|
||||
|
||||
Der Modus heißt in der Telemetrie:
|
||||
|
||||
`authoritative_exploration`
|
||||
|
||||
Wichtig: Dieser Pfad umgeht **nur** die Snippet-Vorabrufschwelle. Nach dem Fetch gelten unverändert:
|
||||
|
||||
- Fulltext-Relevanzprüfung,
|
||||
- Topic Guard,
|
||||
- Source Quality,
|
||||
- Actionability, soweit die Wissenslücke sie verlangt,
|
||||
- Reviewer-/Grounding-Gates.
|
||||
|
||||
Eine fachfremde offizielle Domain wird dadurch nicht automatisch akzeptiert.
|
||||
|
||||
## 3. Multi-Error-Research wird vor Artikelsynthese fokussiert
|
||||
|
||||
Autonome Recherche darf mehrere verwandte Fehlercodes gemeinsam untersuchen. Ein daraus erzeugter Artikel soll aber nicht automatisch alle Fehlercodes als einen generischen How-To zusammenfassen.
|
||||
|
||||
Wenn ein autonomer Task mehrere konkrete Hex-Fehlercodes (`0x...`) enthält:
|
||||
|
||||
1. Die Research-Phase bleibt breit.
|
||||
2. Nach der Evidence-Auswahl wird jede konkrete Forschungsfrage gegen die akzeptierte Evidenz bewertet.
|
||||
3. Die am besten belegte Fehlerfrage wird als einzelnes Artikelziel gewählt.
|
||||
4. Seeds und Evidence werden für die Synthese auf dieses Ziel priorisiert.
|
||||
5. Das Event `autonomous.research.article.focused` dokumentiert die Entscheidung.
|
||||
|
||||
Damit kann beispielsweise ein CBS-/Windows-Update-Cluster mehrere Codes recherchieren, aber eine vorhandene Microsoft-Quelle zu `0x80D02002` führt anschließend zu einem fokussierten Artikelversuch für genau dieses Problem.
|
||||
|
||||
## 4. Artikeltyp-Regeln
|
||||
|
||||
Der Planner erhält klarere Typdefinitionen. Zusätzlich gilt deterministisch:
|
||||
|
||||
- konkreter Fehlercode/Fehlerzustand + vom Planner gewähltes `how_to` -> `troubleshooting`,
|
||||
- absichtliche Einrichtung/Konfiguration ohne primären Fehlerzustand bleibt `how_to`,
|
||||
- breite Code-/Mechanismusübersichten sollen `reference` oder `concept` werden.
|
||||
|
||||
Die Qualitätsanforderungen für `troubleshooting`/`how_to` bleiben bestehen. Fehlen nach der Fokussierung drei belastbare operative Schritte oder eine Validierung, wird weiterhin verworfen statt Inhalt zu erfinden.
|
||||
|
||||
## Neue Research-Telemetrie
|
||||
|
||||
`article.research.candidates` enthält zusätzlich:
|
||||
|
||||
- `authoritative_exploration_eligible_count`
|
||||
- `authoritative_exploration_selected_count`
|
||||
|
||||
Die `candidate_decisions` unterscheiden nun:
|
||||
|
||||
- `strict`
|
||||
- `exploration`
|
||||
- `authoritative_exploration`
|
||||
- `deferred`
|
||||
- `rejected`
|
||||
|
||||
## Erwarteter nächster Realtest
|
||||
|
||||
Konfiguration unverändert lassen:
|
||||
|
||||
- Learning = On
|
||||
- Eigenständige Wissensanreicherung = On
|
||||
- Nur im Leerlauf = On
|
||||
- Thinking = Off
|
||||
- Verarbeitungsmodus = Cluster
|
||||
- mindestens ein Agent
|
||||
|
||||
Im nächsten `brain-analysis.json` besonders prüfen:
|
||||
|
||||
1. Keine Rauschcluster mit den oben genannten schwachen Tokenankern.
|
||||
2. Keine `orphan_cluster` > 32 Nodes.
|
||||
3. `cluster_density` und `core_feature_coverage` bei Orphan-Clustern.
|
||||
4. `authoritative_exploration_selected_count` bei Queries mit schwachen Snippets und starken Primärquellen.
|
||||
5. `autonomous.research.article.focused` bei Multi-Error-Tasks.
|
||||
6. Ob fokussierte `troubleshooting`-Artikel erstmals das operative Quality-Gate bestehen.
|
||||
@@ -0,0 +1,55 @@
|
||||
# Autonomous Research Routing v7
|
||||
|
||||
v7 hardens the three routing points exposed by the v6 real-world run without changing the autonomous-research interval or vector thresholds.
|
||||
|
||||
## 1. Facet-aware primary-source exploration
|
||||
|
||||
Broad comparison/integration questions can contain more than one technical entity. A single primary source is no longer required to cover the whole compound question before it may be fetched.
|
||||
|
||||
Example:
|
||||
|
||||
- facet A: `OWASP SAMM`
|
||||
- facet B: `MITRE ATT&CK`
|
||||
- integration question: how both can be combined
|
||||
|
||||
For a low-relevance search snippet, v7 may fetch at most one `primary`/`authoritative` result per recognized entity facet, with at most two such facet probes per research query. The candidate must contain the facet's technical entity terms. Generic official pages do not qualify.
|
||||
|
||||
This is only a prefetch exception. The fetched full text still passes the normal model/deterministic evidence assessment, minimum quality threshold, source filter and later article claim review.
|
||||
|
||||
New candidate telemetry includes `authoritative_facet` on the per-result decision. Existing `authoritative_exploration_eligible_count` and `authoritative_exploration_selected_count` now count bounded entity-facet probes.
|
||||
|
||||
## 2. Autonomous opportunity nodes are primary article seeds
|
||||
|
||||
When an article attempt was requested by the autonomous scanner, production Knowledge nodes carried by the opportunity are treated as required article seeds if they are present in the bounded source pool.
|
||||
|
||||
They:
|
||||
|
||||
- survive the later topic-coherence filter,
|
||||
- are prepended to the planner's selected source IDs,
|
||||
- remain auditable through `article.sources.autonomous_seeds`.
|
||||
|
||||
ANN/cluster search still adds supporting sources, but it no longer replaces the graph nodes that originally caused the knowledge-gap decision.
|
||||
|
||||
This rule is scoped to the `autonomous` synthesis trigger. Other article entry paths keep their previous source-selection behavior.
|
||||
|
||||
## 3. Compute-agent startup grace
|
||||
|
||||
The first vector rebuild may happen before a newly started Agent has registered its `vector_graph` capability. During the initial bootstrap only, v7 now uses the existing `BRAIN_VECTOR_GRAPH_AGENT_WAIT` as a registration grace period.
|
||||
|
||||
Flow:
|
||||
|
||||
1. perform the normal immediate capability check;
|
||||
2. if no compute Agent is visible and bootstrap is still running, publish `vector.graph.agent.waiting`;
|
||||
3. poll for the capability until `BRAIN_VECTOR_GRAPH_AGENT_WAIT` expires;
|
||||
4. submit the normal compute job when the Agent appears;
|
||||
5. only then use the existing local fallback when Agent offload is optional.
|
||||
|
||||
Steady-state/incremental vector rebuilds do not add this registration wait and retain the fast fallback behavior.
|
||||
|
||||
## Unchanged by v7
|
||||
|
||||
- `BRAIN_AUTONOMOUS_RESEARCH_INTERVAL` is untouched. A test value such as `10m` remains valid.
|
||||
- Autonomous Research stays independent from the Thinking switch.
|
||||
- Vector similarity/affinity thresholds are unchanged.
|
||||
- Orphan-cluster scoring and v6 cohesion rules are unchanged.
|
||||
- Full-text evidence and article quality gates are not weakened.
|
||||
@@ -40,7 +40,7 @@ Der autonome Worker selbst arbeitet absichtlich sequenziell. SearXNG-Abfragen un
|
||||
|
||||
## Eigenantrieb
|
||||
|
||||
Ein periodischer Scanner bewertet produktive Wissens-Nodes innerhalb des exakten Thinking-Source-Filters. Signale sind unter anderem:
|
||||
Ein periodischer Scanner bewertet produktive Wissens-Nodes innerhalb des exakten Thinking-Source-Filters. Der **Thinking-Schalter selbst ist dafür nicht erforderlich**; er steuert ausschließlich AI-THINK/Relation-Enrichment. Signale sind unter anderem:
|
||||
|
||||
- akzeptierte `contradicts`-Beziehungen;
|
||||
- keine gelernte externe Evidenz;
|
||||
@@ -138,7 +138,7 @@ POST /api/research/autonomous/scan
|
||||
POST /api/research/autonomous/run
|
||||
```
|
||||
|
||||
„Queue starten“ umgeht weder Leerlauf-, Thinking-, SearXNG-, Tagesbudget- noch Ollama-Kapazitätsregeln. Es verkürzt nur die Wartezeit bis zur nächsten Prüfung.
|
||||
„Queue starten“ umgeht weder Leerlauf-, SearXNG-, Tagesbudget- noch Ollama-Kapazitätsregeln. Es verkürzt nur die Wartezeit bis zur nächsten Prüfung. Autonomous Research darf auch bei ausgeschaltetem Thinking laufen.
|
||||
|
||||
## Verarbeitung einer Aufgabe
|
||||
|
||||
@@ -220,7 +220,7 @@ Der linke Activity-Feed zeigt Opportunity-Scans, Einreihung, Start, Abschluss un
|
||||
|
||||
## Source-Filter
|
||||
|
||||
Der autonome Graphscanner und die Seed-Auswahl verwenden den exakten Thinking-Source-Filter. Externe Volltextbelege besitzen als `source` ihre Domain. Soll autonome Recherche neue Domains uneingeschränkt lernen dürfen, muss **Thinking → Alle** aktiv sein. Eine eng begrenzte Thinking-Source-Liste verwirft Webbelege, deren Domain nicht exakt ausgewählt ist.
|
||||
Der autonome Graphscanner und die Seed-Auswahl verwenden weiterhin den exakten Thinking-Source-Filter als **Scope-Einstellung**, unabhängig davon, ob der Thinking-Schalter an oder aus ist. Externe Volltextbelege besitzen als `source` ihre Domain. Eine eng begrenzte Thinking-Source-Liste kann daher weiterhin Webbelege verwerfen, deren Domain nicht exakt ausgewählt ist; für uneingeschränkte autonome Recherche muss dieser Source-Filter leer/auf „Alle“ stehen.
|
||||
|
||||
## Sicherheitsgrenzen
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# Changelog – Analysis Observability v2
|
||||
|
||||
## Hintergrund
|
||||
|
||||
Ein realer 24h-Export enthielt 4.121 persistierte Events. Davon waren 1.307 `learning.scan.started`, 1.306 `learning.scan.completed` und 1.331 `embedding.batch`. Dadurch verdrängte Hintergrundtelemetrie Security-, Article- und Research-Läufe aus dem üblichen 250-Event-Fenster.
|
||||
|
||||
## Änderungen
|
||||
|
||||
- `learning.scan.started` wird im Audit nicht mehr einzeln persistiert.
|
||||
- No-op-`learning.scan.completed` werden zu `learning.scan.unchanged.aggregate` zusammengefasst.
|
||||
- `embedding.batch` wird zu `embedding.batch.aggregate` zusammengefasst; Mutation-Deltas und Detailänderungen bleiben erhalten.
|
||||
- Historische Roh-Scan- und Embedding-Events werden beim Lesen virtuell verdichtet, ohne die SQLite-Historie umzuschreiben.
|
||||
- Neue `history.event_selection`-Diagnostik zeigt Persistenz, Komprimierung, Coverage und Anzeige-Limits.
|
||||
- Neue `history.run_stats` liefert Workflow-Anzahl, Outcomes, Graphmutationen und Laufzeitstatistiken inklusive P50/P95.
|
||||
- Neue `history.pipelines.security` und `.articles` liefern fachliche Pipeline-Bilanzen.
|
||||
- Artikelläufe werden von Planung bis Terminal-Event zusammenhängend dargestellt.
|
||||
- Proactive Security erhält `source.security.started` sowie `duration_ms` in Terminal-Events.
|
||||
- Laufprotokoll kann nach Zeit, Dauer, Mutationen und Eventanzahl sortiert werden.
|
||||
- JSON-Export aus dem Dashboard fordert standardmäßig `limit=1000` an.
|
||||
- Analysis Center erhält eigene Sektionen für Event-Hygiene, Security Pipeline, Article Pipeline und Workflow-Kosten.
|
||||
|
||||
## Kompatibilität
|
||||
|
||||
- Keine neue ENV erforderlich.
|
||||
- Keine destruktive SQLite-Migration.
|
||||
- Bestehende Rohhistorie bleibt erhalten.
|
||||
- Präzise Security-Laufzeiten stehen erst für nach dem Upgrade gestartete Security-Verarbeitungen zur Verfügung.
|
||||
@@ -0,0 +1,60 @@
|
||||
# Article Quality Hardening – 2026-08-08
|
||||
|
||||
This corrective patch hardens autonomous knowledge-article synthesis against the failure modes observed in the production-readiness snapshot and the supplied staging articles.
|
||||
|
||||
## Corrected behavior
|
||||
|
||||
### 1. Topic-coherent source selection
|
||||
- Article topic terms are derived from the topical title core; templated suffixes after ` – ` / ` - ` no longer influence topic matching.
|
||||
- Sources must have strong topic overlap, not merely a shared generic token.
|
||||
- The pre-planner source pool keeps all directly topical sources and at most one highest-ranked supporting outlier.
|
||||
- The planner may no longer select too few sources and then implicitly widen back to the entire candidate pool.
|
||||
|
||||
### 2. Direct-topic evidence for operational articles
|
||||
- `how_to` and `troubleshooting` articles distinguish directly topical sources from supporting context.
|
||||
- Fewer than `ArticleMinSources` directly topical sources is treated as weak operational evidence.
|
||||
- With evidence acquisition enabled, adaptive mode performs focused initial research before drafting.
|
||||
- Without usable additional evidence, synthesis is skipped instead of publishing a generic operational article.
|
||||
|
||||
### 3. Deterministic task-completeness gate
|
||||
- `how_to` and `troubleshooting` drafts require at least three executable numbered solution steps.
|
||||
- They also require at least one validation step.
|
||||
- Missing steps trigger focused adaptive research even if the author model did not set `research_needed`.
|
||||
- Structurally incomplete operational drafts are rejected before the reviewer call.
|
||||
|
||||
### 4. Cross-run staging deduplication
|
||||
- Exact work/source fingerprints remain the fastest duplicate check.
|
||||
- Changed fingerprints for the same target are still allowed as legitimate refreshes.
|
||||
- Competing merge targets with at least 0.60 source-ID Jaccard overlap and matching core topic are treated as equivalent staging consolidations.
|
||||
|
||||
### 5. Ollama backpressure
|
||||
- A healthy node in cooldown is treated as temporarily busy rather than unhealthy/unavailable.
|
||||
- Callers wait behind the cooldown/reservation, bounded by their context deadline.
|
||||
- This prevents one timeout from cascading into immediate `no healthy Ollama node ... available` failures.
|
||||
|
||||
### 6. Readiness checks
|
||||
Added readiness signals for:
|
||||
- Knowledge orphan ratio (`knowledge-connectivity`).
|
||||
- Article runtime failure ratio (`article-runtime-slo`).
|
||||
- Operational article task completeness (`article-task-structure`) for newly generated articles carrying the new metadata.
|
||||
|
||||
New article metadata includes:
|
||||
- `article_type`
|
||||
- `solution_step_count`
|
||||
- `validation_step_count`
|
||||
|
||||
## Regression tests
|
||||
Added/extended tests for:
|
||||
- templated-title suffix removal;
|
||||
- strong topic matching versus shared generic terms;
|
||||
- the observed Rate Limit / Web Security / Purple Team mixed-source cluster;
|
||||
- direct-topic source counting;
|
||||
- operational research query construction;
|
||||
- mandatory operational steps and validation;
|
||||
- source-overlap deduplication;
|
||||
- Ollama cooldown waiting.
|
||||
|
||||
## Validation performed in this environment
|
||||
Targeted engine tests, Ollama tests and a compile check of `internal/web` passed with the installed Go 1.23.2 toolchain using a temporary no-op SQLite module only for compile-only/unit paths that do not access SQLite.
|
||||
|
||||
The project declares Go 1.26 and depends on `modernc.org/sqlite v1.37.1`. This environment has no network access and does not have the Go 1.26 toolchain or the SQLite module cached, so the full integration test suite could not be executed here. A full-suite attempt failed at test setup because the temporary SQLite stub intentionally does not register the `sqlite` SQL driver, not because of the patched logic.
|
||||
@@ -0,0 +1,43 @@
|
||||
# Changelog – Article Quality & Semantic Relaxation v8
|
||||
|
||||
## Added
|
||||
|
||||
- model-free `internal/articlequality` package (`lexical-coverage-depth-v1`);
|
||||
- Source-Agent capability `article_quality` with claim/result compute protocol;
|
||||
- CPU quality gate before Qwen review, optional agent offload and local fallback;
|
||||
- persistent CPU quality metrics in article metadata and runtime staging nodes;
|
||||
- type-specific article depth fields: technical background/details, mappings, operational use, examples and limitations;
|
||||
- Qwen coverage review (`coverage_complete`, `coverage_score`, missing topics/issues);
|
||||
- periodic semantic-neighbor reevaluation from existing embeddings;
|
||||
- slow semantic layout relaxation with density spreading, blend and maximum-shift limits;
|
||||
- readiness check for article-quality compute agents;
|
||||
- UI capability indicator for `Artikel-CPU`.
|
||||
|
||||
## Changed
|
||||
|
||||
- reference/concept articles no longer receive a reduced answer minimum;
|
||||
- visible formatting is article-type-specific instead of using generic operational sections everywhere;
|
||||
- reference/concept review gets a larger evidence context in clustered mode;
|
||||
- deterministic/CPU checks run before expensive reviewer inference and again after revisions;
|
||||
- autonomous synthesis must ground collected research evidence or explicitly justify its non-use;
|
||||
- article pipeline identity is now `adaptive_generate_review/v3-quality-v2`;
|
||||
- the substance heuristic recognizes all new article-depth fields;
|
||||
- agent-returned article-quality decisions are canonicalized by the Brain so an Agent cannot inject arbitrary rewrite instructions;
|
||||
- negligible semantic layout moves are suppressed to reduce persistence churn.
|
||||
|
||||
## Default environment additions
|
||||
|
||||
```env
|
||||
BRAIN_ARTICLE_CPU_QUALITY_ENABLED=true
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_OFFLOAD=false
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_REQUIRED=false
|
||||
BRAIN_ARTICLE_CPU_QUALITY_AGENT_WAIT=20s
|
||||
|
||||
BRAIN_VECTOR_GRAPH_REEVALUATE_INTERVAL=30m
|
||||
BRAIN_VECTOR_GRAPH_RELAX_LAYOUT=true
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_RELAX_INTERVAL=2h
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_BLEND=0.08
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT_MAX_SHIFT=0.035
|
||||
```
|
||||
|
||||
The existing `BRAIN_AUTONOMOUS_RESEARCH_INTERVAL` is unchanged. A test value such as `10m` remains valid and is not interpreted as an error or cooldown setting.
|
||||
@@ -0,0 +1,14 @@
|
||||
# Autonomous Research / WAL idle hardening v4
|
||||
|
||||
## Änderungen
|
||||
|
||||
- Autonomous Research ist nicht mehr an `ThinkingEnabled` gekoppelt. `Thinking=false` deaktiviert nur AI-THINK/Relation-Enrichment; autonome Opportunity-Scans und Research-Worker bleiben bei aktiviertem Autonomous Research funktionsfähig.
|
||||
- Die manuellen Endpunkte `/api/research/autonomous/scan` und `/api/research/autonomous/run` verlangen ebenfalls kein Thinking mehr, sondern nur aktiviertes Autonomous Research und eine verfügbare Research-/SearXNG-Pipeline.
|
||||
- Das bestehende Idle-/Ollama-Kapazitätsgate bleibt unverändert: bei `Nur im Leerlauf` konkurriert Autonomous Research nicht mit interaktiven oder bereits laufenden Modelljobs.
|
||||
- Große SQLite-WAL-Dateien werden bei sauberem Graphzustand ab 128 MiB per `wal_checkpoint(TRUNCATE)` verdichtet. Ein BUSY-Zustand ist kein Persistenzfehler und wird beim nächsten Intervall erneut versucht.
|
||||
- Auch ein ansonsten leerer Persistenz-Intervalllauf prüft jetzt das WAL; zuvor kehrte der Coordinator vor dem Checkpoint zurück.
|
||||
- Persistenzstatus und Readiness zeigen `wal_checkpoints`, den letzten WAL-Checkpoint und einen separaten Checkpoint-Fehler an.
|
||||
|
||||
## Erwarteter Regressionstest
|
||||
|
||||
Konfiguration: Learning=On, Autonomous Research=On, Idle-only=On, Thinking=Off, Clustered. Nach abgeschlossenem Bootstrap darf der Startup-Opportunity-Scan nach ca. 45 Sekunden anlaufen; der 30-Minuten-Ticker bleibt für Folge-Scans bestehen. AI-THINK-Relationen bleiben dabei weiterhin deaktiviert.
|
||||
@@ -0,0 +1,93 @@
|
||||
# Changelog – Autonomous Opportunity Observability & Orphan Signals (v5)
|
||||
|
||||
## Ziel
|
||||
|
||||
Die v4 hat Autonomous Research erfolgreich von `Thinking` entkoppelt. Im anschließenden Realbetrieb wurden pro Scan acht Graphsignale bewertet, aber keine Rechercheaufgabe erzeugt. Die Analyse zeigte bisher nur `candidate_count` und `created`, nicht die individuelle Entscheidungskette.
|
||||
|
||||
v5 macht diese Auswahl nachvollziehbar und ergänzt verbliebene Knowledge-Orphans als konservatives Cluster-Signal, ohne Graph-Schwellen zu lockern oder neue Kanten zu erzeugen.
|
||||
|
||||
## Änderungen
|
||||
|
||||
### 1. Entscheidungstelemetrie pro Opportunity
|
||||
|
||||
Jeder Opportunity-Scan hält jetzt pro Kandidat fest:
|
||||
|
||||
- `topic`
|
||||
- `source_node_ids`
|
||||
- `signal_type`
|
||||
- `raw_score`
|
||||
- `novelty` – deterministische Graph-Heuristik, kein Modellurteil
|
||||
- `evaluated`
|
||||
- `model_worthy`
|
||||
- `model_priority`
|
||||
- `final_priority`
|
||||
- `knowledge_gap`
|
||||
- `question_count`
|
||||
- `accepted`
|
||||
- `rejection_reason`
|
||||
- `recommended_action`
|
||||
- vollständige deterministische `signals`
|
||||
|
||||
Typische `rejection_reason`-Werte sind:
|
||||
|
||||
- `model_not_worthy`
|
||||
- `priority_below_threshold`
|
||||
- `cooldown_or_duplicate`
|
||||
- `cycle_task_limit_reached`
|
||||
- `idle_gate_became_busy`
|
||||
- `planner_error`
|
||||
- `enqueue_error`
|
||||
|
||||
Der Abschluss-Event `autonomous.research.scan.completed` enthält zusätzlich `rejection_counts`, `decisions` und die Zahl der `orphan_cluster_candidates`.
|
||||
|
||||
### 2. Separater Scan-Status
|
||||
|
||||
`autonomous_research.last_scan` trennt Opportunity-Scans jetzt von tatsächlich ausgeführten Research-Tasks. Dadurch ist ein erfolgreicher Scan auch dann sichtbar, wenn keine Aufgabe erzeugt wurde.
|
||||
|
||||
Enthalten sind:
|
||||
|
||||
- Start-/Endzeit
|
||||
- Trigger
|
||||
- Kandidatenanzahl
|
||||
- erzeugte Tasks
|
||||
- Rejection-Zusammenfassung
|
||||
- Entscheidungen pro Kandidat
|
||||
|
||||
### 3. Konservative Orphan-Cluster als Wissenslückensignal
|
||||
|
||||
Verbliebene Knowledge-Orphans werden ausschließlich für die Opportunity-Erkennung gruppiert.
|
||||
|
||||
Das Verfahren ist modellfrei und erzeugt keine Edges:
|
||||
|
||||
1. Bestimme produktive Knowledge-Nodes ohne Knowledge/AI/External-Beziehung.
|
||||
2. Nutze vorhandene `mentions`- und `categorized_as`-Taxonomiefeatures.
|
||||
3. Ignoriere sehr breite Features mit Dokumenthäufigkeit > 64.
|
||||
4. Zwei Orphans können nur verbunden werden, wenn sie mindestens zwei spezifische Features gemeinsam haben.
|
||||
5. Verbundene Gruppen ab drei Nodes werden als `signal_type=orphan_cluster` an den Opportunity-Planner übergeben.
|
||||
6. Die Priorität berücksichtigt Clustergröße, Zahl gemeinsamer Features und eine IDF-artige Spezifität.
|
||||
|
||||
Ein einzelner gemeinsamer Hub wie `IT-Security` reicht ausdrücklich nicht aus.
|
||||
|
||||
### 4. Deterministische Novelty-Heuristik
|
||||
|
||||
`novelty` ist bewusst vom Modell getrennt. Der Wert steigt unter anderem bei:
|
||||
|
||||
- echtem Knowledge-Orphan,
|
||||
- fehlender externer Evidenz,
|
||||
- Widerspruchssignal,
|
||||
- konsistentem Orphan-Cluster.
|
||||
|
||||
Der Wert dient der Diagnose und ersetzt nicht das `model_worthy`-/`model_priority`-Urteil.
|
||||
|
||||
### 5. UI
|
||||
|
||||
Der Autonomous-Research-Status zeigt nach einem Scan zusätzlich Kandidaten, erzeugte Tasks und verworfene Kandidaten an.
|
||||
|
||||
## Tests
|
||||
|
||||
Ergänzt wurden Regressionstests für:
|
||||
|
||||
- spezifischen 3-Node-Orphan-Cluster mit zwei gemeinsamen Taxonomiefeatures,
|
||||
- kein Cluster bei nur einem breiten gemeinsamen Feature,
|
||||
- vollständige Rejection-Zusammenfassung,
|
||||
- weiterhin unabhängiges Autonomous Research bei `Thinking=false`.
|
||||
@@ -0,0 +1,53 @@
|
||||
# Changelog – Autonomous Research Quality v6
|
||||
|
||||
## Ausgangslage
|
||||
|
||||
v5 bewies erstmals die vollständige autonome Kette von Orphan-Opportunity über Research-Task und Primärevidenz bis zur Artikelsynthese. Der Realbetrieb zeigte drei konkrete Restprobleme:
|
||||
|
||||
1. Transitives Taxonomie-Chaining und schwache Token erzeugten teilweise schlechte Orphan-Cluster.
|
||||
2. Passende Primärquellen konnten schon am kurzen Search-Snippet scheitern.
|
||||
3. Ein Multi-Error-Cluster wurde als breiter `how_to` geplant und anschließend wegen `solution_steps=0` korrekt verworfen.
|
||||
|
||||
## Änderungen
|
||||
|
||||
### Orphan-Cluster v2
|
||||
|
||||
- Connected-Component-Chaining entfernt.
|
||||
- Cluster benötigen einen gemeinsamen exakten Kern aus mindestens zwei spezifischen Features.
|
||||
- schwache Taxonomie-/Tokenanker werden verworfen.
|
||||
- Clustergröße auf 32 begrenzt.
|
||||
- größere Shared-Pair-Gruppen werden über ein drittes Feature gesplittet.
|
||||
- Near-Duplicate-Gruppen werden per Jaccard unterdrückt.
|
||||
- neue Kohäsions-/Split-Telemetrie.
|
||||
|
||||
### Authoritative Exploration
|
||||
|
||||
- maximal ein zusätzlicher `primary`/`authoritative` Volltext-Probeabruf pro Query.
|
||||
- Topic-/Entity-Guard bleibt zwingend.
|
||||
- Source-Quality-Mindestwert bleibt zwingend.
|
||||
- nur Snippet-Prefetch wird gelockert; Fulltext-/Reviewer-Gates bleiben unverändert.
|
||||
- neue Candidate-Modi und Counters in Analyseevents.
|
||||
|
||||
### Cluster-aware Article Intent
|
||||
|
||||
- Multi-Error-Autonomous-Tasks werden vor der Artikelsynthese auf die am besten evidenzgedeckte konkrete Fehlerfrage fokussiert.
|
||||
- neues Event `autonomous.research.article.focused`.
|
||||
- konkrete Fehlercodes werden nicht mehr als `how_to`, sondern als `troubleshooting` behandelt.
|
||||
- Planner-Prompt enthält explizite Regeln für `troubleshooting`, `how_to`, `reference`, `concept` und `decision_guide`.
|
||||
- vorhandene operative Quality-Gates bleiben unverändert streng.
|
||||
|
||||
### UI
|
||||
|
||||
- `autonomous.research.article.focused` wird im Aktivitätsfeed als „Artikelziel auf Einzelproblem fokussiert“ angezeigt.
|
||||
|
||||
## Regressionstests
|
||||
|
||||
Ergänzt wurden Tests für:
|
||||
|
||||
- Token-Rauschen erzeugt keinen Orphan-Cluster.
|
||||
- transitive Feature-Ketten werden nicht zu einem gemeinsamen Cluster.
|
||||
- exakte Orphan-Cluster melden volle Core-Coverage/Kohäsion.
|
||||
- höchstens ein Authoritative-Probeabruf pro Query.
|
||||
- Primärquellen-Probeabruf kann den Topic Guard nicht umgehen.
|
||||
- Multi-Error-Task wird auf die durch Evidenz am stärksten gestützte Fehlerfrage fokussiert.
|
||||
- konkreter Fehlercode erzwingt `troubleshooting` statt `how_to`.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Changelog: Autonomous Research Routing v7
|
||||
|
||||
## Changed
|
||||
|
||||
- Added entity-facet-aware bounded primary-source exploration for compound research questions.
|
||||
- Allow up to two distinct primary/authoritative entity facets per query, one probe per facet.
|
||||
- Keep the strict full-text evidence assessment after a facet probe.
|
||||
- Preserve autonomous opportunity production nodes as required article seeds through topic filtering and planner source selection.
|
||||
- Added `article.sources.autonomous_seeds` observability event.
|
||||
- Added initial-bootstrap Compute-Agent registration grace using the existing `BRAIN_VECTOR_GRAPH_AGENT_WAIT` value.
|
||||
- Added `vector.graph.agent.waiting` observability event.
|
||||
|
||||
## Explicitly unchanged
|
||||
|
||||
- `BRAIN_AUTONOMOUS_RESEARCH_INTERVAL` is not changed or reinterpreted.
|
||||
- No autonomous cooldown/dedupe-key behavior was changed in this release.
|
||||
- No vector graph similarity, affinity or orphan-pass thresholds were changed.
|
||||
- No article/research quality gate was lowered.
|
||||
|
||||
## Validation focus
|
||||
|
||||
Regression tests cover:
|
||||
|
||||
- two primary facets (`OWASP SAMM`, `MITRE ATT&CK`) may each receive one bounded probe;
|
||||
- a second source for the same facet is deferred;
|
||||
- a primary full-text source may provide valid partial evidence for one side of a compound comparison question;
|
||||
- an unrelated authoritative source still cannot bypass the topic/entity guard;
|
||||
- autonomous opportunity seeds survive topic filtering and are prepended to planner source IDs;
|
||||
- startup Agent grace is active only during bootstrap and uses the configured vector-agent wait.
|
||||
@@ -0,0 +1,33 @@
|
||||
# Changelog – Docker Controller v9
|
||||
|
||||
## Neu
|
||||
|
||||
- Source Agent Capability `docker_controller`; optional `docker_compose`.
|
||||
- Docker Engine API Client über Unix Socket.
|
||||
- Persistente Controller-Policy, Profile und Jobqueue in `source-agents.db`.
|
||||
- zentraler Hauptschalter, autonome Freigabe, Dry-Run, destruktive Freigabe, Parallelitäts-/Timeoutlimits.
|
||||
- Image-Allowlist, Compose-Root-Allowlist, geschützte Ressourcen.
|
||||
- typisierte Container-/Network-/Volume-/Compose-Aktionen ohne freien Brain-Shell-Kanal.
|
||||
- Live-Autorisierungsprüfung laufender Jobs alle zwei Sekunden.
|
||||
- Controller-Inventar im Agent-Heartbeat und Dashboard.
|
||||
- Dashboard-Schnellaktionen für Container sowie Networks/Volumes.
|
||||
- autonome Evidence-Zweitprüfung; erfolgreiche Probe wird als Provenienz am externen Research-Node gespeichert.
|
||||
- autonome Health-Recovery auf genau dem Agent, der den unhealthy Container meldet.
|
||||
- autonome Compute-Capacity-Anforderung vor lokalem Vector-Graph-Bootstrap-Fallback.
|
||||
- geplante Compose-Smoke-Tests.
|
||||
- Controller-Readiness und Analyse-/Status-Telemetrie.
|
||||
- sicherer Docker-Compose-Override mit opt-in Docker.sock-Mount.
|
||||
|
||||
## Härtung
|
||||
|
||||
- Controller standardmäßig aus; Dry-Run standardmäßig an.
|
||||
- Docker.sock wird im normalen Agent-Deployment nicht gemountet.
|
||||
- autonome Aktionen nur aus explizit freigegebenen Profilen und nur vier vorgegebenen Workflow-Typen.
|
||||
- keine freie `docker exec`-/Shell-Aktion.
|
||||
- Container Create: kein privileged, keine Host-/Container-Netzwerke, read-only Rootfs, CapDrop ALL, no-new-privileges, CPU/RAM-Limits, nur Named Volumes.
|
||||
- Evidence-Probe blockiert localhost/private/link-local Ziele und prüft DNS-Auflösung vor Start.
|
||||
- offensichtliche Inline-Secrets in Controller-Container-ENV werden vor Persistierung abgewiesen.
|
||||
- Heartbeat-Inventar ist begrenzt und überträgt keine Container-Labels.
|
||||
- Image-Allowlist verwendet explizite Präfixsemantik und behandelt Registry-Ports korrekt.
|
||||
- zentrale Jobdauer wird auf Agent-Seite aus `max_job_duration` erneut durchgesetzt.
|
||||
- Autonomous-/Destructive-Off wird auch während laufender Jobs über die Autorisierungsprüfung wirksam.
|
||||
@@ -0,0 +1,9 @@
|
||||
# Production Readiness v1.1
|
||||
|
||||
- Readiness UI renders every check explicitly in a responsive grid and orders blockers/warnings before passes.
|
||||
- Static embedded HTML/JS/CSS are served with `Cache-Control: no-store` so upgrades cannot mix new HTML with stale analysis JavaScript.
|
||||
- Compacted learning/embedding audit events use a process-local monotonic aggregate sequence in addition to timestamps; this removes the remaining Windows coarse-clock ID collision.
|
||||
- Analysis audit exposes queue-vs-persistence drop counters plus last drop reason/time.
|
||||
- Audit queue capacity increased from 4096 to 16384 records to absorb bootstrap bursts.
|
||||
- Readiness no longer treats an unexercised Source-Agent/Security path as green; it reports a warning until an enabled agent/task and lifecycle have actually been observed.
|
||||
- Build version: `production-readiness-v1.1`.
|
||||
@@ -0,0 +1,39 @@
|
||||
# Production Readiness v1.2
|
||||
|
||||
Diese Version schließt die beim End-to-End-Test mit `brain-analysis(9)`, `data.zip` und `staging.zip` sichtbar gewordenen Artikel-, Provenienz-, Embedding- und Analysefehler.
|
||||
|
||||
## Release-Blocker behoben
|
||||
|
||||
- Artikel-Batching verwendet `topic_guard=strict-v2`. Generische Security-Begriffe und Kategorien dürfen fachfremde Relationen nicht mehr zu einem gemeinsamen Artikelauftrag verbinden.
|
||||
- Ein geteilter Seed verbindet zwei Artikelkandidaten nur noch dann, wenn der Seed selbst ein gemeinsamer fachlicher Topic-Anker beider Relationen ist.
|
||||
- Vor dem Schreiben gilt zusätzlich ein deterministischer Mixed-Topic-Gate. Wiederholte fremde Topic-Gruppen in den ausgewählten Quellen verwerfen den Draft unabhängig vom LLM-Review.
|
||||
- Qwen-Review verlangt themen-/produkt-/technologiespezifische Details und verwirft fremde Kategorien, Keywords und Maßnahmen.
|
||||
- Öffentliche Artikel-Taxonomie wird nur noch aus den vom Author erzeugten finalen Kategorien/Keywords gebildet; Kategorien/Keywords aller Quellen werden nicht mehr blind vereinigt.
|
||||
- Artikel-Provenienz verwendet den nicht file-owned Origin `knowledge-synthesis`. `synthesized_from`, `proposes_*` und `grounded_by` überleben Staging-Reimports.
|
||||
- Legacy-Provenienz mit Origin `knowledge-staging` wird beim Reimport erhalten. Wird ein Artikel wirklich gelöscht, werden seine Runtime-Provenienz-Edges dagegen sauber mitgelöscht; keine dangling Edges.
|
||||
- `article-metadata` dient als dauerhafte Reparaturquelle. Fehlende Provenienz-Edges und strukturelle Metadaten werden idempotent rekonstruiert.
|
||||
- Zukünftige Staging-JSONs speichern ein internes `ai_think`-Objekt mit Action, Target, Source-IDs, Generation Depth, Fingerprint, Modellen und Pipeline. Sichtbarer Artikelinhalt bleibt davon getrennt.
|
||||
- Legacy-Staging-JSONs ohne `ai_think` behalten nach der ersten Sidecar-Reparatur ihre Runtime-Struktur auch bei periodischer Vollverifikation.
|
||||
- Relation-Research-Nodes werden nach akzeptierter Relation unmittelbar eingebettet. Fehlende externe Embeddings werden bei einem späteren Scan als eigener expliziter Repair-Workflow nachgeholt.
|
||||
- Readiness verlangt nach abgeschlossenem Bootstrap exakte Vektorkonsistenz: jeder vektorberechtigte Node muss ein Embedding besitzen, und die Dimension muss ausschließlich 768 sein.
|
||||
- Artikel-Run-Events besitzen native `run_id`s. Parallel laufende Artikel können nicht mehr über „latest article“ vermischt werden. Doppelte `article.failed`-Terminalevents wurden entfernt.
|
||||
- `article.cluster.started/deferred` ist Scheduling-Telemetrie und wird nicht in einen zufällig offenen Artikelrun eingehängt.
|
||||
- Learning-Mutationen werden in der Run-Bilanz ausschließlich vom terminalen `learning.scan.completed` übernommen. `graph.updated` verdoppelt die Bootstrap-Mutationen nicht mehr.
|
||||
- `deployment/docker-compose.full.yml` verwendet jetzt ebenfalls `BRAIN_SCAN_INTERVAL=5m` und `BRAIN_KNOWLEDGE_FULL_VERIFY_INTERVAL=6h`.
|
||||
- Pipeline-Fingerprint wurde auf `adaptive_generate_review/v2|topic-guard=strict-v2|provenance=v2` angehoben. Alte, mit der fehlerhaften Pipeline erzeugte Fingerprints blockieren korrigierte Neusynthesen nicht.
|
||||
|
||||
## Neues Readiness-Gate
|
||||
|
||||
`Artikel-Provenienz / Topic-Coherence` prüft für alle Knowledge-Synthesis-Artikel:
|
||||
|
||||
- sind alle erwarteten `synthesized_from`-Edges vorhanden?
|
||||
- bilden mehrere Quellen wiederholt ein fachfremdes Topic, das nicht zum Artikeltitel gehört?
|
||||
|
||||
Ein Treffer ist ein Produktionsblocker.
|
||||
|
||||
## Migration vorhandener Artikel
|
||||
|
||||
Bestehende saubere Artikel werden über ihre Sidecars automatisch repariert. Bereits erzeugte fachlich vermischte Artikel werden absichtlich **nicht automatisch gelöscht**, sondern vom Readiness-Gate rot markiert. Generated Staging-Dateien können anschließend gezielt quarantänisiert/entfernt und mit v2 neu erzeugt werden.
|
||||
- Unkeyed Telemetrie wird nicht mehr aus zeitlicher Nähe einem offenen Workflow zugerechnet. Roh-/Pipeline-Zähler bleiben erhalten, Run-Kosten bleiben kausal.
|
||||
- Grounded Web-/Inbox-Evidenz liefert explizite Node-/Vector-MutationStats und wird dem erzeugenden Artikelworkflow zugerechnet. Vom Reviewer verwendete Evidenz wird nicht durch optionale Learning-Source-Filter vom Embedding ausgeschlossen.
|
||||
- Legacy-Sidecar-Reparatur stellt zusätzlich Generation Depth, Source-Fingerprint, Modelle, Pipeline und Produktionsanteile wieder her, damit ein Syntheseartikel nach Restart nicht fälschlich wie eine Primärquelle behandelt wird.
|
||||
@@ -0,0 +1,34 @@
|
||||
# Production Readiness v1
|
||||
|
||||
Diese Version schließt die bei einem frischen Graph-Reset sichtbar gewordenen Mess-, Lifecycle- und Startup-Probleme.
|
||||
|
||||
## Korrekturen
|
||||
|
||||
- Audit-Event-IDs enthalten Prozess-Nonce + Nanosekunden + atomare Sequenz. Windows-Clock-Ticks können keine Security-Terminalevents mehr überschreiben.
|
||||
- Das Analysejournal ist append-only. Ein fehlerhafter Audit-Batch fällt auf Einzelpersistierung zurück; nur tatsächlich verlorene Records erhöhen `dropped_events`.
|
||||
- Workflow-Mutationen werden nur noch kausal/explizit zugerechnet. Globale Graph-Deltas bleiben Timeline-Daten und werden keinem parallel offenen Security-/Thinking-/Artikel-Lauf als eigene Kosten zugeschrieben.
|
||||
- Security-Lifecycles werden zusätzlich im Source-Inbox-Store geführt und mit dem Audit rekonstruiert. Ein fertiger Store-Record wird nicht mehr als `läuft` angezeigt, nur weil ein Terminalevent fehlt.
|
||||
- Source-Inbox Claims sind state-guarded und RowsAffected-geprüft. Nach Prozessneustart werden alte `processing`-Claims sofort freigegeben.
|
||||
- Fehlende Graph-Materialisierungen nach einem Crash zwischen `source-agents.db` und dem verzögerten Graph-Flush werden beim Startup automatisch auf `candidate/queued` zurückgesetzt und idempotent neu verarbeitet.
|
||||
- Source-Inbox-Fehlerpfade überschreiben nicht mehr die vollständige Metadata-Map.
|
||||
- Source-Inbox-Evidenz trägt `source_inbox_id`; Claim-Grounding markiert exakt die verwendete Content-Version als `used`.
|
||||
- Security Severity/Eventtypen werden normalisiert; CVE-IDs werden syntaktisch validiert.
|
||||
- Initialer Knowledge-/Embedding-Bootstrap sperrt Security, Thinking, Autonomous Research und GLPI-Sync. Ein fataler Bootstrap-Fehler öffnet den Gate nicht; erfolgreiche Folgescans können den Start automatisch reparieren.
|
||||
- Learning misst nur eigene Mutationen und embeded im Normalfall nur Knowledge/AI-THINK. Externe Security-/Research-Nodes bleiben Eigentum ihres Workflows; 256D-Fallback-Reparatur darf weiterhin global re-embedden.
|
||||
- Knowledge-Scans verwenden zuerst einen Dateimanifest-Fingerprint. Unveränderter Bestand wird ohne JSON-Parsing/Graph-Rebuild beendet. Alle 6h erfolgt standardmäßig eine vollständige Inhaltsverifikation als Sicherheitsnetz.
|
||||
- Default `BRAIN_SCAN_INTERVAL` ist 5m statt 20s.
|
||||
- Embedding-Batches speichern echte `duration_ms` und lassen sich damit als Kosten messen.
|
||||
- Hochkonfidente, nicht zeitkritische interne `same_topic`/`related_to`-Relationen starten keine unnötige SearXNG-Recherche mehr.
|
||||
- Query-Läufe besitzen eigene Run-IDs und können bei Parallelität nicht mehr vermischt werden.
|
||||
- Analyseexport enthält jetzt auch die Source-Agent-Zusammenfassung.
|
||||
- Produktionsreife-Panel prüft Bootstrap, Audit, Embeddings, Scan-Cadence, Persistenz, Ollama/Modelle, SearXNG, Agents, Source-Inbox↔Graph und Security-Run-Rekonstruktion.
|
||||
|
||||
## Neue ENV
|
||||
|
||||
```env
|
||||
# 0 deaktiviert die periodische Vollverifikation. Default: 6h.
|
||||
BRAIN_KNOWLEDGE_FULL_VERIFY_INTERVAL=6h
|
||||
|
||||
# Neuer Default; bestehende explizite Werte bleiben wirksam.
|
||||
BRAIN_SCAN_INTERVAL=5m
|
||||
```
|
||||
@@ -0,0 +1,45 @@
|
||||
# Changelog: Vector / Agent / Research hardening v3
|
||||
|
||||
## Added
|
||||
|
||||
- optional focused orphan second pass over the full existing embedding corpus;
|
||||
- vector-guided THINK candidate selection;
|
||||
- authenticated Source-Agent `vector_graph` CPU job capability;
|
||||
- compact float32 vector-job transport;
|
||||
- Brain-side result and graph-version validation with local fallback;
|
||||
- Agent compute diagnostics and readiness signal;
|
||||
- deterministic research primary-topic/entity guard;
|
||||
- dedicated SQLite WAL connection for analysis/audit persistence.
|
||||
|
||||
## Changed
|
||||
|
||||
- AI-THINK uses unreviewed mathematical neighbours before another embedding search;
|
||||
- material-collection research can no longer fetch an obviously different primary entity merely because generic Security/Hardening terms match;
|
||||
- Agent UI shows whether the `vector_graph` CPU capability has been advertised;
|
||||
- Docker/.env examples expose all vector orphan/offload and Agent compute settings;
|
||||
- status output exposes orphan-pass/offload/vector-guided settings.
|
||||
|
||||
## Safety properties
|
||||
|
||||
- Agent result validation now bounds link counts, enforces orphan-focus membership, rejects duplicate/unknown endpoints, and rejects unexpected/non-finite layout positions.
|
||||
|
||||
- Agents never write graph state directly.
|
||||
- Agent compute cannot introduce arbitrary semantic relation types.
|
||||
- Remote results are rejected on stale graph version or invalid endpoints/numbers.
|
||||
- Offload is optional by default and falls back to local CPU calculation.
|
||||
- No Chat or Embed call occurs inside a vector compute job.
|
||||
|
||||
## Validation in the supplied environment
|
||||
|
||||
The project declares Go 1.26, while the available local toolchain is Go 1.23.2 and internet/toolchain download is unavailable. Validation therefore used a temporary Go-1.23 compile copy with `modernc.org/sqlite` replaced by a compile-only stub. This verifies type/build integration but is **not** a substitute for the real SQLite integration suite.
|
||||
|
||||
Passed in that compile environment:
|
||||
|
||||
- compile of all `internal/...` packages/tests (`-run '^$'`);
|
||||
- full `internal/vectorgraph` tests;
|
||||
- full `internal/config` tests;
|
||||
- Source-Agent vector wire/compute/broker tests;
|
||||
- Research Topic Guard regressions;
|
||||
- JavaScript syntax check for Source-Agent UI.
|
||||
|
||||
The real Go-1.26 + modernc SQLite test suite should still be run in CI or the target development environment before deployment.
|
||||
@@ -0,0 +1,55 @@
|
||||
# Article Quality + Mathematical Vector Graph – 2026-08-08
|
||||
|
||||
This second corrective patch is based on the post-hardening analysis snapshot. The first patch successfully stopped low-quality staging articles, but exposed three remaining bottlenecks: planner gaps stopped at two coherent sources, research did not reliably fill missing operational fields, and a small number of meta-language rewrites still failed hard. The security source agent also treated merely related products as direct KB updates.
|
||||
|
||||
## 1. Planner gaps now trigger directed research
|
||||
|
||||
- An operational plan with two coherent internal sources no longer stops immediately.
|
||||
- The pipeline derives deterministic topic-specific queries for official documentation, prerequisites, commands, rollback, validation, troubleshooting and logs.
|
||||
- External evidence remains separate provenance; it is never silently inserted into the internal source list.
|
||||
- The normal three-internal-source policy is relaxed to two only when the reviewer actually grounds at least one external research item. Fetching a page alone does not relax the quality gate.
|
||||
|
||||
## 2. Research follows the missing article field
|
||||
|
||||
- `how_to` / `troubleshooting` needs evidence if it has fewer than three solution steps **or** no validation step.
|
||||
- Missing procedure and missing validation create separate targeted research queries.
|
||||
- This converts the deterministic task-completeness failure into a research-routing signal instead of merely rejecting after drafting.
|
||||
|
||||
## 3. Meta-language failures become controlled quality outcomes
|
||||
|
||||
- Meta/planning-only lines are removed deterministically first.
|
||||
- A technically useful remainder is accepted without a second model call.
|
||||
- Only meta-dominated content gets one targeted model rewrite.
|
||||
- Remaining sparse content goes through the existing structure/quality rejection path instead of raising `article rewrite still contains planning or assessment language` as a hard pipeline error.
|
||||
|
||||
## 4. Security Source Agent: direct applicability guard
|
||||
|
||||
- Security advisories are still allowed to materialize as external verified evidence.
|
||||
- `security_update_for` now requires deterministic direct product or CVE overlap with the target KB title/keywords.
|
||||
- Merely related cases become `security_context_for` with lower confidence/weight.
|
||||
- Regression cases cover `jsoup` vs. CSRF and generic `Linux Kernel` advisories vs. Secure Boot; direct `systemd` and exact CVE matches remain updates.
|
||||
|
||||
## 5. Symmetric evidence connectivity
|
||||
|
||||
Graph analysis now treats Knowledge↔External evidence as connected regardless of edge direction. This matters because research/security evidence commonly points `external -> knowledge`.
|
||||
|
||||
## 6. Experimental vector-only graph layer
|
||||
|
||||
Added `internal/vectorgraph`, a deterministic stdlib-only implementation that:
|
||||
|
||||
- reuses existing embeddings;
|
||||
- uses sparse LSH candidate generation and bounded exact Cosine scoring;
|
||||
- constructs `semantic_neighbor` edges via local scaling and mutual k-NN;
|
||||
- optionally derives deterministic 3D semantic positions;
|
||||
- performs **no additional chat or embedding call**.
|
||||
|
||||
The feature is disabled by default and configured with `BRAIN_VECTOR_GRAPH_*` variables. See `VECTOR-GRAPH-EXPERIMENT.md`.
|
||||
|
||||
## Validation
|
||||
|
||||
- `internal/vectorgraph` unit tests pass under the available Go 1.23.2 toolchain.
|
||||
- All `internal/...` packages compile with a temporary no-op SQLite module used only to bypass unavailable dependency download; this is compile validation, not a database integration test.
|
||||
- Targeted engine tests for planner gap queries, operational evidence, grounded-research source policy, meta sanitizer and security applicability pass.
|
||||
- Full mathematical build against the supplied 21,289 × 768 production vector corpus completed in ~6–7 seconds and produced 16,940 sparse neighbour edges, touching 75.5% of Knowledge nodes.
|
||||
|
||||
The project itself still declares Go 1.26 and `modernc.org/sqlite v1.37.1`. This environment cannot download either missing toolchain/dependency, so the real SQLite integration suite could not be run here.
|
||||
@@ -0,0 +1,154 @@
|
||||
# Docker Controller v9
|
||||
|
||||
## Ziel
|
||||
|
||||
Ein explizit freigegebener Source Agent kann zusätzlich als Host-Docker-Controller arbeiten. Der Agent spricht lokal mit `/var/run/docker.sock`; das Brain bleibt Policy-, Queue-, Audit- und UI-Authority. Docker.sock ist eine hochprivilegierte Host-Schnittstelle. Deshalb ist die Controller-Schicht standardmäßig vollständig deaktiviert und verwendet keine freie Shell-/Exec-Schnittstelle für autonome Brain-Entscheidungen.
|
||||
|
||||
## Sicherheitsmodell
|
||||
|
||||
Standardzustand:
|
||||
|
||||
- Controller-Hauptschalter: **aus**
|
||||
- autonome Controller-Jobs: **aus**
|
||||
- globaler Dry-Run: **an**
|
||||
- destruktive Aktionen: **aus**
|
||||
- maximale Parallelität: `1`
|
||||
- maximale zentrale Jobdauer: `10m`
|
||||
- erlaubtes Standardimage: `curlimages/curl:`
|
||||
- Brain-/Source-Agent-Container sind standardmäßig geschützt
|
||||
|
||||
Der Agent prüft die zentrale Autorisierung während eines laufenden Jobs alle zwei Sekunden erneut. Das Abschalten des Hauptschalters beendet daher nicht nur neue Claims, sondern entzieht auch laufenden Jobs ihre Autorisierung. Dasselbe gilt für das Abschalten autonomer beziehungsweise destruktiver Freigaben, soweit der laufende Job davon abhängt.
|
||||
|
||||
Autonome Jobs dürfen ausschließlich aus vorher vom Operator angelegten und als `autonomous` freigegebenen Profilen stammen. Zulässige autonome Typen sind:
|
||||
|
||||
- `evidence_http_probe`
|
||||
- `health_recovery`
|
||||
- `compute_capacity_compose`
|
||||
- `compose_smoke_test`
|
||||
|
||||
Beliebige `docker exec`-/Shell-Kommandos, privilegierte Container, Host-PID, Host-Network und autonome Bind-Mount-Erzeugung werden nicht angeboten.
|
||||
|
||||
## Sinnvolle Einsatzzwecke
|
||||
|
||||
### 1. Unabhängige Evidence-Zweitprüfung
|
||||
|
||||
Nach Annahme einer hochwertigen Primär-/autoritativen Webquelle kann das Brain automatisch einen `evidence_http_probe` anfordern. Ein isolierter Curl-Container lädt die öffentliche URL nochmals über den Controller-Host. Er liefert HTTP-Status, effektive URL, Content-Type, Downloadgröße und SHA-256 des erfassten Bodys. Das Ergebnis wird im Activity-Audit erfasst und – wenn der externe Research-Node bereits existiert – als `controller_probe_*`-Provenienz in dessen Metadaten zurückgeschrieben.
|
||||
|
||||
Das ist kein semantischer Wahrheitsbeweis. Es ist ein unabhängiger technischer Beleg, dass die akzeptierte Quelle über einen zweiten Ausführungspfad erreichbar war und welchen Body-Hash dieser Pfad gesehen hat.
|
||||
|
||||
### 2. Health Recovery
|
||||
|
||||
Ein Profil `health_recovery` nennt einen konkreten Container und optional einen Cooldown. Meldet genau der Controller-Agent diesen Container als `unhealthy`, darf das Brain bei aktivierter Autonomie einen typisierten Restart-Job auf **diesem** Agenten einplanen. Geschützte Container sind ausgeschlossen.
|
||||
|
||||
Beispielkonfiguration:
|
||||
|
||||
```json
|
||||
{
|
||||
"container": "searxng",
|
||||
"cooldown": "30m"
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Temporäre Compute-Kapazität
|
||||
|
||||
Wenn beim initialen Vector-Graph-Rebuild kein `vector_graph`-Compute-Agent verfügbar ist, kann das Brain vor dem lokalen Fallback ein freigegebenes `compute_capacity_compose`-Profil anfordern. Das Profil startet ein operatorgeprüftes Compose-Projekt oder einen Service und das Brain wartet anschließend innerhalb des bestehenden Agent-Startup-Grace auf dessen Registrierung.
|
||||
|
||||
```json
|
||||
{
|
||||
"compose_file": "/srv/brain-controller/compute.yml",
|
||||
"project": "brain-compute",
|
||||
"service": "source-agent"
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Ephemere Compose-Smoke-Tests
|
||||
|
||||
`compose_smoke_test` startet ein freigegebenes Testprojekt mit `docker compose up -d --wait`, liest anschließend `compose ps` und kann es optional wieder abbauen. Cleanup benötigt zusätzlich die Freigabe destruktiver Aktionen.
|
||||
|
||||
```json
|
||||
{
|
||||
"compose_file": "/srv/brain-controller/tests.yml",
|
||||
"project": "brain-smoke",
|
||||
"service": "sut",
|
||||
"interval": "1h",
|
||||
"cleanup": true
|
||||
}
|
||||
```
|
||||
|
||||
Damit kann das Brain wiederkehrende Integrations-/Research-Sandboxes betreiben, ohne freie Host-Shell-Kommandos zu erhalten.
|
||||
|
||||
## Manuelle Controller-Aktionen
|
||||
|
||||
Das zentrale Dashboard unterstützt typisierte Jobs für:
|
||||
|
||||
- Container: Start, Stop, Restart, Create, Remove
|
||||
- Netzwerke: Create, Remove
|
||||
- Volumes: Create, Remove
|
||||
- Compose: Up, Down, Restart, Pull, PS
|
||||
- Inventory Refresh
|
||||
- Evidence HTTP Probe
|
||||
|
||||
Container-Erstellung ist zusätzlich gehärtet: kein `Privileged`, keine Host-/Container-Network-Modi, Read-only Rootfs, `cap_drop=ALL`, `no-new-privileges`, CPU-/RAM-Limits und nur benannte Docker-Volumes. Offensichtliche Inline-Secrets in `env` werden abgewiesen, weil Controller-Jobs vollständig auditierbar in SQLite gespeichert werden. Für Secrets sind operatorgeprüfte Compose-Secrets/Env-Dateien zu verwenden.
|
||||
|
||||
Images werden per zentraler Allowlist freigegeben. Präfixregeln sind nur mit einem expliziten Abschluss `:`, `/` oder `@` zulässig; `vendor/tool` erlaubt also nicht implizit `vendor/tool-malicious`.
|
||||
|
||||
Compose-Dateien müssen unter einem zentral erlaubten Root liegen. Symlinks werden aufgelöst, bevor der Pfad freigegeben wird. Compose-Dateien werden im empfohlenen Deployment read-only in den Controller-Agent gemountet; v9 verändert daher keine beliebigen Hostdateien. Das Brain steuert die daraus entstehenden Compose-Projekte, nicht den Host-Dateibaum.
|
||||
|
||||
## Deployment
|
||||
|
||||
Controller-Unterstützung wird im normalen Source-Agent-Compose **nicht** automatisch aktiviert und Docker.sock wird dort nicht gemountet.
|
||||
|
||||
Opt-in:
|
||||
|
||||
```bash
|
||||
export DOCKER_GID=$(stat -c %g /var/run/docker.sock)
|
||||
export BRAIN_CONTROLLER_COMPOSE_ROOT=/srv/brain-controller
|
||||
|
||||
docker compose \
|
||||
-f deployment/docker-compose.source-agent.yml \
|
||||
-f deployment/docker-compose.controller-agent.yml \
|
||||
up -d --build
|
||||
```
|
||||
|
||||
Der Compose-Root wird unter demselben absoluten Pfad read-only in den Agent gemountet. Der Agent läuft weiterhin als unprivilegierter `brain`-User und erhält nur über die Docker-Socket-Gruppen-ID Zugriff auf den Socket.
|
||||
|
||||
Agent-ENV:
|
||||
|
||||
```env
|
||||
BRAIN_AGENT_DOCKER_CONTROLLER_ENABLED=true
|
||||
BRAIN_AGENT_DOCKER_SOCKET=/var/run/docker.sock
|
||||
BRAIN_AGENT_DOCKER_COMPOSE_BINARY=docker
|
||||
BRAIN_AGENT_CONTROLLER_POLL_INTERVAL=5s
|
||||
BRAIN_AGENT_CONTROLLER_MAX_DURATION=15m
|
||||
```
|
||||
|
||||
Die zentrale Policy wird nicht per Agent-ENV freigeschaltet. Sie muss im Brain-Dashboard aktiviert werden.
|
||||
|
||||
## Dashboard
|
||||
|
||||
`/source-agents.html` ist in v9 eine gemeinsame **Agents & Controller**-Konsole. Sie zeigt:
|
||||
|
||||
- Hauptschalter / Emergency Stop
|
||||
- autonome Freigabe
|
||||
- globalen Dry-Run
|
||||
- destruktive Freigabe
|
||||
- Parallelitäts- und Laufzeitlimits
|
||||
- Image-Allowlist und Compose-Roots
|
||||
- geschützte Container, Netzwerke und Volumes
|
||||
- Docker Engine/API/Compose-Status pro Agent
|
||||
- Container-, Netzwerk- und Volume-Inventar
|
||||
- direkte Start/Stop/Restart-/Remove-Aktionen
|
||||
- Controller-Profile
|
||||
- Controller-Jobhistorie inklusive Resultat und Abbruch
|
||||
- normale Source-Agent-/Polling-/Inbox-Funktionen
|
||||
|
||||
## Controller-Entscheidungsgrenze
|
||||
|
||||
Das Brain entscheidet autonom nur an konkreten Workflow-Hooks:
|
||||
|
||||
- akzeptierte hochwertige Research-Evidenz → Evidence Probe
|
||||
- unhealthy Container eines Recovery-Profils → Restart
|
||||
- fehlende Vector-Compute-Kapazität beim Bootstrap → Compute-Compose
|
||||
- fälliges Smoke-Test-Profil → Test-Compose
|
||||
|
||||
Ein LLM erzeugt dabei **keinen Docker-Befehl**. Das Modell kann weiterhin Research-/Article-Entscheidungen beeinflussen; die Host-Aktion selbst ist jedoch eine deterministische, typisierte und durch Operator-Policy freigegebene Folgeaktion.
|
||||
@@ -26,7 +26,7 @@ Die Vorstrukturierung (`KnowledgeBrief`) dient nur noch dazu, sinnvolle Recherch
|
||||
|
||||
## 1. Recherche als Materialsammlung
|
||||
|
||||
SearXNG arbeitet offen und ohne `site:`-Filter, ist aber im Cluster/Fast-Modus kein obligatorischer erster Schritt mehr. Bei `BRAIN_ARTICLE_RESEARCH_STRATEGY=adaptive` schreibt Gemma zunächst aus internen Quellen. Ein billiger Aktualitätsdetektor darf bei klar zeitabhängigen Themen eine kleine Webrunde vorziehen; andernfalls kann Gemma über interne Routingfelder gezielt Evidenz anfordern. Erst Reviewer-Lücken lösen weitere Nachrecherche aus. Details: `ADAPTIVE-ARTICLE-WORKFLOW.md`.
|
||||
SearXNG arbeitet offen und ohne `site:`-Filter, ist aber im Cluster/Fast-Modus kein obligatorischer erster Schritt mehr. Bei `BRAIN_ARTICLE_RESEARCH_STRATEGY=adaptive` schreibt Gemma grundsätzlich aus kohärenten internen Quellen. Eine kleine Webrunde wird deterministisch vorgezogen, wenn Aktualität relevant ist, wenn der Planner für einen operationalen Artikel nur zwei kohärente interne Quellen findet oder wenn ein Entwurf weniger als drei konkrete Lösungsschritte bzw. keine Validierung enthält. Gemmas interne Routingfelder und Reviewer-Lücken können zusätzliche gezielte Evidenz anfordern. Details: `ADAPTIVE-ARTICLE-WORKFLOW.md`.
|
||||
|
||||
Frisch recherchiertes Artikelmaterial wird zunächst nur als Evidence-Datei mit `pending_article_review` persistiert. Es erzeugt noch keinen Graph-Node. Erst eine vom Reviewer tatsächlich für einen unterstützten Claim verwendete Quelle wird materialisiert und `grounded`.
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@ Eigenständiger Go-Dienst für Agent, lokale Knowledgebase, GLPI-Knowledgebase u
|
||||
- Read-only Tailing der Agent-`runs.jsonl` und optionale Suchtelemetrie aus Agent und KB.
|
||||
- Ollama-Pool mit mehreren unabhängigen Instanzen, Routing, Healthchecks, Cooldown und Failover.
|
||||
- Embeddings über `embeddinggemma`, Beziehungsanalyse über `qwen3:8b`.
|
||||
- Mehrstufiger AI-THINK-Worker: Relation Thinking, quellengebundene Wissenskonsolidierung, Recherche offener Punkte und reine Knowledge-Synthesis für vollständige KB-Artikel.
|
||||
- Optionaler mathematischer Knowledge-Nachbarschaftsgraph aus bereits vorhandenen Embeddings (`semantic_neighbor`): LSH + Cosine + mutual k-NN/local scaling, ohne zusätzlichen Modellaufruf; periodische Re-Evaluierung und sanfte 3D-Entzerrung dichter Wolken sind getrennt steuerbar.
|
||||
- Mehrstufiger AI-THINK-Worker: Relation Thinking, quellengebundene Wissenskonsolidierung, Recherche offener Punkte und Knowledge-Synthesis mit artikeltypspezifischer Tiefe, mathematischem CPU-Pre-Review sowie getrenntem Claim-/Coverage-Review.
|
||||
- Persistente **Autonomous-Research-Queue**: selbstständige Wissenslückensuche, externe Trigger, Leerlauf-/Budgetsteuerung und niedrig priorisierte Übergabe an den vorhandenen Ollama-Pool.
|
||||
- Inkrementelle SQLite/WAL-Persistenz über `modernc.org/sqlite`: binäre Float32-Embeddings und standardmäßig alle fünf Minuten gebündelte Row-Updates.
|
||||
- Separates **BRAIN ANALYSIS CENTER** mit persistenter Laufhistorie, exakten Node-/Edge-/Vektoränderungen, Similarity-/Confidence-Auswertung, Research-Ergebnissen und technischem Roh-Eventstream.
|
||||
@@ -33,10 +34,12 @@ AI-THINK bleibt `auto_reply: false`, trägt die Kategorien `AI-THINK` und `AI-St
|
||||
|
||||
## Grounded Knowledge Synthesis
|
||||
|
||||
Verwandtes Wissen wird nicht direkt als Bewertungsbericht gespeichert. Die Artikelpipeline arbeitet nach **Adaptive Generate → Review**: Im `clustered`-Modus beginnt der Autor (z. B. Gemma) mit den internen KB-Quellen. SearXNG wird nur vorgeschaltet, wenn ein deterministischer Aktualitätsdetektor Versions-/Support-/CVE-/Patch-/Preis-/Live-Status erkennt, oder wenn Gemma im selben Draft-Aufruf eine konkrete Evidenzlücke meldet. Erst danach prüft ein getrenntes Reviewer-Modell den sichtbaren Text Claim für Claim und kann gezielte Nachrecherche auslösen. Frisch recherchierte Webvolltexte bleiben zunächst nur im Evidence-Store; erst tatsächlich vom Reviewer für unterstützte Claims verwendete Quellen werden als Graph-Nodes materialisiert und per `grounded_by` verknüpft. Vorab erkannte `critical_gaps` oder `ready_for_article=false` blockieren den Draft nicht mehr.
|
||||
Verwandtes Wissen wird nicht direkt als Bewertungsbericht gespeichert. Die Artikelpipeline arbeitet nach **Adaptive Generate → Review**: Im `clustered`-Modus beginnt der Autor (z. B. Gemma) mit kohärenten internen KB-Quellen. SearXNG wird gezielt vorgeschaltet, wenn ein deterministischer Aktualitätsdetektor Versions-/Support-/CVE-/Patch-/Preis-/Live-Status erkennt, wenn der Planner für einen operationalen Artikel nur zwei kohärente interne Quellen findet, wenn dem Entwurf ausführbare Schritte/Validierung fehlen oder wenn das Modell selbst eine konkrete Evidenzlücke meldet. Erst danach prüft ein getrenntes Reviewer-Modell den sichtbaren Text Claim für Claim und kann weitere gezielte Nachrecherche auslösen. Frisch recherchierte Webvolltexte bleiben zunächst nur im Evidence-Store; nur tatsächlich vom Reviewer verwendete Quellen dürfen die interne Mindestquellenregel ergänzen und als Graph-Evidenz materialisiert werden.
|
||||
|
||||
Details: [`KNOWLEDGE-SYNTHESIS.md`](KNOWLEDGE-SYNTHESIS.md), [`GENERATE-THEN-REVIEW.md`](GENERATE-THEN-REVIEW.md) und [`ADAPTIVE-ARTICLE-WORKFLOW.md`](ADAPTIVE-ARTICLE-WORKFLOW.md).
|
||||
|
||||
v8 ergänzt einen modellfreien CPU-/Agent-Quality-Layer und eine langsame semantische Layout-Relaxation. Details: [`ARTICLE-QUALITY-CPU-V8.md`](ARTICLE-QUALITY-CPU-V8.md).
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
@@ -140,6 +143,10 @@ curl -fsS http://localhost:8090/api/state/export -o graph.db
|
||||
|
||||
Mehr Details: [`PERSISTENCE.md`](PERSISTENCE.md) und [`SQLITE-STORAGE.md`](SQLITE-STORAGE.md).
|
||||
|
||||
### Experiment: mathematische semantische Kanten
|
||||
|
||||
Mit `BRAIN_VECTOR_GRAPH_ENABLED=true` kann direkt nach dem normalen Embedding-Schritt eine rein mathematische Knowledge↔Knowledge-Schicht erzeugt werden. Sie verwendet bereits gespeicherte Embeddings und erzeugt `semantic_neighbor` statt `same_topic`, weil Vektornähe kein fachlicher Beweis ist. Edge-Berechnung und optionales 3D-Layout verursachen keinen zusätzlichen Ollama-/LLM-/Embedding-Aufruf. Ein optionaler Orphan-Second-Pass kann verbleibende isolierte Knowledge-Nodes konservativ gegen den vollständigen Vectorbestand prüfen. Mit `BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=true` darf ein integrierter Source Agent diesen CPU-Job übernehmen; das Brain validiert und persistiert weiterhin selbst. AI-THINK kann anschließend zuerst diese mathematischen Kandidaten bewerten, statt erneut den gesamten Vektorraum zu durchsuchen. Details: [`VECTOR-GRAPH-EXPERIMENT.md`](VECTOR-GRAPH-EXPERIMENT.md) und [`VECTOR-GRAPH-AGENT-OFFLOAD-V3.md`](VECTOR-GRAPH-AGENT-OFFLOAD-V3.md).
|
||||
|
||||
## Laufzeitsteuerung, Visualisierungen und Performance
|
||||
|
||||
Die untere Steuerleiste enthält direkte Schalter für **LEARNING**, **THINKING**, **NEURAL**, **HONEYCOMB**, **CONSTELLATION** und **ECO**. Sind Learning und Thinking deaktiviert, bleibt das System im Living-Modus; eingehende Agent- oder KB-Anfragen können weiterhin die tatsächlich verwendeten Notes aktivieren.
|
||||
@@ -371,3 +378,15 @@ BRAIN_AGENT_TOKEN=brain_agent_...
|
||||
```
|
||||
|
||||
Create Agents and RSS/Atom/sitemap/Web polling tasks under `/source-agents.html`. Set `BRAIN_PUBLIC_URL` on the Brain to an address the Agent can actually reach; do not copy a browser-side `127.0.0.1`/`localhost` URL into a separate Agent container. The Agent exposes a small diagnostics UI on `/` and detailed connection state on `/api/status`; the example compose publishes it with `BRAIN_AGENT_PORT` (default `8092`). Incoming documents first enter a persistent Source Inbox and are classified against the local KB; adaptive article research searches this Inbox before falling back to SearXNG. Discovered documents are not materialized as graph knowledge until a reviewer actually uses them to ground a supported claim. See `SOURCE-AGENT-MODE.md` for the API, security model and deployment example.
|
||||
|
||||
Source Agents can additionally advertise a `vector_graph` CPU capability. With `BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=true`, the Brain can stream already existing embeddings to such an Agent for deterministic LSH/k-NN/Cosine/local-scaling calculation. This compute path performs no Chat or Embed call on the Agent and works even when the Agent has no source polling task. `BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false` keeps a safe local CPU fallback.
|
||||
|
||||
### Production Readiness v1
|
||||
|
||||
Der aktuelle Stand enthält einen Bootstrap-Gate, kausale Workflow-Mutationsmessung, append-only Audit-Events, Source-Inbox/Graph-Reconciliation und einen Knowledge-Manifest-Fast-Path. Für große Knowledge-Bestände ist der Default für `BRAIN_SCAN_INTERVAL` nun `5m`; zusätzlich verifiziert `BRAIN_KNOWLEDGE_FULL_VERIFY_INTERVAL=6h` den vollständigen Dateiinhalt periodisch. Details: `CHANGELOG-PRODUCTION-READINESS.md` und `VALIDATION-PRODUCTION-READINESS.md`.
|
||||
|
||||
## Host-Docker Controller (v9, opt-in)
|
||||
|
||||
Ein vertrauenswürdiger Source Agent kann zusätzlich als zentral gesteuerter Docker-Controller dienen. Der Controller ist standardmäßig ausgeschaltet und der normale Agent mountet **keinen** Docker Socket. Nach explizitem Opt-in kann das Brain typisierte Container-/Network-/Volume-/Compose-Jobs verwalten und vorab freigegebene Profile autonom für Evidence-Zweitprüfung, Health-Recovery, Compute-Kapazität und Smoke-Tests verwenden. Ein globaler Hauptschalter und Emergency Stop bleiben im Brain-Dashboard verfügbar.
|
||||
|
||||
Wegen der hohen Privilegien von Docker.sock gibt es keinen freien Docker-Exec-/Shell-Kanal für das Brain oder ein Modell. Details, Threat Model und Deployment: `DOCKER-CONTROLLER-V9.md`.
|
||||
|
||||
+213
-165
@@ -1,165 +1,213 @@
|
||||
163709c44b1f7b6711ba61ffd37fbf34a389682379809961e4c942dd1ce8b65c .env.example
|
||||
236713daf159ff0a8067e80a442ae3404fa28a5251ae6f24782f263bcfc17005 .gitea/workflows/registry.yml
|
||||
caf5847b0ca972e7701ec23222302ac72de05d20f620d1b0f508efa126f24bfd .gitignore
|
||||
048f53e6ca01ac583b48784cd2f6f7d248e0534849955b144e75f017f73188a3 .vscode/settings.json
|
||||
7cab0e9636d745e6a9565659bc062a604f5f0426f7b95cac5d75adcacf1fc65c ADAPTIVE-ARTICLE-WORKFLOW.md
|
||||
8db46213d020b76bff1b6ea50b8540ed2b13da4bae506295c1dc4dd82e088006 ANALYSIS-DASHBOARD.md
|
||||
d881f2fc86c9ddac4339a5cbeefd5c909cea9552b41a4dba2530a46a4bb88a06 ARCHITECTURE.md
|
||||
1451a75bb99c33dbfa970e01327d95137dbe27320b69c4a03c36780d1e2da5ef AUTONOMOUS-RESEARCH.md
|
||||
f66de3a0a5abba55f42475a1e79bad2129f033b95648f95fafeb9efe5b7716a8 CHANGELOG-ADAPTIVE-ARTICLE-WORKFLOW.md
|
||||
7aed2194baab0fb66c561446e5f1cd7724c1166bfa3a08c9e59157d1878bf994 CHANGELOG-ANALYSIS-DASHBOARD.md
|
||||
518daa4c734c46e3c063b66d57e8d3a422f5d7ae7f52bef74db58d881bb979b8 CHANGELOG-ARTICLE-CREATION-GATES.md
|
||||
0ed6ff0d82b3b6776970200a021937611d4f3273f6727d296aec16cfac6153b8 CHANGELOG-AUTONOMOUS-RESEARCH.md
|
||||
416dfc4b4490f6c7e1ee965c9497abed8ef731db1cda8f3af4f554a780697705 CHANGELOG-CLUSTER-FAST-MODE.md
|
||||
2bc149241c2d25f755e4a0470dc517f646527ee3e98d3a6c2e7798639bd70866 CHANGELOG-CONSTELLATION-ECO-TRANSITIONS.md
|
||||
933cdaeae7895e31d2281d591a75f23f07e7c41d356638654bac4f5e7a20a069 CHANGELOG-FILTER-PANEL-SCROLL.md
|
||||
176f089da30ddea637d7a4c81ef45dfa889e0b36a9180a17145ef0931b523a69 CHANGELOG-FILTER-SCOPES-SOURCES.md
|
||||
97db1e71edc6ed428942ff80944ce65baf0ab10e0a4b481975f16a445c5e1ed8 CHANGELOG-GENERATE-THEN-REVIEW.md
|
||||
213ac897cd415bbeb9764a847843b9eff366983cf25bb3cbce4efa4c04b9e5f5 CHANGELOG-GLPI-POOL-PERSISTENCE.md
|
||||
e2f1f0400999cb59b8be09bc2743e06e0a0b2ecdc44a583af7c9a08b70d8509e CHANGELOG-GPU-NODE-LIMIT.md
|
||||
a317376127be1e47b9ec9f0781fcfebdcbf7fccfaeb7840d9241f9586048fadb CHANGELOG-GROUNDED-KNOWLEDGE-SYNTHESIS.md
|
||||
02a8d3e541967e2d2ef9dd5451f470679e262ad851aca9f03563b322914c3181 CHANGELOG-ITERATIVE-GROUNDED-RESEARCH.md
|
||||
e167a9d64f63c3933ad40c5078684bc019db303043c34ea3965f3b089f3d32c7 CHANGELOG-KNOWLEDGE-SYNTHESIS.md
|
||||
7c2d4e1eea0be2ca0f6f1f86e6be6d9e2cab0cb741cd255ddf45b33d62a5744d CHANGELOG-QUEUE-LIFECYCLE-FIX.md
|
||||
061c89039bc97937b40aecfac43f9beed048dd57971c748667b4b2b7057f25e9 CHANGELOG-RESEARCH-INTENT-GUARD.md
|
||||
fbf686a1acc2de6c4fbb56730a5f87dfdf28d93125fa56ae0c588c29ce492efe CHANGELOG-RESEARCH-ORCHESTRATION.md
|
||||
37e1803aa4bc2f8da851c748447e0e3cb59beb1c426248fba5df6ba9fa171cc5 CHANGELOG-RESEARCH-PREFETCH-GATE.md
|
||||
87f89a81e1124b18e092a4ea946cb037295cb9e884a46b392286272dc8134dd4 CHANGELOG-RUNTIME-HONEYCOMB.md
|
||||
2d04e6d385f4b902080a0bcaab510a846a8ae6a76cb757423c50425c8433e7f9 CHANGELOG-SEARXNG-DIAGNOSTICS.md
|
||||
9c760e167a9af2d3d8ca32c5aa4ef6bb4a3153047343a71c4b19ca9aef96ca32 CHANGELOG-SEARXNG-VISUALIZATION.md
|
||||
9f5c4684f27249a71f41e204e7a276e70079b68aa9d6ad71ff9a2dcb3c67bd16 CHANGELOG-SOURCE-AGENT-CONNECTION-FIX.md
|
||||
6315493546a2d66022bcdff849e3895b300496cfcbab1ef891c966e55a54cb04 CHANGELOG-SOURCE-AGENT-MODE.md
|
||||
455fb256203a41f244f878fba9c9994f1394184ece33839a919c6d2bceb96fc4 CHANGELOG-SOURCE-AGENT-UI-LIST-FIX.md
|
||||
e4e5ecd9b322d77b587a4166a8734a8d84b520ad605a1235d0bd5787398932f3 CHANGELOG-SOURCE-INBOX-PRIORITY-CLASSIFIER.md
|
||||
86ae2eaee9cd9d909259448591185d04a70c2c1c8e5f9fa7372ba074e9983276 CHANGELOG-SOURCE-INBOX-SECURITY-PROACTIVE.md
|
||||
be9f133ae933bdc0e0a8aa5d176dd3e39488a191337043533379e23d179f3ad2 CHANGELOG-SOURCE-ONLY-FILTERS.md
|
||||
5433a7c2e67ab35fb320bc872e9024fa5f3e765736184e9f878340b8b45407aa CHANGELOG-SQLITE-STARTUP-FIX.md
|
||||
5b9deeab0cd59b3c649fd73f129361a1e773ed3955cded0048b8cb280bb32e88 CHANGELOG-SQLITE-STORAGE.md
|
||||
a7bccc893903d5009ddd86cec156fbfd6887bd1e8fc040ba065c2c812a0345b3 CLUSTER-FAST-MODE.md
|
||||
b5e24ea594df82a221a8789d2c42ea373c79d475370fc3fbf64401fa296df86f Dockerfile
|
||||
a1aed7c198bc1ffc7af4a8f69ccf137541e4887ce5d59a0d67f2be7216a37dcd FILTER-SCOPES-SOURCES.md
|
||||
48dd4b8f60a9531022a91a49e4c78562c598730751d3b46edabcbe79408a4d73 GENERATE-THEN-REVIEW.md
|
||||
5534536965bf0479455f97324c242160202650ca1256f1ba0420b4ad67125e49 GLPI-KB.md
|
||||
8f0a438391ad05a3def0ac37a3d20b1a82e0a238187548b99a2c40a98abd0a34 ITERATIVE-GROUNDED-RESEARCH.md
|
||||
7c7edb6efef889702c5466131e57dacc1d9b9163e24b5b89fdfbc9b1c1bae02a KNOWLEDGE-SYNTHESIS.md
|
||||
696d2da2338cd8190b9614707e4059d78ce291e7334f273633aad815c3b6a6df Makefile
|
||||
e5e9a5268031fee9346462e4631e28ce8c8a8b46a4623e56327a1f310a09f646 OLLAMA-POOL.md
|
||||
2c0062941ef3edbd40d46b823934a7d0a3a9da7581b83d0b9360e8aaa7694b1b PERSISTENCE.md
|
||||
84358eeef449dee2c056f0195c2cd520427883afc18ce72cac5462bffba2195b README.md
|
||||
2838cd19ac2bfa35bebbef2541f631b99221b5997bbb6dbc27146a66a3a1ad34 RUNTIME-CONTROLS-HONEYCOMB.md
|
||||
c3da43b33e550901d55789f2ee526c2e50f61ee028a3f59e0a40e77e1057fde7 SEARXNG-VISUALIZATION.md
|
||||
2c6bed560bd5a3a8cbdc44c2f0ef75aa5e19b26e76807bd4185bc84ddcd5090a SOURCE-AGENT-MODE.md
|
||||
c69419c0327425186cfb84f25746feff226ce813cf467b3f252e729517455047 SOURCE-ONLY-FILTERS.md
|
||||
ae7bc1f1959071f79b76ca8a4ba103064ec0d5c5752af346175731ef4f636d9d SQLITE-STORAGE.md
|
||||
706b3912716d565082a44a0e707afd2ad07e4eb17cc23cae75772c1740205276 VALIDATION-ADAPTIVE-ARTICLE-WORKFLOW.md
|
||||
b0123b8425993dea7dd3864f930527b6a1a0e965ff29c0e4899620a64cd9451d VALIDATION-ANALYSIS-DASHBOARD.md
|
||||
2bcfeb932094dff1203aed517978c224888edaaa9e0095253a5f0906efd92b39 VALIDATION-ARTICLE-CREATION-GATES.md
|
||||
116a87c5e7c4fcfc333bbdf84979d5bab619b8a0936cd9f8838df04c9981bff7 VALIDATION-AUTONOMOUS-RESEARCH.md
|
||||
2f0133d068f4fa73302d38f65d3e33fc35ec0443f2177b0982d37823613a8f9b VALIDATION-CLUSTER-FAST-MODE.md
|
||||
e05449bab6250e585a6c0ac0735008cd533baf07dbf7149ddae609ae252d4425 VALIDATION-CONSTELLATION-ECO-TRANSITIONS.md
|
||||
3830269b6584e63b4d5cd3627ac5c713c0aedc80e189b35e920d1228de25ff5e VALIDATION-FILTER-SCOPES-SOURCES.md
|
||||
6c5e89e0e49e45e91b342550c9288f81526e294a3e412a429ad0f4ed220797d8 VALIDATION-GENERATE-THEN-REVIEW.md
|
||||
e7ab2cddec372db906c7883a6e0861b71999043cfb9b94e527c3b2aee4532035 VALIDATION-ITERATIVE-GROUNDED-RESEARCH.md
|
||||
ed62866492c9f62732b6f54a60b0e38174586a873a63e56646c11c0e25b5b2ba VALIDATION-QUEUE-LIFECYCLE-FIX.md
|
||||
9133afbe203257b413c3523b463a47797bd8c07584df100e0c62d4278a927d29 VALIDATION-RESEARCH-INTENT-GUARD.md
|
||||
e5d2e3da41bfb6e720f2a9a4b95d0002fb01835db5120674c137f57110312b33 VALIDATION-RESEARCH-ORCHESTRATION.md
|
||||
044cf894b43d8ce1746adce9e58d75a6c7b0c1f3f3d2f0abcdeaab1db435014d VALIDATION-RESEARCH-PREFETCH-GATE.md
|
||||
e08b0eaab827fe03d5a72327e8fdfe9ce4025097e28208714246969e7d059561 VALIDATION-SEARXNG-DIAGNOSTICS.md
|
||||
1cdfce41a88d01661368757a3c6a8ecf4c57c08f16308ab201c7a8d08b83e9a2 VALIDATION-SOURCE-AGENT-CONNECTION-FIX.md
|
||||
0afab72f31601a8e20eacc3d64a19a6e554ae7116e58e761073318fe5584b5b8 VALIDATION-SOURCE-AGENT-MODE.md
|
||||
2cf4668fa53714b272138c07d99b53e6bd99c15182702c0fa09c6254c4ddd8a0 VALIDATION-SOURCE-AGENT-UI-LIST-FIX.md
|
||||
da9db1169a35c95b9cfb1bc6117ae5d93cb759510ece5d8e24e18c5d5d9a4c89 VALIDATION-SOURCE-INBOX-PRIORITY-CLASSIFIER.md
|
||||
42dd0d8c4af7b5a8c77443f8348b801134db7ef6800872a9140e5f603b5d9846 VALIDATION-SOURCE-INBOX-SECURITY-PROACTIVE.md
|
||||
f46938b5de7e139e1b21868b1bedce6e312d69cd61602b4f8f43512a327dd422 VALIDATION-SOURCE-ONLY-FILTERS.md
|
||||
4cd120496664388717fe422a8c54380708df723fea26b35f81799665dfaf2c1c VALIDATION-SQLITE.md
|
||||
f6699e4cdbaadc720e4b8a22c557d02319325283775a2b8a87ff78ca202e3386 VISUALIZATION-PERFORMANCE.md
|
||||
7ac0aae38586eab129c42d0bdcef707fda68ad492341f49ab34ef1249b2bf642 cmd/brain/main.go
|
||||
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 data/.gitkeep
|
||||
7ad10f51cf26747b4f186c540ecb7c77662f001800f0f7803422d45e8d72a4db data/graph.db
|
||||
587064aa2b583235d2235f4dcff2854b47347d47aef12ce266d56e9da6986843 data/runtime-settings.json
|
||||
21b51d0e1b7ed07c20f7f3a5da76dedab8df44a94a51724b67b0c3411599fe15 deployment/README.md
|
||||
11429bf6b32abb94669b20597075c0c2fb94730d5de804237e0e4501d829f868 deployment/docker-compose.full.yml
|
||||
61cdf899b5a2abf6db0b15236c59e2ccdd17027bbd9c37573cbad829c5f984af deployment/docker-compose.source-agent.yml
|
||||
c288b46b8a75a195a21e094c9a660704aff11517bbab3bbdf3a9b61b65cfc3b5 docker-compose.yml
|
||||
1edabd3a7fc60aebaca37fae228a5f34ddbf9ed18478aa1b114204cb956a4027 go.mod
|
||||
864c3376212497b070feca13d26cfc28e96876078ce7a0b5b0c0470e2dd4fbf8 go.sum
|
||||
ed7fa0e09e94aa9e89c93b00303d4ce6f0f20dac626ecb91181c3aabc76bc8ff integrations/agent/README.md
|
||||
9e15349702f876b1fa74e6caa1e97367d8a11b266fa5a1e40152b10c859b23c2 integrations/agent/glpi-ai-agent-neural-brain.patch
|
||||
3c0fc6913501976100521526e1ee8e7988d33fbce3f7b4bab26387d42b0966f5 integrations/knowledgebase/README.md
|
||||
12f8424f863b13f19aab9c2e6c2828c0ad824a55a62fe336e062db534102bc3a integrations/knowledgebase/glpi-ai-knowledgebase-neural-brain.patch
|
||||
93d8993e09473559a191c4e01252d6d1fdb214646d65e1271cde018b47d939ed internal/activity/broker.go
|
||||
c0aa4be08858cff25d9bb8869b688ddd0564d6e2db04c91dcd8f35d4be32d295 internal/config/config.go
|
||||
450eef63dd1ac638fb9092747d9a2e5f8529065a415fe46a1b7aefd96f98d806 internal/config/config_test.go
|
||||
a03f945c1ce44480f21f855b25060c34f0a5132e537cb12787af34185f7b438c internal/engine/article.go
|
||||
cfb3ac33a192391d8f85f77c23d5c4e277e03618cf32cce6269115b8c238b311 internal/engine/article_adaptive.go
|
||||
9658461b16b32e664336018d1c7e068bc92dcd77b07f4ecc6a5f9abdc27c3dde internal/engine/article_adaptive_test.go
|
||||
1825f890a6f033a64908233e8ca0e5d2b0b556c154cda2c74ff70b8e6fbbdcb1 internal/engine/article_batch.go
|
||||
b24b6b932eca7b73af7bcbdf552b139787ad4b7bf9e26ad1a3550e968dfd795d internal/engine/article_format_test.go
|
||||
77934cde83b3eeb052889cda703f5d0da0bfa12366d05fe9850afcaae7c13a66 internal/engine/article_generate_then_review.go
|
||||
72d12cf78cbdcf7b476466462c624acbdb29b8a8903356dad81d5d3c9c20360e internal/engine/article_generate_then_review_test.go
|
||||
b83bda20e2c37516c9f3159a04e463cd02583a97f8a1d364c66f949a86e8da27 internal/engine/article_research.go
|
||||
69418f872101c9f055d518ee8a881d2af3cfebf438911e6c01cfc92c629e41ec internal/engine/article_research_cache.go
|
||||
3ca7037231935329d49b6b80553fbfef206c079a6aed4c2379dadd46d39ebc0d internal/engine/article_research_cache_test.go
|
||||
50e5bab3e2dfa4e64706035d7a858397112baf1db477022b50d1366d0effc932 internal/engine/article_research_test.go
|
||||
a4451f7712ca281e677e4a26ffda16d2a1f7dfd7ffcb658d77cfedcc563d5e9f internal/engine/autonomous_research.go
|
||||
62a69f1af6fc3842e34f3847a5f868f81202feaaa6429e4e84db8115f5d14ad8 internal/engine/autonomous_research_test.go
|
||||
148093d968068910533c6b896eac43e670a153da514eb3d4c1adf3a12e1fb36f internal/engine/engine.go
|
||||
0161090ea1ee9e22d9372a69b80131818190da6a3c0c850eae8356bc1763f032 internal/engine/engine_test.go
|
||||
2038a3909b147a630e361faae3f5c1cc22218d0f1336c91d4c1b795c52665e9b internal/engine/research_diagnostics.go
|
||||
0eb3f00e2ab73d2dc6a4cbc1a4038533a4bb20fbbbb6190abd39feff6b34b8e1 internal/engine/research_diagnostics_test.go
|
||||
716d42138db9eb64480c1bbaf4cb3b70bce1edf72c17c3d85a8d84f866fd8700 internal/engine/research_events.go
|
||||
759761d974b53fae97548e9f6ce14d78e559aff091694ae446328d32db6efcc2 internal/engine/research_work.go
|
||||
87a96d4a68e8e19bc15e787efa6d24fee3ae483aeb49910c6dd699a108d0a594 internal/engine/research_work_test.go
|
||||
4788163f25060322da85597f6cf5d4881463497ca9a9ddfbefaf5a3a3d985adf internal/engine/runtime.go
|
||||
02809a7dbbf10bdc086316314c57ddd4f20f7b7f1dffbb82fc9cc8927560a2b7 internal/engine/runtime_filter_test.go
|
||||
a51979a99e96d128f73dab0aac60d8e6af8c73fef79ca1d2b41a2584ac682a9a internal/engine/source_inbox.go
|
||||
b08fe7831459a7a2ba0033d4fc216af34e2e6d8fa52f735703042d07ebae8721 internal/engine/source_inbox_test.go
|
||||
b82980a646a92751bdd27a866ba1ffc6d34a3ba81d537f7b6e5a78e1432ee6fa internal/glpi/client.go
|
||||
525102be56bc51ce8a08655b1b2bb53b67f4a1828903585fd664ed6a5133f617 internal/glpi/client_test.go
|
||||
5ec61f7f830721bdfb78d99617d5c5e8da0e15f8ab6e8ee18b7e7956b0c2c8bf internal/graph/analysis_dashboard.go
|
||||
d8e334888cc36beafc7c0bd062798eac3b6b59bd39a97d95ccef172fb0b7e10b internal/graph/analysis_dashboard_test.go
|
||||
5e1b064bda200cf6f14278093f7a48132b175c73973706322623b049b8083737 internal/graph/filter.go
|
||||
c14883e3db65a61672d0171c98a9c2d5ccff3fa6ac74e7236c16819d27ddf503 internal/graph/filter_test.go
|
||||
9585f6089d523ad33494439e8d20ceb130908a1d33399a93607c90ecef48a028 internal/graph/research_tasks.go
|
||||
e040907cc44da44b09e574644db21529ae582dc8422d5f62ae950dc3395824c0 internal/graph/research_tasks_test.go
|
||||
5670d71d8ca775ce5c85251cfe27e38623024738e70b0a65f3cd1cc04ff8e737 internal/graph/semantic_cluster.go
|
||||
e3fffa461fe56ad9c755e1d759fa19834b73294b8fb7bcc04086e18a8acaf5ab internal/graph/semantic_cluster_test.go
|
||||
195c734d1b0608ae3eee14cfa8004299f1e88084d660feb9ddec5c8e6fbfc7f6 internal/graph/sqlite_backend.go
|
||||
744d306b9c7151543e91421575775ff6eb1b7e0af187ba7d92d8a298c51704de internal/graph/sqlite_backend_test.go
|
||||
244d1012ddae1b08877559b582f6574acb150e0c84824f2ed1aae350f6725260 internal/graph/store.go
|
||||
941e6dda2f2b21cb4836e671d46da0a469eddccc8ed78865663b18b280f6dde5 internal/graph/store_test.go
|
||||
4476351d388d11c6becd78b4c918fc8d47dfd70500d8b3e2ddf81f7ff61a2cea internal/ingest/agent.go
|
||||
05bdcd8f82756af028807a9ba37e64232e2d93b6a803468d0a29665bbdb3067f internal/ingest/glpikb.go
|
||||
ff44d56d56b9e301fbcf0f028d1bae6f0b851665f4fee65222097f1a2450f24a internal/ingest/glpikb_test.go
|
||||
257a4beba480dab7d9b79c1f32496f6b4f648c4c05170f51a77220dbfd21fe96 internal/ingest/knowledge.go
|
||||
a13910fb417484d56e78ae856b71fb66c63987d9abf3b513190bc52697321a18 internal/ingest/knowledge_test.go
|
||||
64b1c28bc1d2e5fa6ee879170737d6765f976ecafaddc97e232f453eb852d68e internal/model/model.go
|
||||
8d901010b1023df43ce4791a3e1f4f471eee58d00c6568941c1c4f3c28b38a51 internal/ollama/client.go
|
||||
40194b1b2e44a1c8796fd934346e4cd8ecf374ef2318ff1d80822e55e12afb47 internal/ollama/client_test.go
|
||||
0bc8bb4c698c2c5dbef5c980d3e3fb88f10d35a8d7a230cbc81d218798bc1fe6 internal/persist/coordinator.go
|
||||
46144aa719ff5c3ab787c214d8e32e4b3c6883bed068410e5403a26f6352cd6a internal/persist/coordinator_test.go
|
||||
09fc87e1e6147e0f3d221b51f6a5a39712a113ad16ce4048fad1b0fc3d5c82a9 internal/research/fetch.go
|
||||
6a9f269783a7c41d5b63f9bd5022f415ed1b5572041ca5ccae1512d6dc2a0b80 internal/research/fetch_test.go
|
||||
edd033455bfd3925e5cdf5183a363ad527e7cf81beca183339fdc0b5410349ee internal/research/searxng.go
|
||||
5a1155da5809f3a5dbd99a98094c5778424e3f4bf93fa14bd442e91cdcc08094 internal/research/searxng_test.go
|
||||
55f1d711868b4f30b7b46d25f1f06f50eabd0114318a9852c0aae5b0597a0114 internal/sourceagent/agent.go
|
||||
c7cefff99e3253c197cbee30755661cd527aa01f82c4e6f924b968c48a51d31d internal/sourceagent/sourceagent_test.go
|
||||
4d233a889e64b9a3fd617a98e4dbda299f8969ab67e82ab28d68b7d87fdb6ae1 internal/sourceagent/store.go
|
||||
e0b11328443475f90fa46a85642d2494c92e2cd53bb4fd6b3abd13d5961f87f2 internal/sourceagent/types.go
|
||||
19cc6dd35059d2883fb24989fa75cf50fd9b95f46776e0473c967b5c8e9c0797 internal/web/server.go
|
||||
b5abd1c3591242a7e8835eb38866410558d0e7901c75f5b11b94039ee3747716 internal/web/server_test.go
|
||||
f9d6d7e4b9d955f82ed856ec361d21eee62274b3155615fe24e476499a4ddb2d internal/web/source_agents.go
|
||||
3e27efdbeaf8aba34864f6d1dd47d101d04c87993d02e35ee08df34affaefe29 internal/web/static/analysis.css
|
||||
db27a3c62848dbb0f383886c1075d2c0c779363cea3e847793104ca708c1d6f0 internal/web/static/analysis.html
|
||||
2ebcc27579c4fc477976d99a6c8116e7b4798b59d896dfcf6e4450cacfa7d4b7 internal/web/static/analysis.js
|
||||
5887106080718a2cd3d97baddb37e09e9bc733768b567f553cce8084d1dec8bb internal/web/static/app.css
|
||||
f2afbfe0818847f6bab26ddc3279b60e8155f298db9e306aeefef86f0002bc06 internal/web/static/app.js
|
||||
699a6b744cec5bfd4aafa7e736f28132700bc3af0bbbceefe1e1f650d431e739 internal/web/static/index.html
|
||||
34875683571f1f3cb4ab8e3e8dcee20af04dc358b1aceb687da3667fb35b7691 internal/web/static/source-agents.css
|
||||
33089c94b1ae1818ae75a5f79fffcfe4b6a551dad51287f34664dd37d9bc7ff5 internal/web/static/source-agents.html
|
||||
b815c9d3411d8063e58afd6a30063b868348c9756ca2482a79c8f37812d7c7d0 internal/web/static/source-agents.js
|
||||
ee527efd31cc069b08ebbd53d3df7f6374cb245ae64e7e25278dc0b6381aefa4 internal/workqueue/limiter.go
|
||||
12209426f68411da5bd793a2c499992e914fc5de9ab48fa3e0c4c89215d77b9e internal/workqueue/limiter_test.go
|
||||
83aded814b6225395935e61fe957963c3c470f368fc9089f505b6de23e959115 preview.png
|
||||
8d2a2794dfc3048a25aefa7cc47545cb8d70842b9092db42dbce3176fdab0f46 run.ps1
|
||||
a5f073faef5358937f6fb46cfa489e6c42c06febe3da8c432474deff0ad77440 runs.jsonl
|
||||
958279fc562184151eff793bbec90e723d7ef0be092464699d146a9d62e72b7d ./.env.example
|
||||
236713daf159ff0a8067e80a442ae3404fa28a5251ae6f24782f263bcfc17005 ./.gitea/workflows/registry.yml
|
||||
caf5847b0ca972e7701ec23222302ac72de05d20f620d1b0f508efa126f24bfd ./.gitignore
|
||||
048f53e6ca01ac583b48784cd2f6f7d248e0534849955b144e75f017f73188a3 ./.vscode/settings.json
|
||||
0e5a6d6103f73b4c5180e7b69207416719f2d32796126e9ce3f1e48ed1696944 ./ADAPTIVE-ARTICLE-WORKFLOW.md
|
||||
6022669d1201ddee0d8421c2d447e687f0391d4d274a2fb0f8de7254dc7078b9 ./ANALYSIS-DASHBOARD.md
|
||||
e8c73a579feae194a77ee3ce1afd98705cb79570023edb0d6fc43d788a4afc69 ./ARCHITECTURE.md
|
||||
f0cea07d3feb5b7fd0cbec4c667b87350c829de6ac72e674a9522f00ef5a11c5 ./ARTICLE-QUALITY-CPU-V8.md
|
||||
f46b4faa04bbfafe2278ddcdedc8c9508085eabec3d35559918ddb5d858a547d ./AUTONOMOUS-OPPORTUNITY-SCORING-V5.md
|
||||
5452b1b94bf6ab5a2e4e19863fe69f9141eb7574bb438348b353e5d2aa2a2376 ./AUTONOMOUS-RESEARCH-QUALITY-V6.md
|
||||
b16744c84ad73e5454d3ef3166ae0c0b3ef4b6cc02e60c6abfa9484b913083c9 ./AUTONOMOUS-RESEARCH-ROUTING-V7.md
|
||||
fc3d68a97f8e885c4b50b36b5ee9d117523cb1c691f16116d7f71d0ecaaa341f ./AUTONOMOUS-RESEARCH.md
|
||||
f66de3a0a5abba55f42475a1e79bad2129f033b95648f95fafeb9efe5b7716a8 ./CHANGELOG-ADAPTIVE-ARTICLE-WORKFLOW.md
|
||||
7aed2194baab0fb66c561446e5f1cd7724c1166bfa3a08c9e59157d1878bf994 ./CHANGELOG-ANALYSIS-DASHBOARD.md
|
||||
8761351d0f97f77a88b3b11ba707834cde90bd55cf16ea17316ceb49ed9863ee ./CHANGELOG-ANALYSIS-OBSERVABILITY-V2.md
|
||||
518daa4c734c46e3c063b66d57e8d3a422f5d7ae7f52bef74db58d881bb979b8 ./CHANGELOG-ARTICLE-CREATION-GATES.md
|
||||
0120b27838cf33a8b138d8129242651dda3ff6cd101734cf8355974d7737f5f9 ./CHANGELOG-ARTICLE-QUALITY-HARDENING.md
|
||||
00c4c5138f64b89cade6612a12108ba9e95311565b6894d23581c4f279c01aab ./CHANGELOG-ARTICLE-QUALITY-LAYOUT-V8.md
|
||||
7831005dc51c0235bb66cc97262ae62a0c2f4ca494d2f15ebaf5cea1e589a2ee ./CHANGELOG-AUTONOMOUS-IDLE-WAL-V4.md
|
||||
6a04c7f65c51c78909272253ccc7d9dd397cab16be3b80f4f8a71380e91c9642 ./CHANGELOG-AUTONOMOUS-OPPORTUNITY-V5.md
|
||||
143ceff0c874655b8ffe50983abfd7089ae1f096c945a95fba4e1838c725ab68 ./CHANGELOG-AUTONOMOUS-RESEARCH-QUALITY-V6.md
|
||||
e43c43ee9d1e901826e83ce7734b0cf1f7d3e335cb5fffa9cdecbe59f50ae6f4 ./CHANGELOG-AUTONOMOUS-RESEARCH-ROUTING-V7.md
|
||||
0ed6ff0d82b3b6776970200a021937611d4f3273f6727d296aec16cfac6153b8 ./CHANGELOG-AUTONOMOUS-RESEARCH.md
|
||||
416dfc4b4490f6c7e1ee965c9497abed8ef731db1cda8f3af4f554a780697705 ./CHANGELOG-CLUSTER-FAST-MODE.md
|
||||
2bc149241c2d25f755e4a0470dc517f646527ee3e98d3a6c2e7798639bd70866 ./CHANGELOG-CONSTELLATION-ECO-TRANSITIONS.md
|
||||
f08b63393359c578df2298544daf157c79db4b412982136030f67b678a9a83e7 ./CHANGELOG-DOCKER-CONTROLLER-V9.md
|
||||
933cdaeae7895e31d2281d591a75f23f07e7c41d356638654bac4f5e7a20a069 ./CHANGELOG-FILTER-PANEL-SCROLL.md
|
||||
176f089da30ddea637d7a4c81ef45dfa889e0b36a9180a17145ef0931b523a69 ./CHANGELOG-FILTER-SCOPES-SOURCES.md
|
||||
97db1e71edc6ed428942ff80944ce65baf0ab10e0a4b481975f16a445c5e1ed8 ./CHANGELOG-GENERATE-THEN-REVIEW.md
|
||||
213ac897cd415bbeb9764a847843b9eff366983cf25bb3cbce4efa4c04b9e5f5 ./CHANGELOG-GLPI-POOL-PERSISTENCE.md
|
||||
e2f1f0400999cb59b8be09bc2743e06e0a0b2ecdc44a583af7c9a08b70d8509e ./CHANGELOG-GPU-NODE-LIMIT.md
|
||||
a317376127be1e47b9ec9f0781fcfebdcbf7fccfaeb7840d9241f9586048fadb ./CHANGELOG-GROUNDED-KNOWLEDGE-SYNTHESIS.md
|
||||
02a8d3e541967e2d2ef9dd5451f470679e262ad851aca9f03563b322914c3181 ./CHANGELOG-ITERATIVE-GROUNDED-RESEARCH.md
|
||||
e167a9d64f63c3933ad40c5078684bc019db303043c34ea3965f3b089f3d32c7 ./CHANGELOG-KNOWLEDGE-SYNTHESIS.md
|
||||
fdda7e90ba9bd8e85bb9fa0fd205c4ea2dce1ee0ad45f9e24c1368b46f852181 ./CHANGELOG-PRODUCTION-READINESS-V1.1.md
|
||||
4257184617cf6fdecd7af464c982d51ac961fcc05ece39b74039261133e23d75 ./CHANGELOG-PRODUCTION-READINESS-V1.2.md
|
||||
d0643be0e0446f1d7b3a89074df70b953e404874a61584c16d873a213599db7e ./CHANGELOG-PRODUCTION-READINESS.md
|
||||
7c2d4e1eea0be2ca0f6f1f86e6be6d9e2cab0cb741cd255ddf45b33d62a5744d ./CHANGELOG-QUEUE-LIFECYCLE-FIX.md
|
||||
061c89039bc97937b40aecfac43f9beed048dd57971c748667b4b2b7057f25e9 ./CHANGELOG-RESEARCH-INTENT-GUARD.md
|
||||
fbf686a1acc2de6c4fbb56730a5f87dfdf28d93125fa56ae0c588c29ce492efe ./CHANGELOG-RESEARCH-ORCHESTRATION.md
|
||||
37e1803aa4bc2f8da851c748447e0e3cb59beb1c426248fba5df6ba9fa171cc5 ./CHANGELOG-RESEARCH-PREFETCH-GATE.md
|
||||
87f89a81e1124b18e092a4ea946cb037295cb9e884a46b392286272dc8134dd4 ./CHANGELOG-RUNTIME-HONEYCOMB.md
|
||||
2d04e6d385f4b902080a0bcaab510a846a8ae6a76cb757423c50425c8433e7f9 ./CHANGELOG-SEARXNG-DIAGNOSTICS.md
|
||||
9c760e167a9af2d3d8ca32c5aa4ef6bb4a3153047343a71c4b19ca9aef96ca32 ./CHANGELOG-SEARXNG-VISUALIZATION.md
|
||||
9f5c4684f27249a71f41e204e7a276e70079b68aa9d6ad71ff9a2dcb3c67bd16 ./CHANGELOG-SOURCE-AGENT-CONNECTION-FIX.md
|
||||
6315493546a2d66022bcdff849e3895b300496cfcbab1ef891c966e55a54cb04 ./CHANGELOG-SOURCE-AGENT-MODE.md
|
||||
455fb256203a41f244f878fba9c9994f1394184ece33839a919c6d2bceb96fc4 ./CHANGELOG-SOURCE-AGENT-UI-LIST-FIX.md
|
||||
e4e5ecd9b322d77b587a4166a8734a8d84b520ad605a1235d0bd5787398932f3 ./CHANGELOG-SOURCE-INBOX-PRIORITY-CLASSIFIER.md
|
||||
86ae2eaee9cd9d909259448591185d04a70c2c1c8e5f9fa7372ba074e9983276 ./CHANGELOG-SOURCE-INBOX-SECURITY-PROACTIVE.md
|
||||
be9f133ae933bdc0e0a8aa5d176dd3e39488a191337043533379e23d179f3ad2 ./CHANGELOG-SOURCE-ONLY-FILTERS.md
|
||||
5433a7c2e67ab35fb320bc872e9024fa5f3e765736184e9f878340b8b45407aa ./CHANGELOG-SQLITE-STARTUP-FIX.md
|
||||
5b9deeab0cd59b3c649fd73f129361a1e773ed3955cded0048b8cb280bb32e88 ./CHANGELOG-SQLITE-STORAGE.md
|
||||
9af1ba7139e923db9035b1ab1614e9ef5697055550f977befa741dcfc74ff9c4 ./CHANGELOG-VECTOR-AGENT-V3.md
|
||||
8a25725802b609eeca3cffe0d0aaebed186d3aed1b1c83c7ddba2c4ee48f6c29 ./CHANGELOG-VECTOR-GRAPH-QUALITY-V2.md
|
||||
a7bccc893903d5009ddd86cec156fbfd6887bd1e8fc040ba065c2c812a0345b3 ./CLUSTER-FAST-MODE.md
|
||||
4291c24ca9fccaac2b739b21ef671be89af1565873be8d359626707bdc439597 ./DOCKER-CONTROLLER-V9.md
|
||||
97e022b38c4596ce76ecf242d733e01ca4e4097036fdc8c85cfed4c367243cc4 ./Dockerfile
|
||||
a1aed7c198bc1ffc7af4a8f69ccf137541e4887ce5d59a0d67f2be7216a37dcd ./FILTER-SCOPES-SOURCES.md
|
||||
569c13e0ecf9845017119767386b03690949f03a373d7970e5685a49d9c3a8d3 ./GENERATE-THEN-REVIEW.md
|
||||
5534536965bf0479455f97324c242160202650ca1256f1ba0420b4ad67125e49 ./GLPI-KB.md
|
||||
8f0a438391ad05a3def0ac37a3d20b1a82e0a238187548b99a2c40a98abd0a34 ./ITERATIVE-GROUNDED-RESEARCH.md
|
||||
7c7edb6efef889702c5466131e57dacc1d9b9163e24b5b89fdfbc9b1c1bae02a ./KNOWLEDGE-SYNTHESIS.md
|
||||
696d2da2338cd8190b9614707e4059d78ce291e7334f273633aad815c3b6a6df ./Makefile
|
||||
e5e9a5268031fee9346462e4631e28ce8c8a8b46a4623e56327a1f310a09f646 ./OLLAMA-POOL.md
|
||||
2c0062941ef3edbd40d46b823934a7d0a3a9da7581b83d0b9360e8aaa7694b1b ./PERSISTENCE.md
|
||||
70122643e636bbbe50900072329c967d25fbf971f0115c1882ffe9077d2c8827 ./README.md
|
||||
2838cd19ac2bfa35bebbef2541f631b99221b5997bbb6dbc27146a66a3a1ad34 ./RUNTIME-CONTROLS-HONEYCOMB.md
|
||||
c3da43b33e550901d55789f2ee526c2e50f61ee028a3f59e0a40e77e1057fde7 ./SEARXNG-VISUALIZATION.md
|
||||
dc7b5dcb5fcdf506d1855b12c4c35c07d4aae9c613534fa45c20a38ac89c03d6 ./SOURCE-AGENT-MODE.md
|
||||
c69419c0327425186cfb84f25746feff226ce813cf467b3f252e729517455047 ./SOURCE-ONLY-FILTERS.md
|
||||
ae7bc1f1959071f79b76ca8a4ba103064ec0d5c5752af346175731ef4f636d9d ./SQLITE-STORAGE.md
|
||||
706b3912716d565082a44a0e707afd2ad07e4eb17cc23cae75772c1740205276 ./VALIDATION-ADAPTIVE-ARTICLE-WORKFLOW.md
|
||||
b0123b8425993dea7dd3864f930527b6a1a0e965ff29c0e4899620a64cd9451d ./VALIDATION-ANALYSIS-DASHBOARD.md
|
||||
0b53f17fa8cb855fa653625277196f3a9880156c9cd108be1c99aca782ceadf8 ./VALIDATION-ANALYSIS-OBSERVABILITY-V2.md
|
||||
2bcfeb932094dff1203aed517978c224888edaaa9e0095253a5f0906efd92b39 ./VALIDATION-ARTICLE-CREATION-GATES.md
|
||||
116a87c5e7c4fcfc333bbdf84979d5bab619b8a0936cd9f8838df04c9981bff7 ./VALIDATION-AUTONOMOUS-RESEARCH.md
|
||||
2f0133d068f4fa73302d38f65d3e33fc35ec0443f2177b0982d37823613a8f9b ./VALIDATION-CLUSTER-FAST-MODE.md
|
||||
e05449bab6250e585a6c0ac0735008cd533baf07dbf7149ddae609ae252d4425 ./VALIDATION-CONSTELLATION-ECO-TRANSITIONS.md
|
||||
3830269b6584e63b4d5cd3627ac5c713c0aedc80e189b35e920d1228de25ff5e ./VALIDATION-FILTER-SCOPES-SOURCES.md
|
||||
6c5e89e0e49e45e91b342550c9288f81526e294a3e412a429ad0f4ed220797d8 ./VALIDATION-GENERATE-THEN-REVIEW.md
|
||||
e7ab2cddec372db906c7883a6e0861b71999043cfb9b94e527c3b2aee4532035 ./VALIDATION-ITERATIVE-GROUNDED-RESEARCH.md
|
||||
ede12cec4477432ce1fcc49dd4c24f621ea035633cc9cd2460e0cc632f3b1a50 ./VALIDATION-PRODUCTION-READINESS-V1.2.md
|
||||
a487eec9429c959f405c5ffefae16a29c5ff56dcfe9256272dd417411beaf8f1 ./VALIDATION-PRODUCTION-READINESS.md
|
||||
ed62866492c9f62732b6f54a60b0e38174586a873a63e56646c11c0e25b5b2ba ./VALIDATION-QUEUE-LIFECYCLE-FIX.md
|
||||
9133afbe203257b413c3523b463a47797bd8c07584df100e0c62d4278a927d29 ./VALIDATION-RESEARCH-INTENT-GUARD.md
|
||||
e5d2e3da41bfb6e720f2a9a4b95d0002fb01835db5120674c137f57110312b33 ./VALIDATION-RESEARCH-ORCHESTRATION.md
|
||||
044cf894b43d8ce1746adce9e58d75a6c7b0c1f3f3d2f0abcdeaab1db435014d ./VALIDATION-RESEARCH-PREFETCH-GATE.md
|
||||
e08b0eaab827fe03d5a72327e8fdfe9ce4025097e28208714246969e7d059561 ./VALIDATION-SEARXNG-DIAGNOSTICS.md
|
||||
1cdfce41a88d01661368757a3c6a8ecf4c57c08f16308ab201c7a8d08b83e9a2 ./VALIDATION-SOURCE-AGENT-CONNECTION-FIX.md
|
||||
0afab72f31601a8e20eacc3d64a19a6e554ae7116e58e761073318fe5584b5b8 ./VALIDATION-SOURCE-AGENT-MODE.md
|
||||
2cf4668fa53714b272138c07d99b53e6bd99c15182702c0fa09c6254c4ddd8a0 ./VALIDATION-SOURCE-AGENT-UI-LIST-FIX.md
|
||||
da9db1169a35c95b9cfb1bc6117ae5d93cb759510ece5d8e24e18c5d5d9a4c89 ./VALIDATION-SOURCE-INBOX-PRIORITY-CLASSIFIER.md
|
||||
42dd0d8c4af7b5a8c77443f8348b801134db7ef6800872a9140e5f603b5d9846 ./VALIDATION-SOURCE-INBOX-SECURITY-PROACTIVE.md
|
||||
f46938b5de7e139e1b21868b1bedce6e312d69cd61602b4f8f43512a327dd422 ./VALIDATION-SOURCE-ONLY-FILTERS.md
|
||||
4cd120496664388717fe422a8c54380708df723fea26b35f81799665dfaf2c1c ./VALIDATION-SQLITE.md
|
||||
9f3c29823eaf604fa334590e92bc45fdd022bb48ed9b295449ef869c41ba56ff ./VECTOR-GRAPH-AGENT-OFFLOAD-V3.md
|
||||
2b00738524bc8d8e65cd168018f873482c2987655a377805f72dfcc81aad20fc ./VECTOR-GRAPH-EXPERIMENT.md
|
||||
f6699e4cdbaadc720e4b8a22c557d02319325283775a2b8a87ff78ca202e3386 ./VISUALIZATION-PERFORMANCE.md
|
||||
d33fbf0ce4b00b22467da5adfa53ad3e0dd061528ed58f4649f6eabfc1157a8b ./cmd/brain/main.go
|
||||
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./data/.gitkeep
|
||||
7ad10f51cf26747b4f186c540ecb7c77662f001800f0f7803422d45e8d72a4db ./data/graph.db
|
||||
587064aa2b583235d2235f4dcff2854b47347d47aef12ce266d56e9da6986843 ./data/runtime-settings.json
|
||||
21b51d0e1b7ed07c20f7f3a5da76dedab8df44a94a51724b67b0c3411599fe15 ./deployment/README.md
|
||||
3eeadef2212286fd07609f7867b64af7858d2416f63cc3b385a22989234bef4c ./deployment/docker-compose.controller-agent.yml
|
||||
1d553bd34d1ca2a367c2aca4186332dd99191ca0860fb615d78d2fdac7fd60f4 ./deployment/docker-compose.full.yml
|
||||
a9fa15905220d6a5007bf92aff195f30aa596731c60c601f4d5de0dfc4dccd92 ./deployment/docker-compose.source-agent.yml
|
||||
b5f5a2933ac516c9511e8ce8f7e96387d77d340a542c70714a33343c95a1e63a ./docker-compose.yml
|
||||
1edabd3a7fc60aebaca37fae228a5f34ddbf9ed18478aa1b114204cb956a4027 ./go.mod
|
||||
864c3376212497b070feca13d26cfc28e96876078ce7a0b5b0c0470e2dd4fbf8 ./go.sum
|
||||
ed7fa0e09e94aa9e89c93b00303d4ce6f0f20dac626ecb91181c3aabc76bc8ff ./integrations/agent/README.md
|
||||
9e15349702f876b1fa74e6caa1e97367d8a11b266fa5a1e40152b10c859b23c2 ./integrations/agent/glpi-ai-agent-neural-brain.patch
|
||||
3c0fc6913501976100521526e1ee8e7988d33fbce3f7b4bab26387d42b0966f5 ./integrations/knowledgebase/README.md
|
||||
12f8424f863b13f19aab9c2e6c2828c0ad824a55a62fe336e062db534102bc3a ./integrations/knowledgebase/glpi-ai-knowledgebase-neural-brain.patch
|
||||
6ab2acda1c1ee07e604f7d1984e9cd120da5616a92ae1a00e1745231115b2cb0 ./internal/activity/broker.go
|
||||
4d5f26bcf2aff96375d408a67ed1d50bb9c1f5b8ddcf04f0ba4d438997feed8f ./internal/activity/broker_test.go
|
||||
b68aa429e27add68ea090a01dca64c9e0cee77804e5d3dc22edab776ad0b7440 ./internal/articlequality/articlequality.go
|
||||
c967839018914431bfe6aead0f14f4535fbed9b9da59d955b75fc31137c1a0cb ./internal/articlequality/articlequality_test.go
|
||||
e54e9fa812f709b570bd6822a6bea3df28ec591e869151ed8b76f22608e665da ./internal/config/config.go
|
||||
a6a0665dd61ad662e3fd8616a592d6df0a6d304740aca5712b05047ebdc23b4e ./internal/config/config_test.go
|
||||
1029c5e6e5f72c4863dc18fdcd120e7fd28321385bf172d26eaf7dc2d580bb68 ./internal/engine/analysis_mutations.go
|
||||
a3916398375521589f5e611358ff9be4848e714ed29e873658e6ad67a18e2bf7 ./internal/engine/article.go
|
||||
b0f23ead7e436fb651062fd06d3c5a1671d909bf5b6d9f7160e9f9c40d8cf898 ./internal/engine/article_adaptive.go
|
||||
2660a4fabf11362aa2335f2322e32300f485a612291fb60f9ca899c5c4e28ad7 ./internal/engine/article_adaptive_test.go
|
||||
3daa8090548a9f3aeabe2ed24203e8b8bf48b2ae7f364d7f62bd45c9bfcb0c96 ./internal/engine/article_batch.go
|
||||
4ca9f66ec398678fd039c0020830f95e25bfdcdb52467d1cd5e3213771c961d9 ./internal/engine/article_cpu_quality.go
|
||||
f6502f5a7cecfc3361fdce94c7ae0c0df66ae9c18f65113d65cfefe1006f7d06 ./internal/engine/article_format_test.go
|
||||
77934cde83b3eeb052889cda703f5d0da0bfa12366d05fe9850afcaae7c13a66 ./internal/engine/article_generate_then_review.go
|
||||
55b6ddb6e88af559ad5df0a6038282c4e9797b3e537bc3418d3e1b707ab78608 ./internal/engine/article_generate_then_review_test.go
|
||||
426fe774d1ec66e2fe4c1a0b04b554fc2292f52e70dd0f72a507a72a9cd72e3e ./internal/engine/article_provenance.go
|
||||
491b0a3dd0448406b122d7bd6284c97740414588547d038a25f7291339ad5f6f ./internal/engine/article_research.go
|
||||
c3a2c265d12d6196ebedce027dc78b03292a0fe8a8bfd16ca275621125625039 ./internal/engine/article_research_cache.go
|
||||
3ca7037231935329d49b6b80553fbfef206c079a6aed4c2379dadd46d39ebc0d ./internal/engine/article_research_cache_test.go
|
||||
e7ba279452721f1f7c5d584272f5a92e9307fccdd1a0240bce79df058e6a1a7c ./internal/engine/article_research_test.go
|
||||
a6e66b595539095493eca9e8ac3a10ccbf8bc9ea8f25a13a110a98d1e0403bd6 ./internal/engine/autonomous_research.go
|
||||
9beffbd35ffa8a3e3d3016e98b6c33312f461aa0e8e291a160e16f5f25fde72c ./internal/engine/autonomous_research_test.go
|
||||
38e774b648e2ca2be929bc2abdd94313cb3c58eb6becac25ab521c66b39f11bb ./internal/engine/controller.go
|
||||
8c6066cd6e8142f49c1a49dfbfeac9e7e46eac04c5f5bbf7f207623f91aa27c7 ./internal/engine/engine.go
|
||||
5d67b99070671f3aeb3aa45a4533d437e12286f8f5299283006fce649ac5e44b ./internal/engine/engine_test.go
|
||||
2038a3909b147a630e361faae3f5c1cc22218d0f1336c91d4c1b795c52665e9b ./internal/engine/research_diagnostics.go
|
||||
0eb3f00e2ab73d2dc6a4cbc1a4038533a4bb20fbbbb6190abd39feff6b34b8e1 ./internal/engine/research_diagnostics_test.go
|
||||
c72e3f5daa6cfa1c4ee01f4c8fe38a6bc26bd8baeb66668d7b412b945cfb1f96 ./internal/engine/research_events.go
|
||||
759761d974b53fae97548e9f6ce14d78e559aff091694ae446328d32db6efcc2 ./internal/engine/research_work.go
|
||||
87a96d4a68e8e19bc15e787efa6d24fee3ae483aeb49910c6dd699a108d0a594 ./internal/engine/research_work_test.go
|
||||
4788163f25060322da85597f6cf5d4881463497ca9a9ddfbefaf5a3a3d985adf ./internal/engine/runtime.go
|
||||
02809a7dbbf10bdc086316314c57ddd4f20f7b7f1dffbb82fc9cc8927560a2b7 ./internal/engine/runtime_filter_test.go
|
||||
b74275f736f3a704b461a2e182603e7ce77a0f1732809ec66f1341f38f534354 ./internal/engine/source_inbox.go
|
||||
f6e2904aa232d0882cc15d589384bcbba02241cedcb200df218696dc51f179c0 ./internal/engine/source_inbox_test.go
|
||||
d251779f4bcee6d65a4af93b257ef52fa2d14dc39e8b9c1920bb5b7f8c8b1406 ./internal/engine/vector_graph.go
|
||||
4e32a2bd05da7ec90d792e38d59fc84962624072bf3af0dfcb9e318d3074e6b4 ./internal/engine/vector_graph_test.go
|
||||
b82980a646a92751bdd27a866ba1ffc6d34a3ba81d537f7b6e5a78e1432ee6fa ./internal/glpi/client.go
|
||||
525102be56bc51ce8a08655b1b2bb53b67f4a1828903585fd664ed6a5133f617 ./internal/glpi/client_test.go
|
||||
f6c0356a13247ba0cfd348f197aef9bf35e28646e794f7a7153cfc66c9b863a1 ./internal/graph/analysis_dashboard.go
|
||||
350c1ace352a8818701cfbf51e39372c3e56d1cd32b92f67dc343f35e3154807 ./internal/graph/analysis_dashboard_test.go
|
||||
5e1b064bda200cf6f14278093f7a48132b175c73973706322623b049b8083737 ./internal/graph/filter.go
|
||||
c14883e3db65a61672d0171c98a9c2d5ccff3fa6ac74e7236c16819d27ddf503 ./internal/graph/filter_test.go
|
||||
9585f6089d523ad33494439e8d20ceb130908a1d33399a93607c90ecef48a028 ./internal/graph/research_tasks.go
|
||||
e040907cc44da44b09e574644db21529ae582dc8422d5f62ae950dc3395824c0 ./internal/graph/research_tasks_test.go
|
||||
5670d71d8ca775ce5c85251cfe27e38623024738e70b0a65f3cd1cc04ff8e737 ./internal/graph/semantic_cluster.go
|
||||
e3fffa461fe56ad9c755e1d759fa19834b73294b8fb7bcc04086e18a8acaf5ab ./internal/graph/semantic_cluster_test.go
|
||||
28939e1a1ce9f6d9569b7b0261b4a407051679ed11cd4a502f6cbb0f22796d11 ./internal/graph/sqlite_backend.go
|
||||
744d306b9c7151543e91421575775ff6eb1b7e0af187ba7d92d8a298c51704de ./internal/graph/sqlite_backend_test.go
|
||||
356a97d5beab1b4723e049df27a3bbd13fa4933b7dd808e693dde57f1531736a ./internal/graph/sqlite_checkpoint_policy_test.go
|
||||
fa627f9cce8118d41f8af8e9514e629fce855bd64171e11d9e34619a7612d16f ./internal/graph/store.go
|
||||
611a1b5abc6a2afb2242373007e845fd53ab78dabdb287209bcd0bdf3d4a4666 ./internal/graph/store_test.go
|
||||
36864e737c773b61135f7f8ede5ce30ec41967c69e2f5c02aece69faf879ecb1 ./internal/graph/vector_layer.go
|
||||
4f1ae7d59814ca120ed5ca4d274117f3852c21176c745d9a4cd9629ab314ca9f ./internal/graph/vector_layer_test.go
|
||||
4476351d388d11c6becd78b4c918fc8d47dfd70500d8b3e2ddf81f7ff61a2cea ./internal/ingest/agent.go
|
||||
05bdcd8f82756af028807a9ba37e64232e2d93b6a803468d0a29665bbdb3067f ./internal/ingest/glpikb.go
|
||||
ff44d56d56b9e301fbcf0f028d1bae6f0b851665f4fee65222097f1a2450f24a ./internal/ingest/glpikb_test.go
|
||||
1b723beb88f8171615c69ac13cb47d10a39bee3fd37d4583efea99a99cb95541 ./internal/ingest/knowledge.go
|
||||
401294d406cc59680aa9627fee5ff2ec18f0e235e3237b96b654b1aa68d31d69 ./internal/ingest/knowledge_test.go
|
||||
ce87b7fc774c7f67145b6823231e362b5b96c5bd2216afb76cdccda106d99825 ./internal/model/model.go
|
||||
4ce33ab15baa9aebeaeb91d3a15f42f49a71713b737dcb7031a9e765b9d66f54 ./internal/ollama/client.go
|
||||
f34d967b66eef33d4441dd6dde445071926241c494df6dedb93617b8c810ade8 ./internal/ollama/client_test.go
|
||||
aabe6b4809c0f25dacb258ae7180b0281383f7508fe24d8c87f67c8c995d4fe6 ./internal/persist/coordinator.go
|
||||
46144aa719ff5c3ab787c214d8e32e4b3c6883bed068410e5403a26f6352cd6a ./internal/persist/coordinator_test.go
|
||||
09fc87e1e6147e0f3d221b51f6a5a39712a113ad16ce4048fad1b0fc3d5c82a9 ./internal/research/fetch.go
|
||||
6a9f269783a7c41d5b63f9bd5022f415ed1b5572041ca5ccae1512d6dc2a0b80 ./internal/research/fetch_test.go
|
||||
edd033455bfd3925e5cdf5183a363ad527e7cf81beca183339fdc0b5410349ee ./internal/research/searxng.go
|
||||
5a1155da5809f3a5dbd99a98094c5778424e3f4bf93fa14bd442e91cdcc08094 ./internal/research/searxng_test.go
|
||||
7a4aa107cbf0eae1493f671112378bb82624dfb360702748029931f7b4be82ed ./internal/sourceagent/agent.go
|
||||
64c512092fccb506597dca5d02545f0d6336116e9da907b66e366ce55985e5d0 ./internal/sourceagent/article_quality_compute.go
|
||||
0cc39e9e862f1d06080a4e4c963e8c99775e1f2b4ef506956908825471b95b9f ./internal/sourceagent/article_quality_compute_test.go
|
||||
051f214fe5203873b51b6b8a0b131f053bbeb8bb95dee6cc5818da6c5575a7de ./internal/sourceagent/compute.go
|
||||
6b0deb6d819d6dc291c704f3d3c1b2b03362a52cec1dbbea74b42f4bb1f899a7 ./internal/sourceagent/compute_test.go
|
||||
fc1ed2dfd0cfb68da57dd294757629010bc8f6c7f84daec81788acdb661523f5 ./internal/sourceagent/controller_store.go
|
||||
ec45635bff833af5477afcf47888641d55b5122e2a7aeda004df34f79fbfb44a ./internal/sourceagent/controller_test.go
|
||||
aa2b3feee511de88eecee1acad6c79a9c7fc33581955fa3acfa22c02b3ad52f3 ./internal/sourceagent/controller_types.go
|
||||
73c6b6a454f2721aef286fa8ba650680ab6fe701aec62c960a226883f54623e2 ./internal/sourceagent/docker_controller.go
|
||||
c7cefff99e3253c197cbee30755661cd527aa01f82c4e6f924b968c48a51d31d ./internal/sourceagent/sourceagent_test.go
|
||||
cfc93f66e127a244bc1a079ca9088ba49abe6e61a38fa76e2bde0fe0e32c1583 ./internal/sourceagent/store.go
|
||||
7156a61292b9aefacb392a4d4634c3595e1ac724e3afd14e0f1f80be025be3c1 ./internal/sourceagent/types.go
|
||||
e22ad21c3fa4fe55a44965a34861e7706861d427008e4e519c32937c296d3a5b ./internal/vectorgraph/vectorgraph.go
|
||||
1eb65cb1f1abd5fd371159d5251e7d32aa15cbc0de6ad56cd0e2c75bb3d84e03 ./internal/vectorgraph/vectorgraph_test.go
|
||||
de8e6755f45520bfe250fbb8ada97fbbeb33b41386b233a981696ed211224d48 ./internal/web/controller.go
|
||||
c76dd9a9812f19480bb0af092a5a3111ef4ca6e82cd009a55bd44f9163753010 ./internal/web/readiness.go
|
||||
04d3e0c2b7c6b2e6eb4d3cce337c28452c8228b5d54fe85dccd7c57417e3c3e8 ./internal/web/server.go
|
||||
94cdead28459c382d22013229dd56580f559be83b280e10c0698be45c88c04da ./internal/web/server_test.go
|
||||
f9b1f61ab3c2ff3303ad2ac5bc3407230538b636b5eba838fd59cfda2957e9bd ./internal/web/source_agents.go
|
||||
33457bf608d24203a99f84bae39cf00ffb0dce2db733f61176cb6351ba8d45b2 ./internal/web/static/analysis.css
|
||||
974e739cce93dc6141a301f8917934dc8abf5077d124054f700902f2bb0cb40b ./internal/web/static/analysis.html
|
||||
27e59c232987bbbd149c2b37ce780527a9ba12af481dca8819367aaee9e672e0 ./internal/web/static/analysis.js
|
||||
5887106080718a2cd3d97baddb37e09e9bc733768b567f553cce8084d1dec8bb ./internal/web/static/app.css
|
||||
dc425f67b79d990356b818d059a9d5f73c550b20892cc7d9587cc0fbc3061692 ./internal/web/static/app.js
|
||||
699a6b744cec5bfd4aafa7e736f28132700bc3af0bbbceefe1e1f650d431e739 ./internal/web/static/index.html
|
||||
8a8c382ac8b2db3a20b04d66793bec7bb9b215150312d0fce44ebda0cc02314b ./internal/web/static/source-agents.css
|
||||
67cb51eb19ede31e42f4fb597bc0ddc36f9fb23021bbea1c36b1e04641cb51db ./internal/web/static/source-agents.html
|
||||
d804a7b44c58ab2db6b6e0541fc8b01ae21c15fa058c89466698abd4a4a7fd2d ./internal/web/static/source-agents.js
|
||||
ee527efd31cc069b08ebbd53d3df7f6374cb245ae64e7e25278dc0b6381aefa4 ./internal/workqueue/limiter.go
|
||||
12209426f68411da5bd793a2c499992e914fc5de9ab48fa3e0c4c89215d77b9e ./internal/workqueue/limiter_test.go
|
||||
83aded814b6225395935e61fe957963c3c470f368fc9089f505b6de23e959115 ./preview.png
|
||||
8d2a2794dfc3048a25aefa7cc47545cb8d70842b9092db42dbce3176fdab0f46 ./run.ps1
|
||||
a5f073faef5358937f6fb46cfa489e6c42c06febe3da8c432474deff0ad77440 ./runs.jsonl
|
||||
|
||||
@@ -100,6 +100,8 @@ Agent Bearer tokens are accepted only on:
|
||||
- `GET /api/v1/agent/config`
|
||||
- `POST /api/v1/agent/heartbeat`
|
||||
- `POST /api/v1/agent/ingest`
|
||||
- `GET /api/v1/agent/compute/claim`
|
||||
- `POST /api/v1/agent/compute/{id}/result`
|
||||
|
||||
They are separate from `BRAIN_API_KEY` and do not authorize graph, runtime, research, THINK or administration APIs. Agent-management and Source-Inbox management endpoints use the normal `BRAIN_API_KEY` whenever it is configured.
|
||||
|
||||
@@ -173,3 +175,52 @@ Der proaktive Ablauf ist begrenzt und quellengebunden:
|
||||
7. Der Inbox-Status wird `materialized`. Das Dokument bleibt weiterhin als lokale Evidenz vor SearXNG auffindbar. Wird es später von einem akzeptierten Artikel-Claim zitiert, wechselt es wie bisher auf `used`.
|
||||
|
||||
Damit ist eine kuratierte Security-Quelle ein priorisierter, bestätigter Discovery-Kanal, aber kein Freibrief für unbelegte CVE-/Versions-/Severity-Angaben. Normale News-/Dokumentationsquellen behalten weiterhin den ressourcenschonenden passiven Candidate-Pfad.
|
||||
|
||||
## Crash-Recovery und genaue Provenienz
|
||||
|
||||
Security-Lifecycles werden im Source-Inbox-Store persistiert. Nach einem Neustart werden verwaiste `processing`-Claims sofort freigegeben. Meldet der Store `materialized`, der deterministische Security-Node fehlt aber nach einem harten Abbruch im Graph, wird der Eintrag automatisch requeued und idempotent neu materialisiert.
|
||||
|
||||
Inbox-Evidenz trägt eine `source_inbox_id`. Späteres Claim-Grounding setzt damit exakt die tatsächlich verwendete Content-Version auf `used`; ältere Revisionen derselben URL werden nicht mehr pauschal mitmarkiert.
|
||||
|
||||
## CPU compute jobs (`vector_graph`)
|
||||
|
||||
An integrated Source Agent can also act as a model-free CPU worker. This is independent of RSS/Web polling tasks: an Agent with zero source tasks can still advertise and execute `vector_graph` jobs.
|
||||
|
||||
Enable on the Agent:
|
||||
|
||||
```env
|
||||
BRAIN_AGENT_COMPUTE_ENABLED=true
|
||||
BRAIN_AGENT_COMPUTE_POLL_INTERVAL=5s
|
||||
BRAIN_AGENT_COMPUTE_MAX_BYTES=134217728
|
||||
```
|
||||
|
||||
Enable offload on the Brain:
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_ENABLED=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false
|
||||
BRAIN_VECTOR_GRAPH_AGENT_WAIT=2m
|
||||
```
|
||||
|
||||
The Agent receives already existing embeddings and performs deterministic LSH/k-NN/Cosine/local-scaling arithmetic. It does not start or call Ollama. Results are accepted only for the claimed job and are validated by the Brain before the Brain persists `semantic_neighbor` edges. With `BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false`, unavailable/stale/failed remote jobs automatically fall back to the identical local CPU implementation.
|
||||
|
||||
Agent tokens now additionally authorize only these compute endpoints:
|
||||
|
||||
- `GET /api/v1/agent/compute/claim`
|
||||
- `POST /api/v1/agent/compute/{id}/result`
|
||||
|
||||
The claim endpoint requires the Agent to have advertised the `vector_graph` capability in its heartbeat. These endpoints still do not authorize graph administration, THINK, research or runtime settings.
|
||||
|
||||
See `VECTOR-GRAPH-AGENT-OFFLOAD-V3.md` for the protocol and security boundaries.
|
||||
|
||||
|
||||
## v8: modellfreie Artikelprüfung
|
||||
|
||||
Ein Agent mit aktiviertem Compute-Worker meldet nun zwei CPU-Capabilities: `vector_graph` und `article_quality`. `article_quality` berechnet ausschließlich deterministische Struktur-, Redundanz-, Evidenzabdeckungs- und Informationsdichte-Metriken. Es werden weder Ollama noch Embeddings oder Chatmodelle aufgerufen. Das Brain rekonstruiert Pass/Fail und Rewrite-Empfehlungen aus festen Regeln und bleibt damit Owner der Qualitätsentscheidung.
|
||||
|
||||
## Docker-Controller-Rolle (v9)
|
||||
|
||||
Die Controller-Rolle ist eine zusätzliche, explizit freizugebende Agent-Capability. `BRAIN_AGENT_DOCKER_CONTROLLER_ENABLED=true` allein genügt nicht: Das Brain muss zusätzlich die zentrale Controller-Policy aktivieren. Der normale Source-Agent-Compose mountet Docker.sock absichtlich nicht; dafür existiert `deployment/docker-compose.controller-agent.yml` als Opt-in-Override.
|
||||
|
||||
Der Agent meldet `docker_controller` und, falls verfügbar, `docker_compose`. Autonome Jobs kommen ausschließlich aus freigegebenen Controller-Profilen; der Agent führt keine beliebigen vom LLM erzeugten Shell-Kommandos aus. Siehe `DOCKER-CONTROLLER-V9.md`.
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Validation – Analysis Observability v2
|
||||
|
||||
## Durchgeführt
|
||||
|
||||
- `gofmt` auf allen geänderten Go-Dateien.
|
||||
- `git diff --check`.
|
||||
- Fokussierte Unit-Tests für Run-Gruppierung, Laufzeitstatistik, Scan-Aggregation, Embedding-Aggregation und Pipeline-Summary.
|
||||
- Projektweite Go-Typkompilierung mit `go test ./... -run '^$'` in einer separaten Offline-Compile-Kopie.
|
||||
- `go vet ./...` in derselben Compile-Kopie.
|
||||
- `node --check internal/web/static/analysis.js`.
|
||||
- Legacy-Embedding-Aggregat-SQL separat gegen SQLite geprüft; summierte Vector-Deltas und Change Counts bleiben korrekt.
|
||||
|
||||
## Offline-Toolchain-Hinweis
|
||||
|
||||
Die Auslieferung bleibt unverändert bei Go 1.26 und `modernc.org/sqlite v1.37.1`. Die verfügbare Laufzeitumgebung besitzt nur Go 1.23 und keinen Netzdownload. Für die projektweite Typkompilierung wurde deshalb ausschließlich in einer separaten Testkopie ein minimales SQLite-Compile-Stub verwendet. Der Release-Baum enthält diesen Stub nicht.
|
||||
|
||||
Tests, die einen tatsächlich registrierten `modernc.org/sqlite`-Treiber benötigen, wurden in dieser Umgebung nicht als Runtime-Integrationstest ausgeführt.
|
||||
|
||||
## Erwartetes Verhalten nach Upgrade
|
||||
|
||||
- Bestehende alte No-op-Scans und Embedding-Batches erscheinen sofort verdichtet.
|
||||
- Neue unveränderte Scans erzeugen nicht mehr je einen Start- und Completion-Datensatz.
|
||||
- Neue Embedding-Bursts erzeugen deutlich weniger persistierte Events, behalten aber exakte Mutation-Deltas.
|
||||
- Security- und Article-Events bleiben deutlich länger im sichtbaren Analysefenster.
|
||||
- Neue Security-Läufe besitzen messbare Dauer und können in P50/P95-Statistiken erscheinen.
|
||||
@@ -0,0 +1,53 @@
|
||||
# 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.
|
||||
@@ -0,0 +1,40 @@
|
||||
# Validation – Production Readiness v1
|
||||
|
||||
## Ausgeführt
|
||||
|
||||
Die Release-Quellen bleiben unverändert auf Go 1.26 und `modernc.org/sqlite`. Die lokale Offline-Umgebung bietet nur Go 1.23; für Compile-/Unit-Validierung wurde deshalb ausschließlich eine separate Kopie auf Go 1.23 mit einem compile-only SQLite-Stub verwendet.
|
||||
|
||||
Erfolgreich:
|
||||
|
||||
- `go test ./internal/config -count=1`
|
||||
- `go test ./internal/activity -count=1`
|
||||
- Manifest-Fingerprint-Test in `internal/ingest`
|
||||
- fokussierte Engine-Tests für Bootstrap-Gate/-Recovery, Relations-Research-Gate und Security-Normalisierung
|
||||
- fokussierte Analysis-Tests für kausale Mutationen, Security-Reconciliation, parallele Query-Run-IDs und Embedding-Aggregation
|
||||
- projektweite Typkompilierung: `go test ./... -run '^$'`
|
||||
- `go vet ./...`
|
||||
- vollständige Tests für `internal/glpi`, `internal/ollama`, `internal/research`, `internal/workqueue`
|
||||
- Race-Detector für Broker, Bootstrap-Gate und Analysis-Run-Rekonstruktion
|
||||
- `node --check` für `analysis.js`, `app.js`, `source-agents.js`
|
||||
- YAML-Parsing für alle Compose-Dateien
|
||||
- SQLite-Sanity mit echter lokaler SQLite-Engine: Source-Agent-Schema, Claim-Recovery, candidate→queued→processing→done, Recovery-Requeue, append-only Analysis-Event-PK
|
||||
- `git diff --check`
|
||||
|
||||
## Bewusst nicht behauptet
|
||||
|
||||
Ein vollständiger Go-Runtime-Test gegen den echten `modernc.org/sqlite`-Treiber konnte in dieser Offline-Umgebung nicht ausgeführt werden, weil die Release-Toolchain Go 1.26 nicht verfügbar ist. Die SQLite-Syntax und kritischen State-Transitions wurden separat mit einer echten SQLite-Engine geprüft; die Go-Packages wurden mit dem isolierten Compile-Stub typgeprüft.
|
||||
|
||||
## Go/No-Go nach Deployment
|
||||
|
||||
Vor Aktivierung von Thinking sollte das Analyse-Dashboard folgende Bedingungen erfüllen:
|
||||
|
||||
1. `Startup-Bootstrap` = grün.
|
||||
2. `Analyse-Audit` = grün, `dropped_events=0`.
|
||||
3. `Embedding-Konsistenz` = grün, Coverage >= 99,5 %, genau 768 Dimensionen.
|
||||
4. `Persistenz` = grün, keine failed flushes.
|
||||
5. Ollama und Artikelmodelle = grün.
|
||||
6. Source Inbox / Security = grün; `queued=0`, `processing=0` nach Abarbeitung.
|
||||
7. Security-Run-Rekonstruktion = grün; keine Phantom-`running`-Runs.
|
||||
8. Ein normal materialisierter Security-Lauf zeigt kausal ungefähr `+1 Node`, `+0/1 Edge`, `+1 Vector` – niemals die Initial-Embedding-Massen anderer Workflows.
|
||||
9. Nach dem ersten Bootstrap sind unveränderte Learning-Scans Manifest-Fast-Path und sollten deutlich kürzer sein als der Bootstrap.
|
||||
10. Erst danach Thinking aktivieren und einen weiteren Analyseexport ziehen.
|
||||
@@ -0,0 +1,192 @@
|
||||
# Vector Graph v3: Orphan Pass, Vector-guided THINKING and Agent CPU Offload
|
||||
|
||||
This revision turns the mathematical `semantic_neighbor` layer into the default candidate infrastructure for expensive graph reasoning while keeping every strong semantic relation under Brain control.
|
||||
|
||||
## Goals
|
||||
|
||||
1. Connect a conservative first pass with an optional second pass for remaining Knowledge orphans.
|
||||
2. Let AI-THINK **evaluate** promising mathematical neighbours instead of searching the whole vector space again.
|
||||
3. Prevent generic Security/Hardening vocabulary from steering article web research toward the wrong entity.
|
||||
4. Move the CPU-heavy vector calculation to integrated Source Agents when requested, without Ollama/chat/embedding inference on the Agent.
|
||||
5. Stop analysis/audit events from timing out behind the Store's single primary SQLite connection.
|
||||
|
||||
## Mathematical passes
|
||||
|
||||
### Primary pass
|
||||
|
||||
`mutual-knn-local-scaling-v1` remains unchanged in interpretation:
|
||||
|
||||
- deterministic sparse random-projection LSH;
|
||||
- bounded exact Cosine shortlist;
|
||||
- local scaling;
|
||||
- reciprocal k-NN preferred;
|
||||
- output relation: `semantic_neighbor`, origin `vector-math`.
|
||||
|
||||
### Optional orphan second pass
|
||||
|
||||
After the primary graph is built, the Brain determines which production Knowledge nodes would still be direct Knowledge/evidence orphans when old `vector-math` edges are ignored. Nodes already touched by the new primary result are removed from that focus set.
|
||||
|
||||
`orphan-knn-local-scaling-v1` then searches only those focus nodes against the **full vector corpus**. It is intentionally one-sided and conservative; it does not try to force every node into the graph.
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_PASS=true
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_NEIGHBORS=2
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_CANDIDATES=256
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_MIN_SIMILARITY=0.80
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_MIN_AFFINITY=0.30
|
||||
```
|
||||
|
||||
The second pass is disabled by default until its false-positive rate has been reviewed on the target corpus.
|
||||
|
||||
## Vector-guided THINKING
|
||||
|
||||
With:
|
||||
|
||||
```env
|
||||
BRAIN_THINKING_VECTOR_GUIDED=true
|
||||
```
|
||||
|
||||
AI-THINK first scans existing `vector-math/semantic_neighbor` edges and chooses the strongest pair that has not already received an `ai-inference` decision. Reciprocal mathematical links are preferred.
|
||||
|
||||
Only if no unreviewed vector candidate exists does THINKING fall back to the previous embedding candidate search.
|
||||
|
||||
This separates responsibilities:
|
||||
|
||||
- `semantic_neighbor`: cheap mathematical candidate relation;
|
||||
- `same_topic`, `related_to`, `depends_on`, etc.: expensive interpreted relation.
|
||||
|
||||
The candidate source is written to analysis metadata as `candidate_source=vector_graph` or `embedding_search`.
|
||||
|
||||
## Agent CPU offload
|
||||
|
||||
The integrated `BRAIN_MODE=agent` runtime can now advertise the capability:
|
||||
|
||||
```text
|
||||
vector_graph
|
||||
```
|
||||
|
||||
The Agent does not need a source polling task to calculate these jobs.
|
||||
|
||||
### Brain configuration
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_ENABLED=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false
|
||||
BRAIN_VECTOR_GRAPH_AGENT_WAIT=2m
|
||||
```
|
||||
|
||||
`AGENT_REQUIRED=false` is recommended initially. If no compatible Agent is online, if the job times out, or if the graph changes while the job is in flight, the Brain falls back to the same local CPU implementation.
|
||||
|
||||
Set `BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=true` only when local CPU fallback is intentionally forbidden.
|
||||
|
||||
### Agent configuration
|
||||
|
||||
```env
|
||||
BRAIN_MODE=agent
|
||||
BRAIN_AGENT_BRAIN_URL=http://brain:8090
|
||||
BRAIN_AGENT_ID=cpu-agent-01
|
||||
BRAIN_AGENT_TOKEN=brain_agent_...
|
||||
BRAIN_AGENT_COMPUTE_ENABLED=true
|
||||
BRAIN_AGENT_COMPUTE_POLL_INTERVAL=5s
|
||||
BRAIN_AGENT_COMPUTE_MAX_BYTES=134217728
|
||||
```
|
||||
|
||||
The Source Agent still initializes no graph, Ollama, SearXNG, AI-THINK or article pipeline.
|
||||
|
||||
### Wire protocol
|
||||
|
||||
The Brain owns the vector index and submits an in-memory pull job. An Agent claims it through the authenticated Agent API.
|
||||
|
||||
The request is streamed as a compact binary payload:
|
||||
|
||||
- fixed protocol magic;
|
||||
- JSON job/config header;
|
||||
- node ID;
|
||||
- vector dimension;
|
||||
- raw little-endian float32 vector values.
|
||||
|
||||
This avoids expanding a roughly 62 MiB 21k×768 float32 matrix into much larger decimal JSON.
|
||||
|
||||
The Agent returns only the mathematical result (links, optional positions, statistics). The Brain validates:
|
||||
|
||||
- compute kind;
|
||||
- graph version;
|
||||
- every source/target ID against the submitted set;
|
||||
- no self-links;
|
||||
- finite 0..1 similarity/affinity/confidence values.
|
||||
|
||||
The Brain then applies the result through the same graph code as a local build. The Agent cannot choose an arbitrary edge type: the Brain persists only `semantic_neighbor` with origin `vector-math`.
|
||||
|
||||
If layout is enabled, 3D vector positions are also calculated on the Agent; no model inference is involved.
|
||||
|
||||
## No-model guarantee
|
||||
|
||||
A `vector_graph` compute job calls neither Chat nor Embed. It consumes embeddings that already exist in the Brain. Missing/new embeddings are still the Brain learning pipeline's responsibility.
|
||||
|
||||
Therefore:
|
||||
|
||||
- **edge calculation:** CPU-only arithmetic;
|
||||
- **orphan second pass:** CPU-only arithmetic;
|
||||
- **layout:** CPU-only arithmetic;
|
||||
- **Agent compute:** CPU-only arithmetic;
|
||||
- **creation of a missing embedding:** still embedding-model inference, outside the compute job.
|
||||
|
||||
## Research topic guard
|
||||
|
||||
Web research now has a deterministic primary-entity/topic gate before source quality can rescue a result.
|
||||
|
||||
Generic terms such as `security`, `hardening`, `support`, `testing`, `documentation`, `forensics` and template verbs are removed from the primary topic anchors. German compounds are supported (`browser` matches `Webbrowser`).
|
||||
|
||||
Examples covered by regression tests:
|
||||
|
||||
- Browser Security → BSI Webbrowser: allowed;
|
||||
- Browser Security → Proxmox Server Hardening: rejected;
|
||||
- Rate Limit Testing → Rate Limit source: allowed;
|
||||
- Rate Limit Testing → generic Web Security Testing: rejected.
|
||||
|
||||
A failed topic guard caps relevance and clears gap coverage even if an LLM assessment or high-quality domain would otherwise rank the source highly.
|
||||
|
||||
## Audit persistence
|
||||
|
||||
The append-only analysis writer now uses a dedicated SQLite connection to the same WAL database. The primary graph connection deliberately remains `MaxOpenConns(1)`, but audit telemetry no longer waits for that same Go connection slot.
|
||||
|
||||
The audit connection uses a 60-second SQLite busy timeout and longer writer deadlines. This addresses the observed `context deadline exceeded` persistence drops without weakening graph transaction ownership.
|
||||
|
||||
|
||||
## Real-corpus validation
|
||||
|
||||
Against the bundled production graph snapshot (21,289 production Knowledge vectors, 768 dimensions):
|
||||
|
||||
- primary pass: 16,940 `semantic_neighbor` links, 16,007 reciprocal;
|
||||
- orphan focus after the primary pass: 5,218 nodes;
|
||||
- orphan second pass: 3,038 additional links touching 2,200 focused orphan nodes;
|
||||
- full Agent wire payload: 66,568,747 bytes (63.48 MiB);
|
||||
- binary encode/decode in the supplied environment: ~0.38 s / ~0.43 s;
|
||||
- primary + orphan compute after wire decode: ~8.1 s CPU wall time;
|
||||
- no Chat or Embed call occurred inside the compute job.
|
||||
|
||||
The orphan pass kept `min_similarity=0.80`; the additional coverage therefore comes from a larger focused candidate search rather than globally weakening the similarity floor.
|
||||
|
||||
## Recommended first distributed test
|
||||
|
||||
Brain:
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_ENABLED=true
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_PASS=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false
|
||||
BRAIN_THINKING_VECTOR_GUIDED=true
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT=false
|
||||
```
|
||||
|
||||
Agent:
|
||||
|
||||
```env
|
||||
BRAIN_AGENT_COMPUTE_ENABLED=true
|
||||
BRAIN_AGENT_COMPUTE_POLL_INTERVAL=5s
|
||||
BRAIN_AGENT_COMPUTE_MAX_BYTES=134217728
|
||||
```
|
||||
|
||||
Keep layout disabled for the first run. Verify `vector.graph.agent.completed`, orphan count, second-pass edge examples and Agent status/capabilities before enabling layout or making Agent offload mandatory.
|
||||
@@ -0,0 +1,110 @@
|
||||
# Experimental Mathematical Vector Graph
|
||||
|
||||
This option builds a sparse Knowledge↔Knowledge neighbourhood layer from embeddings that are already stored in `graph.db`.
|
||||
|
||||
It is deliberately **not** an AI relation classifier. It performs no chat call and no new embedding call. If a node already has its normal search embedding, edge calculation and optional layout are CPU-only arithmetic.
|
||||
|
||||
## Why a separate relation type?
|
||||
|
||||
The generated edge type is `semantic_neighbor`, origin `vector-math`.
|
||||
|
||||
Vector proximity is useful for candidate discovery, navigation and graph structure, but it does not prove that two articles are factually `same_topic`, that one `depends_on` another, or that two statements are logically equivalent. Those stronger relations remain AI/review decisions.
|
||||
|
||||
## Algorithm
|
||||
|
||||
1. Use production Knowledge vectors with a common embedding dimension.
|
||||
2. Generate deterministic sparse random-projection signatures (LSH) to avoid all-pairs Cosine evaluation.
|
||||
3. Keep a bounded coarse shortlist per node.
|
||||
4. Calculate exact Cosine similarity only on that shortlist.
|
||||
5. Keep the local `k` nearest neighbours.
|
||||
6. Convert global distance into a locally scaled affinity using the node-specific k-neighbour distance.
|
||||
7. Emit an edge when the neighbourhood is reciprocal, or when a one-sided neighbour is exceptionally strong.
|
||||
8. Optional layout: deterministically project the stored vectors to 3D and smooth them over the accepted neighbour graph. This changes only visualization coordinates.
|
||||
|
||||
The local scaling is important for this corpus because different knowledge regions have very different similarity density. A single raw Cosine threshold otherwise over-links highly templated areas and under-links sparse areas.
|
||||
|
||||
## Test against the supplied graph
|
||||
|
||||
The production graph contained 21,289 production Knowledge vectors with 768 dimensions.
|
||||
|
||||
A deterministic 500-node exact-nearest-neighbour sample produced these raw Cosine medians:
|
||||
|
||||
- nearest neighbour: 0.9030
|
||||
- 2nd neighbour: 0.8518
|
||||
- 3rd neighbour: 0.8297
|
||||
- 5th neighbour: 0.8120
|
||||
- 10th neighbour: 0.7915
|
||||
|
||||
This confirms that the corpus has a high and non-uniform similarity baseline; raw `cosine >= 0.80` alone is not a sufficient thematic relation rule.
|
||||
|
||||
With the experimental defaults over the full 21,289-vector corpus:
|
||||
|
||||
- `k`: 4
|
||||
- exact shortlist: 96
|
||||
- minimum raw Cosine: 0.80
|
||||
- minimum local affinity: 0.35
|
||||
- accepted `semantic_neighbor` edges: 16,940
|
||||
- reciprocal edges: 16,007
|
||||
- Knowledge nodes touched by at least one accepted edge: 16,069 (75.5%)
|
||||
- exact Cosine comparisons: 2,043,744
|
||||
- full directed all-pairs comparisons avoided: >99.5%
|
||||
- CPU runtime in the supplied execution environment: about 6–7 seconds for the mathematical build itself
|
||||
|
||||
These numbers are a benchmark for this snapshot, not a universal quality guarantee. The option therefore stays disabled by default.
|
||||
|
||||
## Configuration
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_ENABLED=false
|
||||
BRAIN_VECTOR_GRAPH_NEIGHBORS=4
|
||||
BRAIN_VECTOR_GRAPH_CANDIDATES=96
|
||||
BRAIN_VECTOR_GRAPH_MIN_SIMILARITY=0.80
|
||||
BRAIN_VECTOR_GRAPH_MIN_AFFINITY=0.35
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_PASS=false
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_NEIGHBORS=2
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_CANDIDATES=256
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_MIN_SIMILARITY=0.80
|
||||
BRAIN_VECTOR_GRAPH_ORPHAN_MIN_AFFINITY=0.30
|
||||
BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=false
|
||||
BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false
|
||||
BRAIN_VECTOR_GRAPH_AGENT_WAIT=2m
|
||||
BRAIN_THINKING_VECTOR_GUIDED=true
|
||||
BRAIN_VECTOR_GRAPH_LAYOUT=false
|
||||
```
|
||||
|
||||
Recommended A/B sequence:
|
||||
|
||||
1. enable `BRAIN_VECTOR_GRAPH_ENABLED=true` with layout still `false`;
|
||||
2. compare orphan coverage, neighbour examples and false-positive rate;
|
||||
3. tune thresholds if necessary;
|
||||
4. only then test `BRAIN_VECTOR_GRAPH_LAYOUT=true`.
|
||||
|
||||
## Agent CPU offload
|
||||
|
||||
The `internal/vectorgraph` package has no Brain model, Ollama, network or persistence dependency. v3 adds an authenticated pull-job protocol so an integrated `BRAIN_MODE=agent` worker can calculate the vector graph without any Chat or Embed call.
|
||||
|
||||
The Brain still owns the vector index and graph state. For a rebuild it streams the current float32 vectors in a compact binary format, the Agent returns only mathematical links/positions/statistics, and the Brain validates graph version, endpoints and numeric ranges before applying `semantic_neighbor` edges.
|
||||
|
||||
Because a full 21k×768 matrix is roughly 62 MiB before protocol overhead, offload is intentionally optional rather than automatic. On a single host the local 3.7-second rebuild may remain cheaper than transferring the whole matrix. Offload is more attractive when the Agent has spare CPU on another machine.
|
||||
|
||||
```env
|
||||
BRAIN_VECTOR_GRAPH_AGENT_OFFLOAD=true
|
||||
BRAIN_VECTOR_GRAPH_AGENT_REQUIRED=false
|
||||
```
|
||||
|
||||
Agent side:
|
||||
|
||||
```env
|
||||
BRAIN_AGENT_COMPUTE_ENABLED=true
|
||||
BRAIN_AGENT_COMPUTE_POLL_INTERVAL=5s
|
||||
BRAIN_AGENT_COMPUTE_MAX_BYTES=134217728
|
||||
```
|
||||
|
||||
`AGENT_REQUIRED=false` retains local CPU fallback when no compute Agent is online or when a returned job is stale. See `VECTOR-GRAPH-AGENT-OFFLOAD-V3.md`.
|
||||
|
||||
## Safety / interpretation
|
||||
|
||||
- The layer does not overwrite AI `same_topic`, `related_to` or `depends_on` edges.
|
||||
- Vector edges are replaceable derived data (`origin=vector-math`).
|
||||
- Layout is independently switchable and disabled by default.
|
||||
- The Brain only runs the experiment when real Ollama embeddings are healthy; deterministic fallback embeddings are not used for this layer.
|
||||
+4
-1
@@ -20,7 +20,7 @@ import (
|
||||
webui "github.com/local/glpi-neural-brain/internal/web"
|
||||
)
|
||||
|
||||
const buildVersion = "source-agent-integrated-v1.1"
|
||||
const buildVersion = "production-readiness-v1.2"
|
||||
|
||||
const agentStatusHTML = `<!doctype html>
|
||||
<html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -55,6 +55,9 @@ func runAgent(ctx context.Context, cfg config.Config) {
|
||||
BrainURL: cfg.AgentBrainURL, AgentID: cfg.AgentID, Token: cfg.AgentToken, DataDir: cfg.DataDir,
|
||||
ConfigFile: cfg.AgentConfigFile, ConfigRefresh: cfg.AgentConfigRefresh, HTTPTimeout: cfg.AgentHTTPTimeout,
|
||||
Concurrency: cfg.AgentConcurrency, BatchSize: cfg.AgentBatchSize, AllowPrivate: cfg.AgentAllowPrivate, Version: buildVersion,
|
||||
ComputeEnabled: cfg.AgentComputeEnabled, ComputePollInterval: cfg.AgentComputePollInterval, ComputeMaxBytes: cfg.AgentComputeMaxBytes,
|
||||
DockerControllerEnabled: cfg.AgentDockerControllerEnabled, DockerSocket: cfg.AgentDockerSocket, DockerComposeBinary: cfg.AgentDockerComposeBinary,
|
||||
ControllerPollInterval: cfg.AgentControllerPollInterval, ControllerMaxDuration: cfg.AgentControllerMaxDuration,
|
||||
})
|
||||
if err != nil {
|
||||
slog.Error("source agent initialization failed", "error", err)
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"action": "merge",
|
||||
"article_id": "KB-AI-THINK-ARTICLE-20260809-18EF3C86F633",
|
||||
"article_type": "reference",
|
||||
"fingerprint": "18ef3c86f6331d17713325e7384f2e9ba299c43cb54554cb998a8628b0103a94",
|
||||
"generated_at": "2026-08-09T03:29:56.3478332Z",
|
||||
"schema": "article-source-fingerprint/v1",
|
||||
"target_article_id": "24726dc38248d6e6f97c02d3"
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"action": "merge",
|
||||
"article_id": "KB-AI-THINK-ARTICLE-20260809-CE6F8803DB12",
|
||||
"article_type": "reference",
|
||||
"fingerprint": "ce6f8803db12333e181f28c7a9506ac96df8878a44415cdc82ccf8c79bf8fae9",
|
||||
"generated_at": "2026-08-09T03:36:38.6018739Z",
|
||||
"schema": "article-source-fingerprint/v1",
|
||||
"target_article_id": "5c3da788f26f38c16e056309"
|
||||
}
|
||||
@@ -0,0 +1,244 @@
|
||||
{
|
||||
"action": "merge",
|
||||
"ai_source_count": 0,
|
||||
"article_id": "KB-AI-THINK-ARTICLE-20260809-18EF3C86F633",
|
||||
"article_path": "E:\\GoProjects\\glpi-neural-brain\\staging\\kb-ai-think-article-20260809-18ef3c86f633.json",
|
||||
"article_review": {
|
||||
"accepted": true,
|
||||
"confidence": 0.95,
|
||||
"meta_content_detected": false,
|
||||
"unsupported_claims": null,
|
||||
"issues": null,
|
||||
"claim_reviews": [
|
||||
{
|
||||
"claim": "Die Ausnutzung dieser TTPs kann zur Kompromittierung von Systemen, Datenmanipulation und zur Durchführung von Lateral Movement führen.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"24726dc38248d6e6f97c02d3",
|
||||
"7046beb93fb30a1d3811132e",
|
||||
"a28b1f725cd6b0a4f26ff9fb",
|
||||
"b85afb95a4e16438f37a45ca",
|
||||
"da9f34c9e1cff557664ae4ea"
|
||||
],
|
||||
"reason": "Die TTPs sind in den internen Quellen als Malware und als Verhaltensmuster beschrieben, die zur Kompromittierung führen können."
|
||||
},
|
||||
{
|
||||
"claim": "Die Malware nutzt häufig Linux-spezifische Funktionen wie Cronjobs, SSH-Autorisierungskeys und Kernelmodule.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"24726dc38248d6e6f97c02d3",
|
||||
"7046beb93fb30a1d3811132e",
|
||||
"a28b1f725cd6b0a4f26ff9fb",
|
||||
"b85afb95a4e16438f37a45ca",
|
||||
"da9f34c9e1cff557664ae4ea"
|
||||
],
|
||||
"reason": "Die internen Quellen beschreiben explizit die Nutzung von Cronjobs, SSH-Autorisierungskeys und Kernelmodulen in den TTPs der genannten Malwareprofile."
|
||||
},
|
||||
{
|
||||
"claim": "Diese Profile dienen der Erkennung, Triage und Forensik und enthalten keine Bedienungs- oder Einsatzanleitung.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"24726dc38248d6e6f97c02d3",
|
||||
"7046beb93fb30a1d3811132e",
|
||||
"a28b1f725cd6b0a4f26ff9fb",
|
||||
"b85afb95a4e16438f37a45ca",
|
||||
"da9f34c9e1cff557664ae4ea"
|
||||
],
|
||||
"reason": "Die internen Quellen bestätigen explizit, dass die Profile nur zur Erkennung, Triage und Forensik dienen und keine Bedienungsanleitung enthalten."
|
||||
},
|
||||
{
|
||||
"claim": "Gemeinsame beobachtete TTPs umfassen: T1014 (Rootkit), T1059.004 (Unix Shell) und T1685 (Disable or Modify Tools).",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"24726dc38248d6e6f97c02d3",
|
||||
"7046beb93fb30a1d3811132e",
|
||||
"a28b1f725cd6b0a4f26ff9fb",
|
||||
"b85afb95a4e16438f37a45ca",
|
||||
"da9f34c9e1cff557664ae4ea"
|
||||
],
|
||||
"reason": "Die internen Quellen beschreiben explizit die TTPs T1014, T1059.004 und T1685 als beobachtete Verhaltensmuster der genannten Malwareprofile."
|
||||
},
|
||||
{
|
||||
"claim": "Die Softwareprofile COATHANGER (S1105), Skidmap (S0468), Drovorub (S0502), Ebury (S0377) und REPTILE (S1219) sind in MITRE ATT\u0026CK als Malware geführt.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"24726dc38248d6e6f97c02d3",
|
||||
"7046beb93fb30a1d3811132e",
|
||||
"a28b1f725cd6b0a4f26ff9fb",
|
||||
"b85afb95a4e16438f37a45ca",
|
||||
"da9f34c9e1cff557664ae4ea"
|
||||
],
|
||||
"reason": "Die internen Quellen bestätigen explizit, dass die genannten Softwareprofile in MITRE ATT\u0026CK als Malware geführt sind."
|
||||
}
|
||||
]
|
||||
},
|
||||
"confidence": 0.95,
|
||||
"generated_at": "2026-08-09T03:29:56.3473216Z",
|
||||
"generation_depth": 1,
|
||||
"grounded_research_evidence": [],
|
||||
"knowledge_brief": {
|
||||
"topic": "T1014 / T1059.004 / T1685",
|
||||
"purpose": "Die Quellen beschreiben jeweils separate Malware-Profile mit gemeinsamen TTPs (T1014, T1059.004, T1685), die in der jeweiligen Software- und Gruppenkontexte relevant sind. Ein gemeinsamer Artikel zur Konsolidierung dieser TTPs und ihrer Verhaltensmuster in der jeweiligen Umgebung ist sinnvoll, um eine umfassende Erkennung und Forensik zu ermöglichen. Die Quellen sind produktiv und können als Staging-Entwurf für einen referenziellen Artikel zur Konsolidierung der TTPs genutzt werden.",
|
||||
"scope": null,
|
||||
"facts": null,
|
||||
"symptoms": null,
|
||||
"prerequisites": null,
|
||||
"solution_steps": null,
|
||||
"validation_steps": null,
|
||||
"troubleshooting": null,
|
||||
"contradictions": null,
|
||||
"critical_gaps": null,
|
||||
"optional_gaps": null,
|
||||
"resolved_gaps": null,
|
||||
"missing_information": null,
|
||||
"research_queries": null,
|
||||
"ready_for_article": true
|
||||
},
|
||||
"language": "de-DE",
|
||||
"open_questions": null,
|
||||
"pipeline": "adaptive_generate_review/v2",
|
||||
"planning": {
|
||||
"article_type": "reference",
|
||||
"contradictions": [],
|
||||
"expected_value": "T1014 / T1059.004 / T1685",
|
||||
"missing_information": [],
|
||||
"reason": "Die Quellen beschreiben jeweils separate Malware-Profile mit gemeinsamen TTPs (T1014, T1059.004, T1685), die in der jeweiligen Software- und Gruppenkontexte relevant sind. Ein gemeinsamer Artikel zur Konsolidierung dieser TTPs und ihrer Verhaltensmuster in der jeweiligen Umgebung ist sinnvoll, um eine umfassende Erkennung und Forensik zu ermöglichen. Die Quellen sind produktiv und können als Staging-Entwurf für einen referenziellen Artikel zur Konsolidierung der TTPs genutzt werden."
|
||||
},
|
||||
"production_ratio": 1,
|
||||
"productive_source_count": 7,
|
||||
"research_material": [
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Sicherheitsforscher entdecken unter anderem kritische Lücken in TP-Link Omada, die sich auf weitere Netzwerkkomponenten ausweiten.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "T1014 / T1059.004 / T1685 aktuelle offizielle Dokumentation Version Support",
|
||||
"relevance": 0.32922420546949904,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "Sicherheitsupdates: TP-Links Netzwerk-Ökosystem Omada ist kompromittierbar",
|
||||
"url": "https://www.heise.de/news/Sicherheitsupdates-TP-Links-Netzwerk-Oekosystem-Omada-ist-kompromittierbar-11399435.html"
|
||||
},
|
||||
{
|
||||
"actionable": true,
|
||||
"assessment_reason": "Volltextmaterial für die Artikelsynthese gesammelt; die fachliche Belegprüfung erfolgt anschließend am generierten Artikel.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": [
|
||||
"ADAPTIVE-1"
|
||||
],
|
||||
"excerpt": "T1059.004\n\nCommand and Scripting Interpreter: Bash\n\nCopy Markdown Open with LLM\n\nDescription from ATT\u0026CK\n\nAdversaries may abuse Unix shell commands and scripts for execution. Unix shells are the primary command prompt on Linux, macOS, and ESXi systems, though many variations of the Unix shell exist (e.g. sh, ash, bash, zsh, etc.) depending on the specific OS or distribution.(Citation: DieNet Bash)(Citation: Apple ZShell) Unix shells can control every aspect of a system, with certain commands requiring elevated privileges.\n\nUnix shells also support scripts that enable sequential execution of commands as well as other typical programming operations such as conditionals and loops. Common uses of shell scripts include long or repetitive tasks, or the need to run the same set of commands on multiple systems.\n\nAdversaries may abuse Unix shells to execute various commands or payloads. Interacti…",
|
||||
"fetched": true,
|
||||
"language": "en-US",
|
||||
"query": "T1014 / T1059.004 / T1685 aktuelle offizielle Dokumentation Version Support",
|
||||
"relevance": 0.4533333333333333,
|
||||
"relevant": true,
|
||||
"round": 1,
|
||||
"source_quality": "primary",
|
||||
"source_quality_score": 0.88,
|
||||
"title": "Atomic Red Team™: T1059.004",
|
||||
"url": "https://www.atomicredteam.io/docs/atomics/T1059.004"
|
||||
},
|
||||
{
|
||||
"actionable": true,
|
||||
"assessment_reason": "Volltextmaterial für die Artikelsynthese gesammelt; die fachliche Belegprüfung erfolgt anschließend am generierten Artikel.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": [
|
||||
"ADAPTIVE-1"
|
||||
],
|
||||
"excerpt": "Command and Scripting Interpreter: Unix Shell, Sub-technique T1059.004 - Enterprise | MITRE ATT\u0026CK®\n\nATT\u0026CKcon 7.0 in-person tickets are open! Join us October 27-28, 2026 in McLean, VA. Register here for in-person tickets; hotel and location details can be found in the FAQ .\n\nHome\n\nTechniques\n\nEnterprise\n\nCommand and Scripting Interpreter\n\nUnix Shell\n\nCommand and Scripting Interpreter:\nUnix Shell\n\nOther sub-techniques of Command and Scripting Interpreter\n(13)\n\nID\n\nName\n\nT1059.001\n\nPowerShell\n\nT1059.002\n\nAppleScript\n\nT1059.003\n\nWindows Command Shell\n\nT1059.004\n\nUnix Shell\n\nT1059.005\n\nVisual Basic\n\nT1059.006\n\nPython\n\nT1059.007\n\nJavaScript\n\nT1059.008\n\nNetwork Device CLI\n\nT1059.009\n\nCloud API\n\nT1059.010\n\nAutoHotKey \u0026 AutoIT\n\nT1059.011\n\nLua\n\nT1059.012\n\nHypervisor CLI\n\nT1059.013\n\nContainer CLI/API\n\nAdversaries may abuse Unix shell commands and scripts for execution. Unix shells are the primary…",
|
||||
"fetched": true,
|
||||
"language": "en-US",
|
||||
"query": "T1014 / T1059.004 / T1685 aktuelle offizielle Dokumentation Version Support",
|
||||
"relevance": 0.4533333333333333,
|
||||
"relevant": true,
|
||||
"round": 1,
|
||||
"source_quality": "reputable_secondary",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "Command and Scripting Interpreter: Unix Shell, Sub-technique T1059.004 - Enterprise | MITRE ATT\u0026CK®",
|
||||
"url": "https://attack.mitre.org/techniques/T1059/004/"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat Ansible Automation Platform ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Cross-Site-Scripting-Angriffe durchzuführen, Daten zu manipulieren, einen Denial-of-Service-Zustand auszulösen oder beliebigen Code auszuführen.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "T1014 / T1059.004 / T1685 current official documentation version support",
|
||||
"relevance": 0.3523682560556384,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[UPDATE] [hoch] Red Hat Ansible Automation Platform (node-tar, linkify-it, protobufjs, brace-expansion, fast-uri, DOMPurify): Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2452"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Daten zu manipulieren, Cross-Site-Scripting-Angriffe durchzuführen, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand zu verursachen.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "T1014 / T1059.004 / T1685 current official documentation version support",
|
||||
"relevance": 0.35112975223628945,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[UPDATE] [mittel] Golang Go: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1437"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Apache Portable Runtime (APR) ausnutzen, um SQL-Injection durchzuführen, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "T1014 / T1059.004 / T1685 current official documentation version support",
|
||||
"relevance": 0.35080332925190905,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[NEU] [hoch] Apache Portable Runtime (APR): Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2697"
|
||||
}
|
||||
],
|
||||
"research_query": "",
|
||||
"review_model": "qwen3:8b",
|
||||
"review_repair_attempts": 0,
|
||||
"source_fingerprint": "18ef3c86f6331d17713325e7384f2e9ba299c43cb54554cb998a8628b0103a94",
|
||||
"source_node_ids": [
|
||||
"0a6db0c3b08a3d6ed51e00d1",
|
||||
"24726dc38248d6e6f97c02d3",
|
||||
"7046beb93fb30a1d3811132e",
|
||||
"a28b1f725cd6b0a4f26ff9fb",
|
||||
"b85afb95a4e16438f37a45ca",
|
||||
"da9f34c9e1cff557664ae4ea",
|
||||
"ec370a4e6742cfb9c586690b"
|
||||
],
|
||||
"source_nodes": [
|
||||
"KB-SEC-ATTCK-SW-0022",
|
||||
"KB-SEC-ATTCK-SW-0041",
|
||||
"KB-SEC-ATTCK-SW-0042",
|
||||
"KB-SEC-ATTCK-SW-0045",
|
||||
"KB-SEC-ATTCK-SW-0061",
|
||||
"KB-SEC-ATTCK-SW-0115",
|
||||
"KB-SEC-ATTCK-SW-0130"
|
||||
],
|
||||
"status": "staging",
|
||||
"subtype": "knowledge_synthesis",
|
||||
"synthesis_model": "gemma3:12b",
|
||||
"target_article_id": "KB-SEC-ATTCK-SW-0022",
|
||||
"target_node_id": "24726dc38248d6e6f97c02d3"
|
||||
}
|
||||
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"action": "merge",
|
||||
"ai_source_count": 0,
|
||||
"article_id": "KB-AI-THINK-ARTICLE-20260809-CE6F8803DB12",
|
||||
"article_path": "E:\\GoProjects\\glpi-neural-brain\\staging\\kb-ai-think-article-20260809-ce6f8803db12.json",
|
||||
"article_review": {
|
||||
"accepted": true,
|
||||
"confidence": 0.95,
|
||||
"meta_content_detected": false,
|
||||
"unsupported_claims": null,
|
||||
"issues": null,
|
||||
"claim_reviews": [
|
||||
{
|
||||
"claim": "ATT\u0026CK-Techniken dienen als Hunting-Hypothesen, nicht als starre Signaturen.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"1bc981203dc98432be9e722c",
|
||||
"25981c5b303a2504cbc61564",
|
||||
"270f0077cccaf15914f840e2",
|
||||
"3ccbf9acf76f74209380ed40",
|
||||
"5c3da788f26f38c16e056309",
|
||||
"5e036fff1538ff653441edd5",
|
||||
"d458920d4b3f2c27ce172f2d"
|
||||
],
|
||||
"reason": "Die Quellen bestätigen, dass ATT\u0026CK-Zuordnungen allein keine belastbaren Attributionsbeweise sind und zur defensiven Korrelation dienen."
|
||||
},
|
||||
{
|
||||
"claim": "Die Attribution von Bedrohungsaktivitäten erfordert mehrere unabhängige Quellen und sollte Unsicherheiten explizit dokumentieren.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"1bc981203dc98432be9e722c",
|
||||
"25981c5b303a2504cbc61564",
|
||||
"270f0077cccaf15914f840e2",
|
||||
"3ccbf9acf76f74209380ed40",
|
||||
"5c3da788f26f38c16e056309",
|
||||
"5e036fff1538ff653441edd5",
|
||||
"d458920d4b3f2c27ce172f2d"
|
||||
],
|
||||
"reason": "Die Quellen bestätigen, dass ATT\u0026CK-Zuordnungen allein keine belastbaren Attributionsbeweise sind und dass Unsicherheiten dokumentiert werden müssen."
|
||||
},
|
||||
{
|
||||
"claim": "Die Techniken T1087.002 (Domain Account), T1560.001 (Archive via Utility) und T1018 (Remote System Discovery) werden von verschiedenen Threat-Gruppen in Cloud- und Domänenumgebungen eingesetzt.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"1bc981203dc98432be9e722c",
|
||||
"25981c5b303a2504cbc61564",
|
||||
"270f0077cccaf15914f840e2",
|
||||
"3ccbf9acf76f74209380ed40",
|
||||
"5c3da788f26f38c16e056309",
|
||||
"5e036fff1538ff653441edd5",
|
||||
"d458920d4b3f2c27ce172f2d"
|
||||
],
|
||||
"reason": "Die Quellen bestätigen, dass die genannten Techniken in den Threat-Intelligence-Profilen der genannten Gruppen vorkommen und in Cloud- und Domänenumgebungen angewendet werden."
|
||||
},
|
||||
{
|
||||
"claim": "Mehrere Threat-Intelligence-Profile (G0045, G1054, G0059, G0060, G0125) enthalten sich überschneidende ATT\u0026CK-Techniken.",
|
||||
"verdict": "supported",
|
||||
"source_refs": [
|
||||
"1bc981203dc98432be9e722c",
|
||||
"25981c5b303a2504cbc61564",
|
||||
"270f0077cccaf15914f840e2",
|
||||
"3ccbf9acf76f74209380ed40",
|
||||
"5c3da788f26f38c16e056309",
|
||||
"5e036fff1538ff653441edd5",
|
||||
"d458920d4b3f2c27ce172f2d"
|
||||
],
|
||||
"reason": "Die Quellen bestätigen, dass die genannten Threat-Intelligence-Profile sich in ihren Techniken überschneiden."
|
||||
}
|
||||
]
|
||||
},
|
||||
"confidence": 0.95,
|
||||
"generated_at": "2026-08-09T03:36:38.6013562Z",
|
||||
"generation_depth": 1,
|
||||
"grounded_research_evidence": [],
|
||||
"knowledge_brief": {
|
||||
"topic": "merge",
|
||||
"purpose": "Die Quellen enthalten mehrere produktive Artikel zu verschiedenen Threat-Gruppen und Kampagnen, die sich in Bezug auf ATT\u0026CK-Techniken und TTPs überschneiden. Sie können als Staging-Entwurf in einen gemeinsamen Referenzartikel zu ATT\u0026CK-Techniken in Cloud- und Domänenumgebungen konsolidiert werden. Der Zielartikel würde eine umfassende Referenz zu Techniken wie T1087.002, T1560.001 und T1018 sowie deren Anwendung in diesen Umgebungen bieten.",
|
||||
"scope": null,
|
||||
"facts": null,
|
||||
"symptoms": null,
|
||||
"prerequisites": null,
|
||||
"solution_steps": null,
|
||||
"validation_steps": null,
|
||||
"troubleshooting": null,
|
||||
"contradictions": null,
|
||||
"critical_gaps": null,
|
||||
"optional_gaps": null,
|
||||
"resolved_gaps": null,
|
||||
"missing_information": null,
|
||||
"research_queries": [
|
||||
"Welche Unterschiede und Gemeinsamkeiten bestehen zwischen den Techniken T1018, T1560.001 und T1087.002 in Bezug auf ihre Anwendung in Cloud- und Domänenumgebungen?"
|
||||
],
|
||||
"ready_for_article": true
|
||||
},
|
||||
"language": "de-DE",
|
||||
"open_questions": null,
|
||||
"pipeline": "adaptive_generate_review/v2",
|
||||
"planning": {
|
||||
"article_type": "reference",
|
||||
"contradictions": [],
|
||||
"expected_value": "merge",
|
||||
"missing_information": [],
|
||||
"reason": "Die Quellen enthalten mehrere produktive Artikel zu verschiedenen Threat-Gruppen und Kampagnen, die sich in Bezug auf ATT\u0026CK-Techniken und TTPs überschneiden. Sie können als Staging-Entwurf in einen gemeinsamen Referenzartikel zu ATT\u0026CK-Techniken in Cloud- und Domänenumgebungen konsolidiert werden. Der Zielartikel würde eine umfassende Referenz zu Techniken wie T1087.002, T1560.001 und T1018 sowie deren Anwendung in diesen Umgebungen bieten."
|
||||
},
|
||||
"production_ratio": 1,
|
||||
"productive_source_count": 8,
|
||||
"research_material": [
|
||||
{
|
||||
"actionable": true,
|
||||
"assessment_reason": "Die Quelle beschreibt die Technik T1087.002 (Domain Account) im Kontext von Cloud- und Domänenumgebungen, aber sie behandelt nicht direkt T1018 oder T1560.001. Sie bietet jedoch eine fachlich relevante Beschreibung der Anwendung von T1087.002 in Domänenumgebungen, was eine Teilabdeckung der Wissenslücke ist.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": [
|
||||
"AR-f8037740-1"
|
||||
],
|
||||
"excerpt": "Account Discovery: Domain Account, Sub-technique T1087.002 - Enterprise | MITRE ATT\u0026CK®\n\nATT\u0026CKcon 7.0 in-person tickets are open! Join us October 27-28, 2026 in McLean, VA. Register here for in-person tickets; hotel and location details can be found in the FAQ .\n\nHome\n\nTechniques\n\nEnterprise\n\nAccount Discovery\n\nDomain Account\n\nAccount Discovery:\nDomain Account\n\nOther sub-techniques of Account Discovery\n(4)\n\nID\n\nName\n\nT1087.001\n\nLocal Account\n\nT1087.002\n\nDomain Account\n\nT1087.003\n\nEmail Account\n\nT1087.004\n\nCloud Account\n\nAdversaries may attempt to get a listing of domain accounts. This information can help adversaries determine which domain accounts exist to aid in follow-on behavior such as targeting specific accounts which possess particular privileges.\n\nCommands such as net user /domain and net group /domain of the Net utility, dscacheutil -q group on macOS, and ldapsearch on Linux ca…",
|
||||
"fetched": true,
|
||||
"language": "de-DE",
|
||||
"query": "Welche Unterschiede und Gemeinsamkeiten bestehen zwischen den Techniken T1018, T1560.001 und T1087.002 in Bezug auf ihre Anwendung in Cloud- und Domänenumgebungen?",
|
||||
"relevance": 0.6470588235294117,
|
||||
"relevant": true,
|
||||
"round": 1,
|
||||
"source_quality": "primary",
|
||||
"source_quality_score": 0.8560000000000001,
|
||||
"title": "Account Discovery: Domain Account, Sub-technique T1087.002 - Enterprise | MITRE ATT\u0026CK®",
|
||||
"url": "https://attack.mitre.org/techniques/T1087/002/"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein lokaler Angreifer kann mehrere Schwachstellen in AMD ARM und EPYC Prozessoren ausnutzen, um Sicherheitsvorkehrungen zu umgehen und Daten zu manipulieren.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "Welche Unterschiede und Gemeinsamkeiten bestehen zwischen den Techniken T1018, T1560.001 und T1087.002 in Bezug auf ihre Anwendung in Cloud- und Domänenumgebungen?",
|
||||
"relevance": 0.38594520333819804,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[UPDATE] [hoch] AMD ARM und EPYC Prozessoren: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1859"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um einen nicht näher spezifizierten Angriff durchzuführen, um einen Denial of Service durchzuführen, und um falsche Informationen darzustellen.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "Welche Unterschiede und Gemeinsamkeiten bestehen zwischen den Techniken T1018, T1560.001 und T1087.002 in Bezug auf ihre Anwendung in Cloud- und Domänenumgebungen?",
|
||||
"relevance": 0.369322383177596,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[UPDATE] [hoch] Golang Go: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1776"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein lokaler Angreifer kann eine Schwachstelle im Linux Kernel für eine Privilegieneskalation ausnutzen, sowie um einen Denial of Service Zustand oder andere, nicht spezifizierte Auswirkungen herbeizuführen.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "Welche Unterschiede und Gemeinsamkeiten bestehen zwischen den Techniken T1018, T1560.001 und T1087.002 in Bezug auf ihre Anwendung in Cloud- und Domänenumgebungen?",
|
||||
"relevance": 0.3683616679186025,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[UPDATE] [mittel] Linux Kernel: Schwachstelle ermöglicht Privilegieneskalation und Denial of Service",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1756"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in GNU libc ausnutzen, um DNS Antworten zu manipulieren.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "merge aktuelle offizielle Dokumentation Version Support",
|
||||
"relevance": 0.35063830867762935,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "[UPDATE] [mittel] GNU libc: Mehrere Schwachstellen ermöglichen Manipulation von DNS Antworten",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0817"
|
||||
},
|
||||
{
|
||||
"actionable": false,
|
||||
"assessment_reason": "Vorab durch Source-Agent gesammelt und vom Brain als thematisch passend zur Knowledgebase klassifiziert.",
|
||||
"content_type": "text/html",
|
||||
"covered_gap_ids": null,
|
||||
"excerpt": "Mehrere kritische Lücken gefährden Netzwerkprodukte von Cisco. Amins sollten zügig die reparierten Versionen installieren.",
|
||||
"fetched": true,
|
||||
"language": "",
|
||||
"query": "merge aktuelle offizielle Dokumentation Version Support",
|
||||
"relevance": 0.3497161656683244,
|
||||
"relevant": true,
|
||||
"round": 0,
|
||||
"source_quality": "source_inbox",
|
||||
"source_quality_score": 0.68,
|
||||
"title": "Sicherheitsupdates Cisco: Angreifer können WAN-Umgebungen stören",
|
||||
"url": "https://www.heise.de/news/Sicherheitsupdates-Cisco-Angreifer-koennen-WAN-Umgebungen-stoeren-11402697.html"
|
||||
}
|
||||
],
|
||||
"research_query": "Welche Unterschiede und Gemeinsamkeiten bestehen zwischen den Techniken T1018, T1560.001 und T1087.002 in Bezug auf ihre Anwendung in Cloud- und Domänenumgebungen?",
|
||||
"review_model": "qwen3:8b",
|
||||
"review_repair_attempts": 0,
|
||||
"source_fingerprint": "ce6f8803db12333e181f28c7a9506ac96df8878a44415cdc82ccf8c79bf8fae9",
|
||||
"source_node_ids": [
|
||||
"1bc981203dc98432be9e722c",
|
||||
"25981c5b303a2504cbc61564",
|
||||
"270f0077cccaf15914f840e2",
|
||||
"3ccbf9acf76f74209380ed40",
|
||||
"5c3da788f26f38c16e056309",
|
||||
"5e036fff1538ff653441edd5",
|
||||
"a14ee500809c3b85bb48e0dd",
|
||||
"d458920d4b3f2c27ce172f2d"
|
||||
],
|
||||
"source_nodes": [
|
||||
"KB-SEC-ATTCK-CAMP-042",
|
||||
"KB-SEC-ATTCK-CAMP-051",
|
||||
"KB-SEC-ATTCK-GRP-022",
|
||||
"KB-SEC-ATTCK-GRP-029",
|
||||
"KB-SEC-ATTCK-GRP-073",
|
||||
"KB-SEC-ATTCK-GRP-090",
|
||||
"KB-SEC-ATTCK-GRP-094",
|
||||
"KB-SEC-ATTCK-GRP-170"
|
||||
],
|
||||
"status": "staging",
|
||||
"subtype": "knowledge_synthesis",
|
||||
"synthesis_model": "gemma3:12b",
|
||||
"target_article_id": "KB-SEC-ATTCK-GRP-170",
|
||||
"target_node_id": "5c3da788f26f38c16e056309"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"article_id": "KB-AI-THINK-ARTICLE-20260809-CE6F8803DB12",
|
||||
"fingerprint": "4525b7f889d1c486e03c7d29af0e58e267f5154a856bb42e0372a8453051ee97",
|
||||
"generated_at": "2026-08-09T03:36:40.153327Z",
|
||||
"relation_type": "same_topic",
|
||||
"schema": "article-work-fingerprint/v1",
|
||||
"topic_label": "T1018 / T1560.001 / T1087.002"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"article_id": "KB-AI-THINK-ARTICLE-20260809-18EF3C86F633",
|
||||
"fingerprint": "bb07425da81c44dea2c1d416de643ac978c9c49d2bc5e617c9c93f16482861d5",
|
||||
"generated_at": "2026-08-09T03:29:58.1542876Z",
|
||||
"relation_type": "same_topic",
|
||||
"schema": "article-work-fingerprint/v1",
|
||||
"topic_label": "T1014 / T1059.004 / T1685"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:43:50.9528751Z",
|
||||
"content_sha256": "2239cfb246fd776d138dc4974fe5aa74dfc47521155e8168afde96b7de0e795a",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] rsyslog: Schwachstelle ermöglicht Denial of Service und potenziell Codeausführung",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2421",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann eine Schwachstelle in rsyslog ausnutzen, um einen Denial of Service Angriff durchzuführen, und potenziell um beliebigen Programmcode auszuführen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann eine Schwachstelle in rsyslog ausnutzen, um einen Denial of Service Angriff durchzuführen, und potenziell um beliebigen Programmcode auszuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6653855198429413,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:47:06.3947356Z",
|
||||
"content_sha256": "a9d205274470971b5be216d25bd31c3be7650da26840d2f62d1e3cf3a8d6ee75",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Linux Kernel: Schwachstelle ermöglicht Erlangen von Administratorrechten",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2158",
|
||||
"snippet": "Ein lokaler Angreifer kann eine Schwachstelle in Linux Kernel ausnutzen, um Administratorrechte zu erlangen.",
|
||||
"content": "Ein lokaler Angreifer kann eine Schwachstelle in Linux Kernel ausnutzen, um Administratorrechte zu erlangen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6505799443744751,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:48:37.9466698Z",
|
||||
"content_sha256": "baa22c9dcec5c0363c3bb4ed5bc649f336add2b20e63f564cbebe4359e61da0c",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Wireshark: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1311",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Wireshark ausnutzen, um beliebigen Code auszuführen, einen Denial-of-Service-Zustand zu verursachen, vertrauliche Informationen offenzulegen oder andere, nicht näher spezifizierte Angriffe durchzuführen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Wireshark ausnutzen, um beliebigen Code auszuführen, einen Denial-of-Service-Zustand zu verursachen, vertrauliche Informationen offenzulegen oder andere, nicht näher spezifizierte Angriffe durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6480341612686951,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T22:02:15.9559648Z",
|
||||
"content_sha256": "698988c54b1f5db891d63c92b59c9180ffd77596f95ea7346f70f9ce9aef37e2",
|
||||
"result": {
|
||||
"title": "Beheben von Windows Update-Downloadfehlern - Windows Server | Microsoft Learn",
|
||||
"url": "https://learn.microsoft.com/de-de/troubleshoot/windows-server/installing-updates-features-roles/troubleshoot-windows-update-download-errors",
|
||||
"snippet": "Erfahren Sie, wie Sie Fehlercodes 0x80D02002, 0x80072EFD und 0x80072EFE beim Herunterladen von Windows-Updates beheben.",
|
||||
"content": "Inhaltsverzeichnis\n\nEditormodus beenden\n\nLearn fragen\n\nLearn fragen\n\nLesemodus\n\nInhaltsverzeichnis\n\nAuf Englisch lesen\n\nHinzufügen\n\nZu Plänen hinzufügen\n\nMarkdown kopieren\n\nDrucken\n\nHinweis\n\nFür den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln .\n\nFür den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln .\n\nBeheben von Windows Update-Downloadfehlern\n\nGilt für:: Supported versions of Windows Server\n\nFeedback\n\nGilt für: ✔️ Windows-VMs\n\nZusammenfassung\n\nWährend einer Überprüfung auf Updates auf virtuellen Windows-Computern (VMs) treten möglicherweise Fehlercodes wie 0x80072EFD, 0x80072EFE und 0x80D02002 auf. Diese Fehler deuten auf Probleme hin, die sich auf Serververbindungen oder den Downloadstatus auswirken. Das Verständnis der Symptome und der Ursachen kann Ihnen helfen, diese Fehler effektiv zu beheben.\n\nVoraussetzungen\n\nStellen Sie für virtuelle Microsoft Azure-Computer (VMs), die Windows ausführen, sicher, dass Sie den Betriebssystemdatenträger sichern. Weitere Informationen finden Sie unter \"Informationen zur Wiederherstellung virtueller Azure-Computer\" .\n\nErmitteln des Problems\n\nSymptom 1: Fehlermeldungen beim Scannen\n\nWenn Sie nach Updates auf einer Windows-VM suchen, erhalten Sie die folgende Fehlermeldung oder eine ähnliche Meldung, die auf ein Serververbindungsproblem hinweist:\n\nWindows konnte nicht nach neuen Updates suchen\n\nÜberprüfen Sie die Windows Update-Protokolle auf Fehlercodes am folgenden Speicherort:\n\n%windir%\\logs\\windowsupdate\n\nSymptom 2: Windows Updates-Fehlercode gibt keinen Internetzugriff an\n\nWenn Sie nach Updates suchen, zeigt Windows Updates einen Fehlercode an, der angibt, dass Sie keinen Internetzugang haben. Externe Websites werden geladen, aber Microsoft-Links schlagen fehl und geben eine TLS-Fehlermeldung zurück.\n\nUrsache\n\nFehlercode 0x80072EFD : Dieser Fehler tritt auf, wenn Firewallregeln oder Proxys Microsoft Download-URLs blockieren und eine Serververbindung verhindern.\n\nFehlercode 0x80072EFE : Dieser Fehler wird durch Probleme verursacht, die sich auf TLS-Verschlüsselungen auswirken. Dieser Fehler stört Verbindungen mit Microsoft-Websites.\n\nLösungs- oder Problembehandlungsschritte\n\nLösung 1: Überprüfen von Netzwerkkonfigurationen\n\nÜberprüfen Sie, ob Datenverkehr über eine Virtuelle Netzwerk-Appliance (Network Virtual Appliance, NVA) weitergeleitet wird.\n\nStellen Sie sicher, dass der NVA die folgenden Windows Update-URLs zulässt:\n\nhttp://windowsupdate.microsoft.com\nhttp://*.windowsupdate.microsoft.com\nhttps://*.windowsupdate.microsoft.com\nhttp://*.update.microsoft.com\nhttps://*.update.microsoft.com\nhttp://*.windowsupdate.com\nhttp://download.windowsupdate.com\nhttps://download.microsoft.com\nhttp://*.download.windowsupdate.com\nhttp://wustat.windows.com\nhttp://ntservicepack.microsoft.com\nhttp://go.microsoft.com\nhttp://dl.delivery.mp.microsoft.com\nhttps://dl.delivery.mp.microsoft.com\n\nStellen Sie sicher, dass die Ports 80 und 443 für die Kommunikation offen sind.\n\nAuflösung 2: Überprüfen der TLS-Einstellungen\n\nÖffnen Sie ein Eingabeaufforderungsfenster mit erhöhten Rechten, und führen Sie den folgenden Befehl aus, um zu überprüfen, ob TLS 1.2 aktiviert ist:\n\nreg query HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\TLS 1.2\\Server\n\nStellen Sie sicher, dass die Werte wie folgt festgelegt werden:\n\nEnabled REG_DWORD 0x1\nDisabledByDefault REG_DWORD 0x0\n\nWenn TLS 1.2 deaktiviert ist, ändern Sie es in 0x1 .\n\nLösung 2.1: Probleme im Zusammenhang mit Gruppenrichtlinienobjekten (GPO) beheben\n\nWenn die Konnektivität für externe Standorte wie erwartet funktioniert und vorherige Entschärfungen nicht funktionieren, suchen Sie nach dem folgenden Registrierungsunterschlüssel:\n\nreg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Cryptography\\Configuration\\SSL\\XXXXXXXX\"\n\nLöschen Sie alle Inhalte, die sich innerhalb des XXXXXXXX -Hive oder Ordners befinden, um zu testen, ob ein GPO das Problem verursacht.\n\nWenn das Problem weiterhin besteht, entfernen Sie das Computerobjekt aus der Organisationseinheit (OU) mit SSL-Verschlüsselungskonfigurationen.\n\nFeedback\n\nWar diese Seite hilfreich?\n\nYes\n\nNo\n\nNo\n\nBenötigen Sie Hilfe zu diesem Thema?\n\nMöchten Sie versuchen, Ask Learn zu verwenden, um Sie durch dieses Thema zu klären oder zu leiten?\n\nLearn fragen\n\nLearn fragen\n\nLösung vorschlagen?\n\nZusätzliche Ressourcen\n\nLast updated on\n2026-02-12",
|
||||
"content_type": "text/html",
|
||||
"query": "Wie lässt sich der Fehler 0x80D02002 (DELIVERY_OPTIMIZATION_TIMEOUT) im Zusammenhang mit Windows Update / CBS diagnostizieren und beheben?",
|
||||
"language": "de-DE",
|
||||
"round": 3,
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.9733333333333334,
|
||||
"source_quality": "primary",
|
||||
"source_quality_score": 0.904,
|
||||
"actionable": true,
|
||||
"covered_gap_ids": [
|
||||
"AR-10be4378-6"
|
||||
],
|
||||
"assessment_reason": "Die Quelle behandelt direkt den Fehlercode 0x80D02002 (DELIVERY_OPTIMIZATION_TIMEOUT) im Zusammenhang mit Windows Update und bietet konkrete, umsetzbare Schritte zur Diagnose und Behebung an, wie das Überprüfen der Netzwerkkonfiguration, TLS-Einstellungen und Gruppenrichtlinienobjekte. Sie ist eine offizielle Microsoft-Quelle und bietet belastbare technische Anweisungen."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:53:44.7211946Z",
|
||||
"content_sha256": "0ba20e14cbba0a9b6b9fa2a9fe251801c620cac251dbea972df459e3da3e1215",
|
||||
"result": {
|
||||
"title": "[NEU] [UNGEPATCHT] [hoch] Flowise: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2703",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Flowise ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Informationen offenzulegen und Daten zu manipulieren.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Flowise ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Informationen offenzulegen und Daten zu manipulieren.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6342661141768955,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:44:39.2210011Z",
|
||||
"content_sha256": "4a5039e5ed81b49d427f61e5ee35827a2fcfe62836e534d33476043dae2be2e9",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Atlassian Bamboo, Bitbucket, Confluence, Fisheye, Crucible, Jira und Jira Service Management: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1955",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Atlassian Bamboo, Bitbucket, Confluence, Fisheye, Crucible, Jira und Jira Service Management ausnutzen, um beliebigen Code auszuführen, erweiterte Berechtigungen zu erlangen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Atlassian Bamboo, Bitbucket, Confluence, Fisheye, Crucible, Jira und Jira Service Management ausnutzen, um beliebigen Code auszuführen, erweiterte Berechtigungen zu erlangen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6598860878180428,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:45:12.6319993Z",
|
||||
"content_sha256": "afc9f51a4c0c6d455ffffffb215f5b265bb9899e541dd591e3ea301abd713354",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] GNU libc: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1300",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in GNU libc ausnutzen, um beliebigen Programmcode auszuführen, einen Denial-of-Service-Zustand zu verursachen oder vertrauliche Informationen offenzulegen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in GNU libc ausnutzen, um beliebigen Programmcode auszuführen, einen Denial-of-Service-Zustand zu verursachen oder vertrauliche Informationen offenzulegen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6573915990330501,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:38:37.0210062Z",
|
||||
"content_sha256": "1fdf3f5e7eca085222c3cafa886f855dd5af5434018db58e34b2975bcf2c0f39",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Golang Go: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1006",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um Speicherbeschädigungen zu verursachen, beliebigen Code auszuführen, Sicherheitsmaßnahmen zu umgehen, einen Denial-of-Service-Zustand auszulösen oder andere, nicht näher spezifizierte Angriffe durchzuführen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um Speicherbeschädigungen zu verursachen, beliebigen Code auszuführen, Sicherheitsmaßnahmen zu umgehen, einen Denial-of-Service-Zustand auszulösen oder andere, nicht näher spezifizierte Angriffe durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.68693001430151,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:34:36.7027229Z",
|
||||
"content_sha256": "e52704e1246fc30d3a1aa90ff7a622ebcba2bd4090ba1e8cbb1c0c60ddf68b05",
|
||||
"result": {
|
||||
"title": "[UPDATE] [niedrig] Postfix: Schwachstelle ermöglicht Denial of Service",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1352",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann eine Schwachstelle in Postfix ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann eine Schwachstelle in Postfix ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7043389674418912,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:54:37.0688399Z",
|
||||
"content_sha256": "d4c903b892d5a8e2d2b8e049f8024e8bbfa1a246d75c2823d9e12eabf3d1af20",
|
||||
"result": {
|
||||
"title": "Neue Malware-Welle: Arch Linux blockiert AUR-Updates",
|
||||
"url": "https://www.heise.de/news/Neue-Malware-Welle-Arch-Linux-blockiert-AUR-Updates-11395880.html",
|
||||
"snippet": "Erneut verbreitet sich Malware über Arch User Repositorys. Daher gibt es vorerst überhaupt keine Updates für AUR.",
|
||||
"content": "Erneut verbreitet sich Malware über Arch User Repositorys. Daher gibt es vorerst überhaupt keine Updates für AUR.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6250818418378432,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:52:07.7034833Z",
|
||||
"content_sha256": "4867312bafee36c72b6afe8fc56bddb33ffea65ef1a583c8f545829dbb8b6ae0",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Internet Systems Consortium BIND: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2484",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Internet Systems Consortium BIND ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Internet Systems Consortium BIND ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6374345833211241,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:44:44.3518553Z",
|
||||
"content_sha256": "1dbddfb282408eb8cf0c3628e39bb26538bcd58e3900d9feff391e3f5547a42d",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Red Hat Enterprise Linux AI: Schwachstelle ermöglicht Codeausführung",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2629",
|
||||
"snippet": "Ein lokaler Angreifer kann eine Schwachstelle in Red Hat Enterprise Linux AI ausnutzen, um beliebigen Programmcode auszuführen und dadurch möglicherweise die vollständige Kontrolle über das betroffene System zu erlangen, Daten zu kompromittieren oder einen Denial-of-Service-Zustand herbeizuführen.",
|
||||
"content": "Ein lokaler Angreifer kann eine Schwachstelle in Red Hat Enterprise Linux AI ausnutzen, um beliebigen Programmcode auszuführen und dadurch möglicherweise die vollständige Kontrolle über das betroffene System zu erlangen, Daten zu kompromittieren oder einen Denial-of-Service-Zustand herbeizuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6588459094961676,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:51:37.7654673Z",
|
||||
"content_sha256": "287a56aa1b2c258f9f88ec3c41ebcba4eaea6989775ba0f5b14e306eceb634ff",
|
||||
"result": {
|
||||
"title": "VMware ESX, vCenter, Workstation und Fusion: Updates schließen kritische Lücken",
|
||||
"url": "https://www.heise.de/news/VMware-ESX-vCenter-Workstation-und-Fusion-Updates-schliessen-kritische-Luecken-11386401.html",
|
||||
"snippet": "VMware-Updates für ESX, vCenter, Workstation und Fusion schließen Sicherheitslücken, die etwa die Umgehung der Authentifizierung erlauben.",
|
||||
"content": "VMware-Updates für ESX, vCenter, Workstation und Fusion schließen Sicherheitslücken, die etwa die Umgehung der Authentifizierung erlauben.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6388556350118791,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:55:41.8067611Z",
|
||||
"content_sha256": "08109ffbfaf7d0f419720504a304ba85e2c82a72329c1b40fe9a7e97a63bbc45",
|
||||
"result": {
|
||||
"title": "Sicherheitsupdates: TP-Links Netzwerk-Ökosystem Omada ist kompromittierbar",
|
||||
"url": "https://www.heise.de/news/Sicherheitsupdates-TP-Links-Netzwerk-Oekosystem-Omada-ist-kompromittierbar-11399435.html",
|
||||
"snippet": "Sicherheitsforscher entdecken unter anderem kritische Lücken in TP-Link Omada, die sich auf weitere Netzwerkkomponenten ausweiten.",
|
||||
"content": "Sicherheitsforscher entdecken unter anderem kritische Lücken in TP-Link Omada, die sich auf weitere Netzwerkkomponenten ausweiten.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6203670546949902,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:34:06.5246928Z",
|
||||
"content_sha256": "e4cd42143d442ced8a7db8abeff675c7687cb1e49fdf2b1fe44b4194a7611b84",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel (Fragnesia): Schwachstelle ermöglicht Erlangen von Administratorrechten",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1530",
|
||||
"snippet": "Ein lokaler Angreifer kann eine Schwachstelle in Linux Kernel ausnutzen, um Administratorrechte zu erlangen.",
|
||||
"content": "Ein lokaler Angreifer kann eine Schwachstelle in Linux Kernel ausnutzen, um Administratorrechte zu erlangen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7055545100574601,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:38:43.193394Z",
|
||||
"content_sha256": "7899d96ef54f3e53311acf40fce3d0ef355a9a39c880b4f3ec1652a12037101d",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] WSO2 API Manager: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2085",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in WSO2 API Manager ausnutzen, um Sicherheitsvorkehrungen zu umgehen, um einen Denial of Service Angriff durchzuführen, um seine Privilegien zu erhöhen, um beliebigen Programmcode auszuführen, um einen SQL-Injection Angriff durchzuführen, um einen Cross-Site Scripting Angriff durchzuführen, um Informationen offenzulegen, und um Daten zu manipulieren.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in WSO2 API Manager ausnutzen, um Sicherheitsvorkehrungen zu umgehen, um einen Denial of Service Angriff durchzuführen, um seine Privilegien zu erhöhen, um beliebigen Programmcode auszuführen, um einen SQL-Injection Angriff durchzuführen, um einen Cross-Site Scripting Angriff durchzuführen, um Informationen offenzulegen, und um Daten zu manipulieren.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.68436270069221,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:41:06.4147509Z",
|
||||
"content_sha256": "860f7c85dd79581b5bc66c32b4fce23456490dc4eb94a0998f1733554f00bdfb",
|
||||
"result": {
|
||||
"title": "[NEU] [hoch] Microsoft Azure: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2689",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Microsoft Azure und Microsoft Entra ausnutzen, um beliebigen Code auszuführen oder erweiterte Berechtigungen zu erlangen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Microsoft Azure und Microsoft Entra ausnutzen, um beliebigen Code auszuführen oder erweiterte Berechtigungen zu erlangen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6694853119658069,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:34:41.1883719Z",
|
||||
"content_sha256": "b8d3ddedc9a43ec13a0d78b778825a0772ebf05a6f3044da1d95ce6f02182021",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2056",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um einen Denial-of-Service-Angriff auszulösen oder andere, nicht näher spezifizierte Angriffe durchzuführen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um einen Denial-of-Service-Angriff auszulösen oder andere, nicht näher spezifizierte Angriffe durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.704121228547584,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:30:07.6235595Z",
|
||||
"content_sha256": "656358c51819ed607cfb40bcc9c9443bf5918490b4f813bba6d0cc0c72700ce8",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] systemd: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0831",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in systemd ausnutzen, um einen Denial of Service Angriff durchzuführen oder Code mit Administratorrechten auszuführen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in systemd ausnutzen, um einen Denial of Service Angriff durchzuführen oder Code mit Administratorrechten auszuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7426129968280393,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:50:11.938514Z",
|
||||
"content_sha256": "c0d13bafa777fa4284ad2e9ae46b6a201844520d65d07683de92b76f8cb0d145",
|
||||
"result": {
|
||||
"title": "[NEU] [hoch] WordPress: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2701",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in WordPress ausnutzen, um einen Cross-Site Scripting Angriff durchzuführen, um seine Privilegien zu erhöhen, um Informationen offenzulegen, und um Sicherheitsvorkehrungen zu umgehen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in WordPress ausnutzen, um einen Cross-Site Scripting Angriff durchzuführen, um seine Privilegien zu erhöhen, um Informationen offenzulegen, und um Sicherheitsvorkehrungen zu umgehen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6420422193071715,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:55:37.1261342Z",
|
||||
"content_sha256": "d4066923774451f8de67e9ead6d53f0f7b52926af977a3fcc601fb1456d1371f",
|
||||
"result": {
|
||||
"title": "SolarWinds Web Help Desk: Update bessert umgehbare Authentifizierung aus",
|
||||
"url": "https://www.heise.de/news/SolarWinds-Web-Help-Desk-Update-bessert-umgehbare-Authentifizierung-aus-11388191.html",
|
||||
"snippet": "SolarWinds schließt Sicherheitslücken in Web Help Desk. Eine gilt als kritisch und ermöglicht Angreifern, die Authentifizierung zu umgehen.",
|
||||
"content": "SolarWinds schließt Sicherheitslücken in Web Help Desk. Eine gilt als kritisch und ermöglicht Angreifern, die Authentifizierung zu umgehen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6206039332426312,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:43:40.2698986Z",
|
||||
"content_sha256": "5d7bda80506070fa40bc44f25eaaf858a39e67750c9e2a60b8d297668037e255",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Red Hat Ansible Automation Platform: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1923",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Red Hat Ansible Automation Platform ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Informationen offenzulegen, Daten zu manipulieren und einen Denial-of-Service-Zustand herbeizuführen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Red Hat Ansible Automation Platform ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Informationen offenzulegen, Daten zu manipulieren und einen Denial-of-Service-Zustand herbeizuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6688454339809307,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:30:11.792854Z",
|
||||
"content_sha256": "8d997a9ce087ed29532b5c07e192b02590cae29c35346d2fed37d96ce4cfd2b7",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Linux Kernel: Schwachstelle ermöglicht Privilegieneskalation",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1771",
|
||||
"snippet": "Ein lokaler Angreifer kann eine Schwachstelle in Linux Kernel ausnutzen, um seine Privilegien zu erhöhen.",
|
||||
"content": "Ein lokaler Angreifer kann eine Schwachstelle in Linux Kernel ausnutzen, um seine Privilegien zu erhöhen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7313810797200231,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:55:06.9520709Z",
|
||||
"content_sha256": "b1bd9679f182d18e474994e22f990246bfbfc3c0d73b5ecc72b5d7fa76fbd48a",
|
||||
"result": {
|
||||
"title": "[UPDATE] [niedrig] PowerDNS Authoritative Server: Schwachstelle ermöglicht Denial of Service",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2078",
|
||||
"snippet": "Ein entfernter, authentisierter Angreifer kann eine Schwachstelle in PowerDNS Authoritative Server ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content": "Ein entfernter, authentisierter Angreifer kann eine Schwachstelle in PowerDNS Authoritative Server ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6244400469455134,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:27:42.1550475Z",
|
||||
"content_sha256": "ffe77d1fd450413a65b250fac25f93352a2c3eb9b1d5b1a945c544a52d837afe",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] GNU libc: Mehrere Schwachstellen ermöglichen Manipulation von DNS Antworten",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0817",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in GNU libc ausnutzen, um DNS Antworten zu manipulieren.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in GNU libc ausnutzen, um DNS Antworten zu manipulieren.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6938830867762933,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:43:46.0105692Z",
|
||||
"content_sha256": "32d8a8c869115ed0a97fe9b1d6b1608e5f6fdbe48b36c219037416a8e15b4893",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Red Hat Enterprise Linux (urllib3): Mehrere Schwachstellen ermöglichen Denial of Service",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0207",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat Enterprise Linux ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat Enterprise Linux ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6685889333815458,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:28:07.4928123Z",
|
||||
"content_sha256": "71a8c7a4a703d4792d9830ea635d0b2718833db8a504614723c88f877013c1e1",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] PHP: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2598",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in PHP ausnutzen, um SQL-Injection durchzuführen, beliebigen Code auszuführen, Daten zu manipulieren oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in PHP ausnutzen, um SQL-Injection durchzuführen, beliebigen Code auszuführen, Daten zu manipulieren oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7408217000458435,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:39:10.7385316Z",
|
||||
"content_sha256": "542bad92223ce33cf0f41952c4236e568948c739e56aaeb158548442df8fd4f9",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Red Hat OpenShift Container Platform (fast-uri,OpenTelemetry-Go) : Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2334",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat OpenShift Container Platform ausnutzen, um Sicherheitsvorkehrungen zu umgehen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat OpenShift Container Platform ausnutzen, um Sicherheitsvorkehrungen zu umgehen oder einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6830464683236337,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:32:11.4382193Z",
|
||||
"content_sha256": "6ed8b9e7ebb18cc78b32d5e63d82623e328c5958ff562d24a9794f69453b3f91",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0462",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen im Linux-Kernel ausnutzen, um nicht näher spezifizierte Angriffe durchzuführen, die möglicherweise zu einer Denial-of-Service- Bedingung führen oder eine Speicherbeschädigung verursachen können.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen im Linux-Kernel ausnutzen, um nicht näher spezifizierte Angriffe durchzuführen, die möglicherweise zu einer Denial-of-Service- Bedingung führen oder eine Speicherbeschädigung verursachen können.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.708651872077716,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:35:41.1423675Z",
|
||||
"content_sha256": "0d078b02b2d2857348b0fa6bf061e26789d33e43954b7c3c4a5d2cb5d74c2057",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Golang Go: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1437",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Daten zu manipulieren, Cross-Site-Scripting-Angriffe durchzuführen, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand zu verursachen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um Sicherheitsvorkehrungen zu umgehen, Daten zu manipulieren, Cross-Site-Scripting-Angriffe durchzuführen, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand zu verursachen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6987975223628944,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:38:07.0821703Z",
|
||||
"content_sha256": "937b3c88be720ebdf9bb24adeceb63d917c4a69ab394ee846cd703ddf8a939b5",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Golang Go: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0129",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um einen Denial of Service Angriff durchzuführen, beliebigen Code auszuführen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren oder vertrauliche Informationen offenzulegen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Golang Go ausnutzen, um einen Denial of Service Angriff durchzuführen, beliebigen Code auszuführen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren oder vertrauliche Informationen offenzulegen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6898551184286656,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:50:42.4590716Z",
|
||||
"content_sha256": "d837eb9194c6c08683cf91eff60d746063d786e89a8fc5ec75f02364e72534be",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Red Hat Ansible Automation Platform (node-tar, linkify-it, protobufjs, brace-expansion, fast-uri, DOMPurify): Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2452",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat Ansible Automation Platform ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Cross-Site-Scripting-Angriffe durchzuführen, Daten zu manipulieren, einen Denial-of-Service-Zustand auszulösen oder beliebigen Code auszuführen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Red Hat Ansible Automation Platform ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Cross-Site-Scripting-Angriffe durchzuführen, Daten zu manipulieren, einen Denial-of-Service-Zustand auszulösen oder beliebigen Code auszuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.640870060556384,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:30:37.9824695Z",
|
||||
"content_sha256": "fa88908afaad334746da7c3533bbd0e715beadc60863511278a7284aafd6496b",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2077",
|
||||
"snippet": "Ein entfernter Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um Sicherheitsvorkehrungen zu umgehen, einen Denial-of-Service-Zustand herbeizuführen und weitere, nicht näher spezifizierte Auswirkungen zu erzielen.",
|
||||
"content": "Ein entfernter Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um Sicherheitsvorkehrungen zu umgehen, einen Denial-of-Service-Zustand herbeizuführen und weitere, nicht näher spezifizierte Auswirkungen zu erzielen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7207159842807684,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:32:51.9407037Z",
|
||||
"content_sha256": "cfd5f91321702fd1cbf7319a3d876d95f788150add6fc9fef38a79365f801b10",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1700",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um einen Denial of Service Angriff durchzuführen oder andere nicht näher spezifizierte Auswirkungen zu erzielen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um einen Denial of Service Angriff durchzuführen oder andere nicht näher spezifizierte Auswirkungen zu erzielen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7079009324307353,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:53:50.5805009Z",
|
||||
"content_sha256": "ef7f0978a307036aef704a1eb7eeb065258e045b616a7ec248e0fa90f66939a0",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] cPanel cPanel/WHM (Archive-Tar): Mehrere Schwachstellen ermöglichen Manipulation von Dateien",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2666",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in cPanel cPanel/WHM ausnutzen, um vertrauliche Informationen preiszugeben oder Daten zu manipulieren.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in cPanel cPanel/WHM ausnutzen, um vertrauliche Informationen preiszugeben oder Daten zu manipulieren.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6320037424840383,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:31:37.2956786Z",
|
||||
"content_sha256": "a13a64dbdaa76dbc823b93ee1b8f5dd4cb81342a4af187dd40de510952c78b7e",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1454",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um einen nicht näher spezifizierten Angriff durchzuführen, möglicherweise Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren oder offenzulegen oder einen Denial-of-Service-Zustand zu verursachen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um einen nicht näher spezifizierten Angriff durchzuführen, möglicherweise Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren oder offenzulegen oder einen Denial-of-Service-Zustand zu verursachen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7113540728224663,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:41:37.6117213Z",
|
||||
"content_sha256": "86c2b52306e79de8defb82a51bf60bc65916078dcc9be249db0276326f3caf23",
|
||||
"result": {
|
||||
"title": "Veeam One und Service Provider Console für Schadcode-Attacken anfällig",
|
||||
"url": "https://www.heise.de/news/Veam-One-und-Service-Provider-Console-fuer-Schadcode-Attacken-anfaellig-11400855.html",
|
||||
"snippet": "Die Backupmanagementlösungen Veeam One und Service Provider Console sind für verschiedene Attacken empfänglich. Sicherheitsupdates schaffen Abhilfe.",
|
||||
"content": "Die Backupmanagementlösungen Veeam One und Service Provider Console sind für verschiedene Attacken empfänglich. Sicherheitsupdates schaffen Abhilfe.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6771852213584544,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:56:07.6291821Z",
|
||||
"content_sha256": "493288b7100ca40155de5bb6f5a5a1d9e2c5e5aba18afd4cf57d30a2cc539e91",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] AMD Prozessor: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1482",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in AMD Prozessor ausnutzen, um seine Privilegien zu erhöhen, beliebigen Code auszuführen – sogar mit Administratorrechten –, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand herbeizuführen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in AMD Prozessor ausnutzen, um seine Privilegien zu erhöhen, beliebigen Code auszuführen – sogar mit Administratorrechten –, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand herbeizuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6174007612520149,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-09T03:56:05.8263Z",
|
||||
"content_sha256": "9d40998cb762efc326f38f38a3e4697b72a1809b4c00da90141dbb967ae1855d",
|
||||
"result": {
|
||||
"title": "T1113 Screen Capture — MITRE ATT\u0026CK · Patrick Saade",
|
||||
"url": "https://www.patricksaade.com/reference/attack-map/T1113/",
|
||||
"snippet": "Screen capturing functionality may be included as a feature of a remote access tool used in post-compromise operations. Taking a screenshot is also typically possible through native utilities or API calls, such as CopyFromScreen, xwd, or screencapture.",
|
||||
"content": "Definition\n\nAdversaries may attempt to take screen captures of the desktop to gather information over the course of an operation. Screen capturing functionality may be included as a feature of a remote access tool used in post-compromise operations. Taking a screenshot is also typically possible through native utilities or API calls, such as CopyFromScreen, xwd, or screencapture.\n\nPlatforms Linux macOS Windows\n\nHow it's detected\n\nTelemetry that surfaces this technique, from MITRE's detection strategies:\n\nModule Load Process Creation\n\nSeen in the wild\n\nDuring the 2025 Poland Wiper Attacks, the adversaries captured screenshots of devices using nircmd console through the command nircmd.exe “savescreenshot C:\\Windows\\Temp\\imagetmp.png.\n\nAPT28 has used tools to take screenshots from victims.\n\nAPT39 has used a screen capture utility to take screenshots on a compromised host.\n\nAPT42 has used malware, such as GHAMBAR and POWERPOST, to take screenshots.\n\nA sample of 171 documented uses — the MITRE page has the full list.\n\nD3FEND countermeasures\n\nDefensive techniques that counter this, from the MITRE D3FEND map:\n\nD3-SCA System Call Analysis Detect\n\nD3-SCF System Call Filtering Isolate\n\nReference\n\nMITRE ATT\u0026CK — T1113: Screen Capture\n\nATT\u0026CK® is a registered trademark of The MITRE Corporation; technique names and IDs come from the public ATT\u0026CK knowledge base.",
|
||||
"content_type": "text/html",
|
||||
"query": "Welche spezifischen Verhaltensmuster von T1113 (Screen Capture) sind bei der Analyse von macOS-Malware wie MacMa und XAgentOSX relevant?",
|
||||
"language": "de-DE",
|
||||
"round": 2,
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.5468571428571428,
|
||||
"source_quality": "primary",
|
||||
"source_quality_score": 0.8160000000000002,
|
||||
"actionable": true,
|
||||
"covered_gap_ids": [
|
||||
"AR-86eb8cf9-4"
|
||||
],
|
||||
"assessment_reason": "Die Quelle beschreibt allgemeine Verhaltensmuster von T1113 (Screen Capture) und gibt Beispiele für APT-Gruppen, die Screenshots erstellen. Allerdings fehlen spezifische Details zu macOS-Malware wie MacMa und XAgentOSX. Die Quelle ist relevant, da sie die allgemeine Technik erläutert, die bei der Analyse solcher Malware relevant sein könnte, aber sie liefert keine konkreten Schritte oder Beispiele für macOS-spezifische Verhaltensmuster."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:27:37.6920863Z",
|
||||
"content_sha256": "b7b044b838943eea83869b29cbee76c3a7236df2923762e41d3535cefa8fc404",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-0086",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen um nicht näher spezifizierte Angriffe durchzuführen, die möglicherweise zu einer Denial-of-Service- Bedingung führen oder eine Speicherbeschädigung verursachen können.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen um nicht näher spezifizierte Angriffe durchzuführen, die möglicherweise zu einer Denial-of-Service- Bedingung führen oder eine Speicherbeschädigung verursachen können.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7071765073253791,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:29:37.7886071Z",
|
||||
"content_sha256": "22178b033f72a61c03eb78d5c21682affc4be77eb5496680287f699aa617f24e",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Linux Kernel: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1346",
|
||||
"snippet": "Ein entfernter Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um Root-Rechte zu erlangen, um Sicherheitsmechanismen zu umgehen, einen Denial-of-Service-Zustand herbeizuführen oder Auswirkungen unbestimmter Art zu erzielen.",
|
||||
"content": "Ein entfernter Angreifer kann mehrere Schwachstellen im Linux Kernel ausnutzen, um Root-Rechte zu erlangen, um Sicherheitsmechanismen zu umgehen, einen Denial-of-Service-Zustand herbeizuführen oder Auswirkungen unbestimmter Art zu erzielen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.7148819917473166,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:39:36.7744354Z",
|
||||
"content_sha256": "a126b9e22de1a9fc5d8261da92aed3ee239f355d3a151bcc3e7b8454abeb9faa",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Apache HttpComponents Core: Mehrere Schwachstellen ermöglichen Denial of Service",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2172",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Apache HttpComponents Core ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Apache HttpComponents Core ausnutzen, um einen Denial of Service Angriff durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6821878873320624,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:36:06.842863Z",
|
||||
"content_sha256": "1169b87102474fcb846948e72bb32733c938f6ba42c10095fd7a7ce2104fc4c4",
|
||||
"result": {
|
||||
"title": "[UPDATE] [mittel] Linux Kernel: Schwachstelle ermöglicht Privilegieneskalation und Denial of Service",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-1756",
|
||||
"snippet": "Ein lokaler Angreifer kann eine Schwachstelle im Linux Kernel für eine Privilegieneskalation ausnutzen, sowie um einen Denial of Service Zustand oder andere, nicht spezifizierte Auswirkungen herbeizuführen.",
|
||||
"content": "Ein lokaler Angreifer kann eine Schwachstelle im Linux Kernel für eine Privilegieneskalation ausnutzen, sowie um einen Denial of Service Zustand oder andere, nicht spezifizierte Auswirkungen herbeizuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.698531451913297,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:37:36.2669134Z",
|
||||
"content_sha256": "6be37627c3b69e69a009f05c7a2810217e011546afac76dab5d3b48853f7d324",
|
||||
"result": {
|
||||
"title": "[NEU] [mittel] Linux Kernel: Schwachstelle ermöglicht Offenlegung von Informationen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2704",
|
||||
"snippet": "Ein lokaler Angreifer kann eine Schwachstelle im Linux Kernel ausnutzen, um Informationen offenzulegen.",
|
||||
"content": "Ein lokaler Angreifer kann eine Schwachstelle im Linux Kernel ausnutzen, um Informationen offenzulegen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6923456872937817,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:48:11.5068483Z",
|
||||
"content_sha256": "119b13e9e3f4b9147fc4a559b6cbc5080e9b148fc9f1a1b2dc6b7029dbf1126a",
|
||||
"result": {
|
||||
"title": "[NEU] [mittel] jsoup: Schwachstelle ermöglicht Cross-Site Scripting",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2698",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann eine Schwachstelle in jsoup ausnutzen, um einen Cross-Site Scripting Angriff durchzuführen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann eine Schwachstelle in jsoup ausnutzen, um einen Cross-Site Scripting Angriff durchzuführen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6480618737330641,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:46:12.686143Z",
|
||||
"content_sha256": "36bd4aefdecd1c54cba06704c3dc5d20ac5547800f52e4aec97556ad3c4da758",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] Red Hat Enterprise Linux (sssd, glib, c-ares): Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2419",
|
||||
"snippet": "Ein Angreifer kann mehrere Schwachstellen in Red Hat Enterprise Linux ausnutzen, um Administratorrechte zu erlangen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren und einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content": "Ein Angreifer kann mehrere Schwachstellen in Red Hat Enterprise Linux ausnutzen, um Administratorrechte zu erlangen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren und einen Denial-of-Service-Zustand auszulösen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6549704432636785,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"saved_at": "2026-08-08T21:45:07.4717417Z",
|
||||
"content_sha256": "b608a512a01cbeed76c572fc004420d3ee9a4dc5ce661e318ff305c75277efc4",
|
||||
"result": {
|
||||
"title": "[UPDATE] [hoch] ffmpeg: Mehrere Schwachstellen",
|
||||
"url": "https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2026-2526",
|
||||
"snippet": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in ffmpeg ausnutzen, um eine Speicherbeschädigung herbeizuführen, beliebigen Code auszuführen, einen Denial-of-Service-Zustand auszulösen oder vertrauliche Informationen offenzulegen.",
|
||||
"content": "Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in ffmpeg ausnutzen, um eine Speicherbeschädigung herbeizuführen, beliebigen Code auszuführen, einen Denial-of-Service-Zustand auszulösen oder vertrauliche Informationen offenzulegen.",
|
||||
"content_type": "text/html",
|
||||
"fetched": true,
|
||||
"relevant": true,
|
||||
"relevance": 0.6582817865491506,
|
||||
"source_quality": "curated_agent",
|
||||
"source_quality_score": 0.82,
|
||||
"assessment_reason": "Vom konfigurierten Source-Agent als priorisierte Security-Meldung geliefert."
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user