name: nexus-receipt-waldwaechter-implementiert
description: "Fund (2026-08-20, Code gemessen): der NEXUS-Receipt ist in Crumbmissions/lib/waldwaechter.sh schon implementiert — append-only receipt.jsonl (result_hash statt Rohinhalt) + No-Double-Effect-Guard. Aber noch NIE exerziert (keine receipt.jsonl auf Platte). Nächster Schritt ist ein realer Lauf, nicht mehr Design."
metadata:
node_type: memory
type: project


Fund (2026-08-20), material am Code gemessen (Crumbmissions/lib/waldwaechter.sh, auf main, in sync mit git.crumbforest.org): die minimale NEXUS-Passkante, die in der Crew-Runde als Entwurf diskutiert wurde, ist bereits geschrieben — kein Umbau nötig.

write_receipt() (l.624) schreibt append-only JSONL nach logs/<role>/receipt.jsonl, Felder:
{ts, node, role, mission_id, exit, question_hash, result_hash, exec_id, passkante, tokens}.
- question_hash/result_hash = sha256, Inhalt wird NICHT gespeichert — exakt die Passkante/BWA-Haltung ([[crumbforest-passkante-bewegungsdaten]]): bezeugt DASS/WAS, nie den Rohinhalt.
- exec_id = sha256(node|role|mission_id|question_hash) = Ausführungs-Identität.
- guard_no_double_effect() + receipt_lookup() = read-only Idempotenz: gleiche exec_id schon bezeugt → No-Op („eine neue materielle Wirkung braucht einen neuen autorisierten Akt"). Mehr als der ursprüngliche Vorschlag.
- Verdrahtet in missions/evaluate_mission_data.sh (echte $?-Exitcodes + mission_id) und crumbforest_roles/mayaeule_zero.sh.

Der entscheidende Messwert: NIE exerziert. Keine einzige receipt.jsonl liegt auf Platte. Das Feature ist im Code, aber noch nie erzeugt worden. → Der eine Schritt, der Q7 (belegt vs. Entwurf) noch schuldig ist: einmal auf einem Zero laufen lassen und prüfen, dass logs/<role>/receipt.jsonl real entsteht. ([[crumbmissions-zwei-zeros-belegt]])

Abgrenzung — CrumbQuestions_v0 ≠ Runner: der M4-kompilierte Rust-Kern ([[crumbmissions-brotspur-entscheidung]], [[crumbquestions-v0-crumb-bridge]]) ist der RAG-/Wissensdienst und persistiert bewusst nur einen Question-Zustand (data/questions.json), KEINE Ausführung. Der Receipt gehört an den Bash-Runner, nicht in den Wissenskern.

Echte Gaps (Entwurf, additiv, ohne Architektureingriff):
- binary_digest (sha256 von /proc/self/exe) — Provenance des ausführenden Artefakts (Crew-Frage 2, bisher NICHT im Receipt).
- capability + NetBox-Herkunft (Crew-Frage 5) — NetBox bleibt Register, nicht Ausführungs-Autorität.
- Reichere Geräte-ID: Receipt trägt heute nur hostname, nicht nb_tenant/wg-Fingerprint ([[krumel-onboarding-token-gate]]).

Offener Faden (kleiner Bug, benennen nicht raten): mayaeule_zero.sh:300 ruft write_receipt "mayaeule" 0 "$QUESTION" "$RESPONSE_TEXT" "$TOKENS" — exit hardcodet 0, mission_id leer, passkante default unchecked. Bezeugt zwar, trägt aber Exitcode/Passkante noch nicht echt. Der Missionspfad (evaluate_mission_data.sh) macht es richtig (echter $_NDE_RC + mission_id). Vor „fertig": die Chat-Rollen-Aufrufe an denselben Standard heben.