iris-rea-recherche: Schutz des Beweis-Speichers und fehlende Befehle (Auswertung des ersten echten Durchlaufs) #374
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/iris-plugins#374
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Befund
Ein echter Durchlauf (Chat-Export vom 2026-11-06: ein DOS-Spiel von 1995 als Zip, Projekt
3dcyberpuck) zeigt, dass der Ablauf trägt (Aufnahme, Entpacken von 191 Dateien, Befunde, Nachbau, Prüfung; Richtung wurde per Canvas dem Nutzer überlassen; eine eigene Vermutung wurde mit Belegen widerlegt;iris-ghidralud eine 16-Bit-MZ-Datei mit 697 Funktionen). Er zeigt auch zwei Schwächen:ghidra:1000:0000 (entry),offset:gesamtdatei Byte-Scan …), ein „verifiziert durch“ mit Freitext statt einer Nachbau-ID (B2) und ein umgeschriebener Befund. Ursachen laut den Überlegungen des Modells: Der Skill-Text war nach der Kontextkompression weg („ich bearbeite speicher.json direkt“); dem Plugin fehlen Befehle zum Korrigieren und Widerlegen eines Befunds; Fundstellen kennen keine 16-Bit-Adressen (1000:0157, Ghidra zeigt sie so) und keine Bereiche; die Schutzregeln gelten nur im Befehl, nicht in der Datei.N1ist zirkulär (Erwartetes mit demselben Zerschneiden der Datei berechnet wie im Nachbau);B3,B9,B10stehen trotzdem als „verifiziert“. (Teil 3, noch offen.)Kleiner: Der Modus wurde nicht erfragt (Standard still genommen); große Testvektoren gingen nur über ein Hilfsskript, weil die Befehlszeile zu klein ist.
Ziel (Teil 1 und 2, in diesem Issue umgesetzt; Teil 3 wird mit dem Nutzer entschieden)
Teil 1, Schutz: Befehlskarte und die Regel „speicher.json nie direkt bearbeiten“ im Systemprompt (übersteht die Kompression). Beim Laden prüft das Plugin, ob jeder „verifizierte“ Befund von einem bestandenen, unveränderten Nachbau gedeckt ist und ob die Fundstellen gültig sind; Abweichungen zeigt
status,rea_speicher.py pruefennennt sie, das Kontextpaket führt solche Befunde als „nicht belegt“.neuverlangt--modus(sonst Rückfrage, Exit-Code 3).Teil 2, Befehle: Befund ändern (setzt „verifiziert“ zurück) und widerlegen; Fundstellen mit 16-Bit-Adressen (
adresse:1000:0157), Bereichen und Offset in einer entpackten Datei (datei:PFAD@0x10-0x20); Testvektoren aus einer JSON-Datei (--eingabe-datei,--erwartet-datei) oder direkt aus Bytes des Ziels (--eingabe-aus,--erwartet-aus).Warum
Das Plugin ist die Vorstufe, die Kontext erzeugt und Daten (zum Beispiel Dateiformate) extrahiert; ein späteres Plugin soll daraus etwa eine Rust-Anwendung machen. Das trägt nur, wenn der Speicher verlässlich ist und das Modell nicht um ihn herumschreiben muss.
PR #375 gemergt: feat(iris-rea-recherche): Selbstschutz des Speichers, befund aendern/widerlegen, Fundstellen und Testvektoren aus dem Ziel (iris/iris-plugins#374)
http://docker:3000/iris/iris-plugins/pulls/375
Commits:
Stand: Teil 1 und 2 umgesetzt, Version 0.2.0 veröffentlicht (Registry nach dem Pull geprüft).
Befund: Im echten Chat trug der Agent „verifiziert" direkt in
speicher.jsonein, weil Befehle fehlten (Befund ändern/widerlegen, 16-Bit-Adressen, Bytes aus dem Ziel als Testvektor); der Skill-Text war nach der Kontextkomprimierung weg.Geändert:
--modusPflicht (Rückfrage statt Standard);pruefe_speicherprüft beim Laden die Invarianten (unbelegt = „nicht belegt" in Status, Liste, Kontextpaket),pruefen [--reparieren].befund aendern(setzt „verifiziert" bei Inhaltsänderung zurück, Verlauf),befund widerlegen; Fundstellenadresse:SEG:OFF,adresse:A-B,offset:A-B,datei:PFAD@A-Bmit Prüfung gegen die Dateigröße; Testvektoren mit--eingabe-datei/--erwartet-datei/--eingabe-aus/--erwartet-aus(Hash der Quelle gespeichert, Limit 2 MiB).Geprüft: 288 Tests grün (2 übersprungen); acht Gegenproben (Regel ausgebaut → Tests rot): Verifikationsprüfung, Meldung unbelegter Verifikation, Zurücksetzen beim Ändern, Sperre widerlegter Befunde,
--modus, 16-Bit-Grammatik, Größenlimit, Regelzeile im Systemprompt. Gebautes Paket entpackt und mitpython3 -Idurchlaufen:neuohne--modusExit 3, von Hand verifizierter Befund wird gemeldet und mit--reparierenzurückgesetzt.--dry-run, Veröffentlichung.Nicht geprüft: Verhalten des Agenten im echten Chat mit dem neuen Systemprompt; Installation von 0.2.0 über die Mac-GUI; Linux-Server.
Offen: Teil 3 – neue Definition von „verifiziert" (Erwartungswerte aus einer vom Eingang unabhängigen Quelle, z. B. Dateiformat-Befunde gegen den Loader-Code in Ghidra) wird erst gegrillt. Der Befund B3/B9/B10 aus dem 3dcyberpuck-Lauf gilt als nicht verifiziert.
PR #376 gemergt: feat(iris-rea-recherche): zwei Stufen belegt/bestätigt, unabhängige Quelle, kontext.json (iris/iris-plugins#374)
http://docker:3000/iris/iris-plugins/pulls/376
Commits:
Stand: Teil 3 umgesetzt, Version 0.3.0 veröffentlicht (Registry nach dem Pull geprüft: Paket 0.3.0 und Changelog stehen drin).
Entscheidungen (im Grill-me abgestimmt): zwei Stufen statt einer; Bestätigung per Befehl mit Begründung; Hypothese nur mit bestätigtem Befund; Umbenennung
verifiziert→belegtmit Migration beim Laden; maschinenlesbarekontext.jsonfür Folgeplugins.Geändert:
nicht verifiziert→belegt(bestandener, unveränderter Nachbau) →bestaetigt(zusätzlich unabhängige Quelle), danebenwiderlegt.befund bestaetigen ID --durch ART:WERT --begruendung TXT;befund belegenist neu,verifizierenbleibt Alias.pruefen --reparierenstuft ab). Hypothese „bestätigt“ ohne bestätigten Befund wird gemeldet und zurückgesetzt.kontext.json(ungekürzt, Feldversion).Geprüft: 325 Tests grün (2 übersprungen), davon 36 neue (
tests/test_rea_stufen.py). 15 Gegenproben (Regel ausgebaut → Tests rot); eine überlebte (Kontextpaket nahm die eingetragene statt der wirksamen Stufe), der Test wurde geschärft, danach rot. Durchlauf mit dem gebauten, entpackten Paket (python3 -I): Nachbau mit Testvektoren aus Bytes des Ziels, Belegen, Bestätigung mit gleicher Stelle abgelehnt, mitfunktion:angenommen,kontext.jsonund Abschnitte stimmen, ein von Hand gesetzter Eintrag wird gemeldet und mit--reparierenabgestuft.--dry-run, Veröffentlichung.Nicht geprüft: Verhalten des Agenten im echten Chat mit Systemprompt und Befehlskarte; Installation von 0.3.0 über die Mac-GUI; ob „bestätigt“ im Alltag tatsächlich gegen Loader-Code in Ghidra erfolgt; ein Verbraucher von
kontext.jsonexistiert noch nicht; Linux-Server. Das alte Testprojekt (3dcyberpuck) wurde bewusst nicht angepasst; es wird beim Laden migriert (alte „verifiziert“ → „belegt“, falls ein Nachbau sie deckt).Offen: Folgeplugin, das
kontext.jsonliest (z. B. Rust-Bau, Dateiformat-Auszug); Hinweis iniris-plugin-dev; Linux-Parität.