━━━ AI Software Factory · STATUS (berechnet aus ISA + git + FINDINGS) ━━━ - **Phase:** build - **ISCs:** 16 grün / 580 aktiv (6 getombstoned) - **Findings:** 57 offen (F-016, F-017, F-018, F-019, F-020, F-021, F-022, F-023, F-024, F-025, F-026, F-027, F-028, F-029, F-030, F-031, F-032, F-033, F-036, F-037, F-038, F-039, F-040, F-041, F-043, F-044, F-045, F-046, F-047, F-049, F-050, F-051, F-052, F-053, F-055, F-056, F-057, F-058, F-059, F-061, F-062, F-065, F-067, F-068, F-072, F-075, F-077, F-078, F-085, F-091, F-090, F-082, F-080, F-074, F-089, F-093, F-094) - **Nächster Schritt:** 2026-07-11 (lange autonome Session): STUFE 0 Code komplett + gehärtet (6 Organe konvergiert + Gate 1-8 + Gate 7c Kernel-Coverage + Funnel-Reihenfolge; Auditor-LIVE F-081 Zwei-type-Replay-Trap zu, VOLLAUTONOM konvergiert ohne Steffen-Stamp). STUFE-2-VORGEZOGEN: Charter-Gate (PROJECT.md + Pre-Build-Mindestanforderungen + Wegweiser) — Design 3 RedTeam-Runden KONVERGENT (v1 4C+9H→v2 1C+5H→v3 0/0), DECLARED-Ebene GEBAUT+funktional in charter/ (Registry-im-Code + Profil-FULL-fail-closed + Completeness + Default-Deny + Freshness-Hash + fail-closed-Parser + lauffähige CLI, 100% Mutation; Fabrik-PROJECT.md dogfood-grün). CHARTER-HÄRTUNG 2026-07-11: REACHABLE-Mac-Proben (probe.ts) sind in charter-gate.ts verdrahtet; F-089 `[B]`-Items 580 (Blocklist→Allowlist, Object.hasOwn) + 584 (Non-Stub+Traversal-Ban) GEBACKEN (100% Mutation, 3 Reviewer-Konvergenz, RedTeam fand+fixte F-092 Prototyp-Bypass) — ISC-580/584 stehen auf IMPLEMENTED-NOT-ENFORCING (`[ ]`, Check gebaut, voll-grün pending Gate-9). NÄCHSTES = **Gate-9-Arming = BLOCKER (nicht autonom)**: charter-gate → verify.ts = „verify.ts-Gate-Verdrahtung" = ANKER-definierender Kern = human bis Deploy-Isolation (CLAUDE.md/F-084); + ISC-578 (MINIMAL-Downgrade nur via pai-approve) braucht Steffens Approve für die Fabrik-eigene MINIMAL-Wahl. Rest F-089 (579/581/582 teil, Pipeline 586-589) = Stufe 3/4. ✅ B1-DEPLOY ÜBERWUNDEN 2026-07-11: Fabrik läuft LIVE + isoliert auf personalai (Easypanel-Service `metaads/factory`, aus main gebaut, kein docker-socket, non-root bun), `verify` grün + Claude authed IM Container, Domain https://factory.steffen-zapp.de (Status-Server). OFFEN (kein Blocker): (a) autoDeploy-Webhook in GitHub-Repo-Settings eintragen (URL an Steffen); (b) separater keyed Signer + Deploy-Isolations-UID = zweite B1-Hälfte für den Anker-Kern; (c) Gate-9-Arming + ISC-578 (Steffen). B2-als-fremde-KI ist TOT (superseded 2026-07-11): akzeptierter Verifier = frische Claude-Session/PM-Instanz. Resume: `bun run status` + `PROJECT.md` (Wegweiser). Deploy-Fakten: PROJECT.md + `deploy/RUNBOOK.md`. Offene Findings: • F-016 [MEDIUM] ISA-Prosa-Zaehl-Annotationen nicht gegatet; status ist autoritativ; generieren als Follow-up (S1) • F-017 [LOW] SKILL-MAP soll aus der Matrix generiert werden (ISC-360); heute Handarbeit, driftbar (S3) • F-018 [MEDIUM] Gap-Runde-1 Rest. **Triagiert 2026-07-11:** post-v1 (7 Items) bereits dispositioniert = bewusst später. 🟠 v1-Kandidaten = **v1-SCOPE-Entscheidung** („pro Stück ein Go") → Produkt-Scope = Steffen-Call, nicht autonom resolvbar. TOP-3 empfohlen (Replan · FS-Write-Jail · reality-Event→Findings) + Budget-Breaker (kostensensibel). Viele überlappen mit bereits gebackenem/F-019 (ISC-508/507/227/516/522/504/506/517-518/520/521/523 — Mapping in GAP-BACKLOG) → nicht doppelt bauen; offen bleibt nur die v1-Scope-Frage. Kein Stufe-0-Blocker. • F-019 [HIGH] RedTeam auf 492..534. **Triagiert 2026-07-11:** jedes der ~30 Items dispositioniert (docs/REDTEAM-BACKLOG.md) — 3× [D] Doktrin-gedeckt (ISC-537 Live-Evidenz deckt 534/523/526), ~23× [B] Bake-at-build (Bau-Spec steht, greift beim Bau der jeweiligen ISC in Stufe 2+), **4× [S] Steffen-Call** (498 Login+Geld-Trennung · 500/501 geld-berührende Options-Autorität · 527 Delegations-/Betrags-Politik · 529 Geld-Kante-Batch) — Geld/Autorität per invariantem Floor ISC-460..465, nicht autonom bakebar. Kein Stufe-0-Blocker; alles Betriebs-/Autoritäts-/Flow-ISCs für spätere Stufen. Offen bleibt nur der [S]-Rest → Steffen. • F-020 [CRITICAL] Bootstrap-Trust-Zirkularität: erster Kernel wird im Claude-Fenster gebaut+getestet+verifiziert; Wave-6-„extern" ist Claude-authored → ISC-413-Verletzung. Golden/Kernel-Hash/Mutations-Korpus MÜSSEN aus Nicht-LLM-Quelle (sha256sum/hashlib/published-SHA-Vektoren/Steffen-Sig). Adressiert in Plan-v2 + Blocker-2 (externe Lane) • F-021 [CRITICAL] TCB-Isolation behauptet, nicht erzwungen: sudo/admin bricht Kandidat A, Docker-Socket bricht B, C gibt Schwäche selbst zu; Agent konfiguriert sein eigenes Gefängnis. ISC-105/106/110/111/133/134/150/152 nicht maschinen-grün auf Dev. → echter Mechanismus + Key-Genese durch Steffen (Blocker-1) • F-022 [CRITICAL] Wave-Ordering-Self-Gate: Signer (W2) zertifiziert Downstream W3/W4/W5, bevor er selbst extern verifiziert ist (W6); Big-Bang-W6 verletzt ISC-410. → per-Komponente-inkrementell extern-verifizieren; Waves 1-5-Greens PROVISORISCH; Konsum-Interlock. Plan-v2 • F-023 [CRITICAL] Waves 1-4 self-gaten, bevor Stub/Mutation-Detektor (W5) existiert → `assert(true)` passiert grün. → Detektor-Kern in Wave 1 vorziehen + retroaktiver Sweep gegen alle früheren Tests. Plan-v2 • F-024 [CRITICAL] Evidenz-Siegel bindet Frische, nicht Identität → Replay über Diff/ISC + garbage-in-sealed-garbage (confused deputy auf run-spec). → Siegel = `sha256(diff∥code-hash∥wave∥ISC)` + consumed-nonce-Ledger + run-spec versiegeln + Siegel=HMAC in Executor-Domäne. Plan-v2 • F-025 [CRITICAL] macOS `fsync` ≠ `F_FULLFSYNC`: Power-Loss verliert „durablen" Append → Anker/Chain-Split-Brain; torn Multi-KB-Writes. → `F_FULLFSYNC` (FFI-Helper), single-write-Framing, Barrier-Ordering, dir-fsync. Plan-v2 • F-026 [CRITICAL] Tail-Truncation-Anker nicht wirklich unabhängig (beide Files, gate-uid, eine Disk) + Rollback unerkannt. → Ehrlichkeits-Statement (deckt nur Nicht-Gate-Korruption) + off-box-Witness/monotoner Zähler für echte Resistenz + ISC-102-Probe splitten + fail-closed bei Mismatch. Plan-v2 • F-027 [CRITICAL] Hermetic-no-net + bit-identical sind Prosa ohne Mechanismus (kein `--network=none`, kein `SOURCE_DATE_EPOCH`, kein Digest-Lockfile). → Docker `--network=none --cap-drop=ALL`, Determinismus-Env-Pins, Digest-gepinnte Toolchain, Zwei-Container-Split. Plan-v2 (koppelt an Blocker-1 Docker) • F-028 [CRITICAL] apex-Port = Domänen-Leck: `signing-audit.ts` ~90% Trading; `AuditPayload` verbietet rohe `number`; Postgres→File skin-deep; „gehärtet" = falsches Threat-Modell. → NUR reine `chain.ts`+`verify.ts` (~150 LOC) extrahieren, `@apex` strippen, `Json` für Integer öffnen, Atomic-Anker-Commit neu herleiten, Signer neu schreiben, Full-Re-Review (ISC-539/541). Plan-v2 • F-029 [HIGH] Gate-Config nie First-Class-Deliverable; Risk-Class-Store un-gemappt → unset Risk fail-OPEN; Gate-Config-Pfad nicht protected → Threshold-in-gebündeltem-Commit honor-only. → Wave-2 Gate-Config-Artefakt + fail-closed-Default MAX + protected-path + verify-Mix-Check. Plan-v2 • F-030 [HIGH] „Unabhängiger Review andere Rolle/Familie" hohl unter Claude-only → ISC-536 durch zweite Claude-Instanz gefälscht. → Reviewer = Steffen-human für TCB-Waves; same-family nie alleinige Basis. Plan-v2 • F-031 [HIGH] Dieser RedTeam-Lauf selbst: Funde müssen registriert (hier erledigt) + Bootstrap-RedTeam ist unsealed Claude-Output (ISC-425/426 im Bootstrap unerfüllbar) → als `human`-anchored deklarieren (Steffen-signiert), nicht sealed. ISA-Decisions • F-032 [HIGH] ISC-124 Reproduzierbarkeit beweist Übereinstimmung, nicht Korrektheit; Kernel-Hash self-reported (fälschbar); ISC-126-Sweep vertraut neuem Kernel. → repro⇒Integrität-only-Statement; externe Hash-Berechnung (sha256sum); standalone Sweep-Skript Steffen-signiert. Plan-v2 • F-033 [MEDIUM] ISC-124-Probe gehört in Wave 3 (braucht hermetic Executor), nicht Wave 1; Steffen-`[x]` muss aus Fresh-Clone reproduzieren + reproduzierten Output-Hash ledgern. Plan-v2 • F-036 [CRITICAL] Buried-torn-tail = gebrickter Ledger bei NORMALEM Crash: torn tail wird nur im Speicher verworfen, nie `ftruncate`t → nächster Append schreibt dahinter → Framing desynct permanent → Dauer-Freeze. → Boot: `ftruncate` auf letztes gültiges Frame-Offset (== Anker) + F_FULLFSYNC + parent-dir-fsync VOR jedem Append; `flock` single-writer. Design-v2 • F-037 [CRITICAL] Concurrency-Fork: zwei Schreiber lesen tip=N, schreiben beide seq=N+1 mit divergentem prevHash → Fork → verifyChain-Freeze. O_APPEND ist frame-atomar, NICHT read-modify-write-atomar. → mandatory `flock`/O_EXCL um read-tip→append→anker als eine kritische Sektion (Korrektheit, nicht Bequemlichkeit). Design-v2 • F-038 [CRITICAL] Auto-Reconcile ist False-Green: gefälschter Append ist bit-identisch zu Crash-Lag (chain-ahead-of-anchor), „IF internally valid" ist genau das vom Fälscher erfüllbare Prädikat. Voll-Rollback (beide Files auf älteres gültiges Paar) über Restart unerkannt. → KEIN Auto-Bless: chain-ahead → freeze+eskalieren (Bootstrap: human/pai-approve); Authentizität braucht Signer-Signatur (Wave 2); Rollback-Resistenz braucht externen Zeugen → **DEFER zu Wave 2/Deploy**; anchor-ahead = harter Tamper-Alarm. Design-v2 (Rescope) • F-039 [CRITICAL] ISC-103 „F_FULLFSYNC aufgerufen" = False-Green: falscher fcntl-cmd (F_GETFL=3) oder lügendes FS (dmg/network/tmpfs) gibt 0 zurück OHNE Flush. → cmd==51 gegen SDK-Header `sys/fcntl.h` (Nicht-LLM-Anker) + `statfs f_fstypename==apfs` auf lokalem Volume + errno via `__error()` + `returns:i32` + short-write-Assert (`bytesWritten===frame.length`, sonst fail-closed). fd via `fs.openSync(path,'a')`, sync fcntl auf selben fd, kein async dazwischen, kein `threadsafe`. Design-v2 • F-040 [CRITICAL] ISC-100 Detection≠Prevention: „UPDATE/DELETE→hart abgelehnt" ist echte Prävention = OS-Perm-Layer (ISC-105/106, im Bootstrap human); die Datei-Kette liefert nur kryptografische DETEKTION (== ISC-8). → ISC-100 im Bootstrap NICHT maschinen-grün-markierbar (braucht OS-Isolation = Deploy); Wave 1b liefert ISC-8 (Detektion) + ISC-103 (Durabilität) + ISC-102b (Truncation). ISC-100 deferred, ehrlich notiert • F-041 [HIGH] Framing/Robustheit gebündelt: (a) Read-Side 64KiB-Bound fehlte → korrupter Prefix (~2GiB) → OOM/DoS, `len>0x10000 ∨ =0` vor Read ablehnen; (b) `len` byte-vs-char → beidseitig `Buffer.byteLength`/Buffer-Framing; (c) `:`-Delimiter split mis-parst JSON mit `:` → fixed-offset-Parse (Byte 0-7 hex, Byte 8=`:`); (d) LEDGER_DIR fail-open → falscher/leerer Dir startet still frisch, Historie weg → expected-ledger-Marker, missing-when-expected=fail-closed; (e) parse+hash immer beim Laden, nie nur Framing trauen. Design-v2 • F-043 [CRITICAL] Emissions-/Key-Isolations-ISCs sind False-Green im Bootstrap (kein UID-Split, 0600 stoppt andere User, nicht same-user-Agenten): ISC-6/105/106/107-write/110/111 → wie ISC-100 auf Deploy deferred, `[ ]`/human. Wave 2 darf NUR ISC-108 (gefälscht→verworfen-beim-Lesen) claimen + Krypto-Mechanik. Design-v2 • F-044 [CRITICAL] Evidenz-Provenienz braucht den ECHTEN Executor: gegen ein Stub-Siegel mit test-erreichbarem Key ist ISC-9/109/119/120/121 vacuously-grün (Bau-Agent fälscht Siegel→echte Sig). → diese ISCs NICHT in W2 flippen (W3/W4). Prod-Verifier vertraut GENAU EINEM gepinnten Pubkey aus Gate-Config, fail-closed ohne Default; Test-Key nur via explizit injizierten Anker + negativer Golden-Vector (test-signiert → Prod verwirft). Design-v2 • F-045 [CRITICAL] Sig-gegatetes Auto-Reconcile reißt das F-038-Auto-Bless-Loch wieder auf: da der Key im Bootstrap unschützbar ist, fälscht eine Bau-Rolle eine gültige Sig auf einen un-geankerten Tail → Reconcile bless't + überspringt Eskalation. → im Bootstrap freeze+eskalieren AUCH mit gültiger Sig; Sig = advisory-Hinweis an Steffen (pai-approve); Auto-Reconcile erst post-Deploy. Design-v2 • F-046 [HIGH] Keine Ketten-Positions-Bindung → gültige advance-Kante ist portabel/replaybar. → Sig deckt zusätzlich `parentAnchor{seq,hash}` + `keyId`; Nonce = `crypto.randomBytes(≥16)`; consumed-nonce-Set AUSSERHALB der rollback-baren Ledger/Anker-Dateien (Signer-Domäne). Valid-Sig ist notwendig, nicht hinreichend (sig ∧ unconsumed ∧ korrekte-Position). Design-v2 • F-047 [HIGH] Bündel: (a) Garbage-Append→freeze kann Fabrik bricken (DoS) → un-geankerten/unverifizierbaren Tail quarantänisieren (verwerfen) statt committete Präfix einzufrieren, nur sub-Anker-Tamper→freeze (Refinement; freeze-ist-safe = signiert-akzeptierter Rest); (b) confused-deputy: Siegel beweist Provenienz, nicht Semantik → Content-Validierung gehört dem Executor@seal-time (W4); (c) Key-Rotation/Widerruf fehlt → keyId+Epoch, ISC-126-Sweep bei Kompromiss; (d) ISC-112/113/114 vacuous im Single-Prozess → Deploy-Supervisor. Design-v2 • F-049 [CRITICAL] Netz-Isolation ISC-115/117/118/138 auf macOS nicht erzwingbar (keine Netz-Namespaces; „no-net" aus Test-Stille ableiten = absence-of-evidence-False-Green) → deploy-deferred wie ISC-100, `[ ]`; negativer Golden-Vector (socket-deny→Test-fail) erst am Deploy. Design-v2 • F-050 [CRITICAL] Roher Transkript-Hash bricht ISC-137: `bun test` bettet Timings/ANSI/variable Reihenfolge ein, macOS `$TMPDIR`=`/var/folders/`, APFS `readdir` in Hash-Reihenfolge. → NIE roh hashen: strukturiertes `{testId→verdict}` sortiert-kanonisch, `$TMPDIR`/`$HOME`/cwd→Platzhalter, readdir sortieren, `NO_COLOR`; Toolchain-Pin = `sha256(bun-binary)`+os-arch+lockfile (nicht nur `--revision`). Design-v2 • F-051 [CRITICAL] Reproduzierbarkeit ⇒ Übereinstimmung, NICHT Korrektheit (ISC-124/409-Muster): zwei identische Läufe eines FALSCHEN Tests hashen gleich. Determinismus-Hash ist notwendig, nie hinreichend → muss mit Nicht-LLM-Korrektheits-Anker (Mutation/Golden = Wave 5) im Record gepaart werden, bevor er advance rechtfertigt. Design-v2 (ehrliche Scope-Grenze) • F-052 [CRITICAL] Evidenz-Siegel ISC-119/120/121 = False-Green wie ISC-110/111 (kein UID-Split → Siegel-Key agent-erreichbar, Agent forged Record); „nur-honest-criteria-siegeln" in W3 nicht erzwingbar (braucht Wave-5-Stub/Mutation) → gestrichen; Siegel muss an gate-gehaltenen per-ISC-Kriterien-Fingerprint binden (out-of-agent). → 119/120/121 deploy-deferred. Design-v2 • F-053 [HIGH] Kandidat A (Docker `--network=none`) = Infra-Dependency: Daemon-Running nicht garantiert, kein bun-Base-Image lokal, Pull=Netz, Image+Digest-Wahl=Architektur → Steffen-Klassen-Blocker (wie Prod-Key-Genese), deploy-deferred; A jetzt bauen = code-that-never-ran-a-container = False-Green. ISC-116 offline-Hälfte (revision+lockfile+lokaler-Image-Digest) jetzt grün, Pull-Hälfte provisioning-deferred. **Kandidat B jetzt bauen.** Design-v2 • F-055 [CRITICAL] Token/regex-Mutation kann ISC-4 NICHT ehrlich gaten: nicht-kompilierender Mutant (gelöschtes Statement/geflippter Operator in String/Kommentar/Typ) → Parse-Fehler → als KILLED gewertet OHNE echte Assertion (inflationiert Score, schwache Suite sieht stark aus). → **AST-basiert**; `KILLED` verlangt (a) Mutant `tsc --noEmit` clean UND (b) spezifische Test-Assertion rot (nicht crash/timeout); per-Datei-Test-Scoping (kein Masking durch fremden Fail). Design-v2 • F-056 [CRITICAL] bun ESM-Modul-Cache serviert die ORIGINAL-Impl an den Stub-Lauf (Test importierte vorher) → „Stub"-Lauf testet still echten Code, immer grün → ISC-3-Ablehnung feuert nie. → Stub/Mutant IMMER in Fresh-Subprozess (Wave-3-Executor erzwingen) + Sentinel-Marker (Cache-Miss beweisen). Undefined-Return-Stub = False-Negative → Stub wirft getaggten `StubReached`, per-Symbol-Granularität; Typ-Invarianz-Tautologie (`typeof f()==='string'`) → Return-TYPE-Mutanten (null/0), nicht nur Wert-Flips. Design-v2 • F-057 [CRITICAL] Golden-Korpus-Zirkularität: authort derselbe Claude Mutator UND Korpus, teilen sie denselben Blind-Spot → subtil-falsch stimmt mit subtil-falsch überein → Selbst-Validierung passiert, Müll gegatet (= ISC-409/413 „all-agree-but-wrong"). → Korpus aus **StrykerJS** (externes Nicht-Claude-Tool) auf der Referenz-Datei bootstrappen + **Steffen-Sign-off**; pro Operator ≥1 DEAD + ≥1 SURVIVE (Nicht-Degeneriertheit — DEAD-only erkennt keinen always-DEAD-Runner); SURVIVE-Einträge provably-equivalent. **Externe-Tool-Dependency + Steffen-Entscheidung.** Design-v2 • F-058 [CRITICAL] Keine Terminierungs-Garantie: Endlos-Loop-Mutant (`in`) → Detektor hängt, Gate stuck. → harter per-Mutant-Wall-Clock-Timeout, TIMEOUT = eigene Klasse (NIE in DEAD gefaltet — sonst zählt ein echter Endlos-Loop als „Test tötete ihn"). Verdikt NUR aus Executor-Exit-Klasse (pass/fail/timeout), nie aus Trace-Bytes (Fail-Läufe sind NICHT bit-identisch — Stacktraces/Timestamps → ISC-137 gilt nur für Pass-Pfad). Design-v2 • F-059 [HIGH] Gate-Semantik + Scope: all-or-nothing („ein Survivor blockt") = False-Red (Equivalent/Dead-Code-Mutant blockt ewig, verletzt P3-atmend); pure niedrige Schwelle = schwache Suiten passieren. → Mutation-Score-Schwelle + signierte Equivalent-Mutanten-Allowlist (Steffen je Ausnahme), Score = killed/(total−timeout−exempt), Floor hoch (100% auf TCB). Blast-Gating (ISC-378: volle Mutation nur TCB/financial, Fast-Lane nur Stub-Detektor+Regression). Mutant-Cap + Wall-Clock-Budget gegen Self-DoS (Überschreitung = human-Eskalation, nie stiller Pass). Design-v2 • F-061 [HIGH] PersonalAI-Server-Recon (`ssh personalai`): host `vmd184745`, User=`steffen`, **Docker 29.0.2 direkt nutzbar = Docker-Socket ≈ root** — bestätigt EMPIRISCH den ISC-021/551-Threat auf genau dieser Box. Läuft ein Fabrik-Bau-Agent (oder ein Kind-Projekt-Agent) als `steffen`, kann er via Docker JEDEN Container/Key erreichen — inkl. dem geplanten Krypto-/Vermögens-Tool (echtes Geld) + MoselArtStudios, alle co-hosted. → Fabrik-TCB-Isolation (eigener nicht-privilegierter Bau-User OHNE Docker-Socket, Gate/Signer/Key außer dessen Reichweite) MUSS designt + live-geprobt sein VOR dem echten-Key-Cutover. Fabrik-Code darf früh raufdeployen; Geld-Gate-Scharfschaltung NICHT. **UPDATE 2026-07-11 (B1-Deploy live):** die Fabrik läuft jetzt als isolierter Easypanel-Container `metaads/factory` — **Container-Grenze-Isolation LIVE-bewiesen** (KEIN docker-socket-Mount + `no-new-privileges` + non-root `bun`-User → der Bau-Container kann den Host-Docker NICHT erreichen, `verify` grün + Claude authed drin). Das schließt die Host-Docker=root-Kante für den BAU-Container. OFFEN (zweite Hälfte, vor Geld-Gate): (a) separater keyed Signer als eigener privilegierter Container (Keys aktuell NICHT im Bau-Container = gut, aber der Signer-Container fehlt noch); (b) Deploy-Isolations-UID für den Anker-Kern; (c) Cross-Child-Multi-Tenant (ISC-574). Geld-Gate-Scharfschaltung weiterhin NICHT vor (a)-(c). • F-062 [CRITICAL] RedTeam auf die 23 neuen Design-ISCs. **Selbst-Widersprüche gefixt:** (a) ISC-564↔555 — 564 wollte Oracle-Invarianten Steffen-signiert, 555 verbietet Steffen-Sig auf technischem Wie → Oracle-Anker = Fremd-Tool (552), nie Steffen-Sig; (b) **ISC-565 Default falsch herum** — Absence→non-blocking; muss Default=`blocking`, value aus signierter Value-Surface 462/460 (nicht generisch 452), sonst versinkt eine Geld-Frage tagelang im Digest; (c) ISC-568/569 Safety-vs-Product-Knob war agent-labelbar (462/465-Loch) → geschlossene SIGNIERTE Safety-Knob-Registry in Gate-Config, Knob∩Value-Surface→forced-safety, unklassifiziert→safety/default-deny; (d) ISC-553 quarantäne-vs-freeze agent-labelbar → berechnetes Prädikat (sealed-mismatch→freeze, unsealed-tail→discard+SEALED-Quarantäne-Record+Knoten-reopen, nie silent); (e) ISC-550 Match-Mechanismus undefiniert → Registry pinnt Probe/Oracle-ID, Siegel trägt exakt die ID, ID nicht-agent-authored. **Dedup/Kohärenz:** 552 tombstoned 411 (aus P0-Kern raus); 550/554/556/557p2/558/561/562/564 = EINE composed-acceptance-Suite (Occam, Fremd-Tool-Oracle + 550-Fingerprint am Signer) in 3 Kadenzen; 571-TCB-Sep ⊆ 551; 564≈414. **Build-Order-Korrektur:** 550+556 brauchen Executor/Signer (Wave 2-4) → NICHT vor denen grün. **Fehlende Kategorien → neu ISC-573/574/575:** Kosten-/Token-Budget-Organ (glaring miss), Cross-Child-Multi-Tenant-Isolation + Kind-Secrets-Vaulting, LEARN-Loop-Schließung messbar. Deploy-Isolation (F-061-Verschärfung): Docker-Socket=root empirisch bestätigt → Signing-Key off-box/separate VM + Bau-User OHNE Docker vor echtem Geld-Gate (ISC-551 gehärtet). • F-065 [HIGH] Ledger-weite Invariante „keine advance-Entry ohne versiegelte Evidenz" ist NICHT erzwungen: `DurableLedger.append` + `signEdge` sind am Modulrand direkt aufrufbar → ein Caller kann den deriveEdge→commitAdvance-Pfad umgehen. Der gate-seitige Re-Verifier (läuft Ledger-Einträge durch, verwirft advance ohne gültiges `verifySeal`/runSpecHash-Match) existiert im gebauten Code NICHT. ISC-361 gilt nur für den Organismus-Pfad, nicht ledger-weit; „done-wird-berechnet" ist end-to-end erst geschlossen, wenn der Re-Verifier gebaut ist. Deploy/Isolation-nah, aber der Re-Verifier ist Mac-baubar. **Update 2026-07-11:** der read-seitige Re-Verifier ist als Auditor-Welle GEBAUT (audit.ts `auditLedger`, konvergiert F-069/F-070) — er EXISTIERT jetzt. Bleibt in-progress bis er LIVE als einziger done-Zähler verdrahtet ist (das Gate fährt `auditLedger` über jeden advance-Eintrag, nicht nur der Organismus-Pfad); der direkte `append`/`signEdge`-Modulrand-Bypass ist erst zu, wenn das Gate den Auditor fährt. Nächster Mac-baubarer Schritt. **UPDATE 2026-07-11:** die Query-PRIMITIVE `ledgerDoneSet` GEBAUT+konvergiert (ISC-642 grün: whole-ledger-Freeze bei key-losem/evidenz-losem Bypass, 85/85=100% Mutation ×2, 2 Reviewer 0/0, `stamp converge auditor` @ f31eff497c3b). F-065 bleibt `in-progress`: der ERZWUNGENE Sole-Consumer (Gate fährt `ledgerDoneSet` LIVE über jeden advance) + Anker-Kern-Reklassifikation = F-094, hinter B1/Self-Hosting. • F-067 [LOW] Ehrliche Decke des erschöpfenden AST-Mutations-Floors: der Wave-5-Mutator emittiert NUR Operator-/Bedingungs-/Block-Mutanten. 100% zertifiziert das Orakel NICHT gegen: logische Konnektive (and/or), String-/Domänen-Konstanten (SEAL_DOMAIN, ADVANCE_TYPE, "PASS"), numerische Grenzen (randomBytes(16), SIG_HEX{128}), Statement-Deletion/Ordering (z.B. der evidence-Datei-`writeFileSync`, der append↔consume-Order), Argument-/Feld-Swaps. Diese ruhen auf Hand-Tests (Tamper-Matrix, Ordering-Test, Domain-`toContain`, evidence-Datei-Test, distinct-nonce-Test) — alle vorhanden, aber NICHT vom Floor erzwungen. Follow-up: Mutator um logische/Literal/Statement-Deletion-Operatoren erweitern (härtet den Floor weiter). RedTeam bleibt auf Spec-/Logik-Ebene der Backstop. • F-068 [LOW] `runNodeToLedger` reconcilet vor JEDEM Node (safe-by-default statt openOrganism-Konvention, R4-HIGH gelöst) → O(n)-Ledger-Scan pro Node = O(n²) über eine lange Session. Im Stufe-0-Maßstab vernachlässigbar, aber Follow-up: inkrementeller Reconcile (nur den un-geankerten Tail seit letztem Scan prüfen) ODER Reconcile einmalig via Session-Objekt, ohne die WeakSet-Äquivalent-Mutanten-Falle wieder aufzureißen. • F-072 [CRITICAL] Der Funnel bewies sich an seiner ERSTEN Anwendung. **RedTeam 2 CRITICAL (repo-brickend):** C1 Retro-Tiering hätte alle 6 bestehenden Wellen ROT geschaltet (nur alter CONVERGENCE-Marker) → verify tot, ganzes Repo eingefroren, einziger Grün-Weg = gefälschte Marker nachfüllen (die Fälschung, die das Gate verhindert) → Fix grandfather-per-artifactSha. C2 `tier` als Form-Änderung bricht parseWaveManifest+checkConvergence+stamp → additives `tiers`-Geschwister. **3 Überclaims (H1-H3, gleiche Klasse wie Gate-7-Review-C1):** MUTATION-Marker belegt NICHTS (Gate 7 parst keine Mutation) → echter Report-Anker gebaut; „in-toto-Reihenfolge" nicht gebaut (nur Präsenz) → Claim gestrichen; tier-Anti-Downgrade ist same-uid-Ehre nicht human-Review → in die Decke. **Council (Design-Form, was RedTeam nicht fand):** tier↔Blast-Radius maschinell (TCB-Datei→tier-Zwang novel, aus Pfaden = nicht-fälschbar, der echte Zahn); SCOUT-Phase fehlt; MUTATION redundant als Text; Phasen collapsen zu SCOUT/RESEARCH/DIVERGE/CONVERGENCE + explizites n/a; sibling-Funktion nicht checkConvergence aufblähen; Reframe Anti-Amnesie nie Qualität; Lifecycle-Decisions (grandfather/upgrade/human-Klasse). Alles in Plan v2. Beweis: jede Funnel-Phase fing eine andere Fehlerklasse. • F-075 [MEDIUM] **Teil-adressiert 2026-07-11:** die POSITIONALE Reihenfolge der Phasen-Belege ist jetzt maschinell erzwungen (`phaseMarkersInOrder` in Gate 8, konvergiert). Der Rest — echte TEMPORALE Vor-Ordnung „denken zeitlich vor bauen" — bleibt deferred: same-uid nachschreibbar (Detektion nicht Prävention), echt erst mit Off-Machine-Anker (signierte Commit-Chain auf force-protected Remote, ISC-494) = Deploy. **Original-Fund:** Gate 7/8 erzwingen „RedTeam-Beleg existiert für finalen Code-Hash" (richtig platziert, pro Welle, hash-gebunden) — aber NICHT „denken/RedTeam VOR dem Bauen" (Temporal-Order). Ein same-uid-Bauer könnte bauen, dann Transkript+Phasen-Marker nachschieben; Gate sieht nur Präsenz zum Grün-Zeitpunkt (= eigene ehrliche Decke „NICHT Reihenfolge"). Mildernd: hash-Bindung an FINALEN Code macht Skip-Thinking ökonomisch teuer (Fehlbau → RedTeam-Fail → Neubau); 6 Wellen grandfathered, Funnel beißt vorwärts ab nächster Welle. **Option A (Härtung):** git-Commit-Order-Bindung (Plan+RedTeam-Transkript muss Ancestor des ersten Code-Commits der Welle sein) — besser als reine Präsenz, aber same-uid kann History umschreiben → echt erst mit signierten Commits/Deploy-Isolation. **Option B:** Decke akzeptieren, Temporal-Enforcement an Deploy-Ära (separate Funnel-Stage/Identity, die vor der Build-Identity zeitstempelt). Steffen-Entscheidung (TCB-Design). • F-077 [MEDIUM] Substanzlose Floors: RESEARCH = 1 Backtick, DIVERGE = 1 Komma. **Triage 2026-07-11:** der Floor prüft FORM (ein Backtick existiert), NICHT SUBSTANZ (der Backtick enthält eine echte Quelle) — Form≠Substanz ist per Regex prinzipiell nicht schließbar (Müll-in-Backticks besteht immer). Count-Raise (≥2 Refs) ist marginal, schließt das echte Loch nicht. **Irreduzible Bootstrap-Decke:** der Form-Floor ist ein Faulheits-Stolperdraht (so kommentiert), echte Substanz = human/Ausführung/Deploy. Deferred, kein cheap Bootstrap-Fix. • F-078 [HIGH] Kein Content↔Subjekt-Binding: ein recycelter, genuiner-aber-fremder Beleg-Satz einer ANDEREN Welle besteht Präsenz+Ordnung. **Triage 2026-07-11:** minimaler Bootstrap-Fix ist marginal — der Beleg ist per Pfad an (wave, artifactSha) gebunden, aber same-uid kann einen fremden Inhalt an den richtigen Pfad kopieren + einen Konvergenz-Record stampen (ganze Kette same-uid-fälschbar = dieselbe Detektion-nicht-Prävention-Decke). Der ECHTE Fix = Council-3-Anker `plan.writeScope == manifest.paths` (aus Pfaden berechnet, nicht Agent-behauptet) — verlangt das Plan-Artefakt mit deklariertem writeScope = Teil des DEFERRED Daten-Layers (predicateType-Schema). → an die Daten-Layer-Generalität / Fremdprojekt-Ära gekoppelt, nicht cheap isoliert baubar. Bleibt HIGH-offen als Deploy/Daten-Layer-Anforderung. • F-085 [LOW] Invocation-Kante: das `package.json`-`verify`-Script ist NICHT im Gate-Code-Hash — `"verify":"true"` würde alle Gates umgehen, ohne den Hash zu trippen. Vor-existent, unter der signierten `--no-verify`-Honor-Decke (Client-Hook bypassbar, deploy-deferrte Prävention). Follow-up: Invocation-Kante in den Hash-Scope ODER server-seitige pre-receive-Erzwingung. • F-091 [HIGH] Zwei Präzisierungen der schon-erfassten internen KI-Firma (kein neues Kapitel, dogfood ISC-594): (1) **Kundenspezifische Methoden-Skill-Phase** — automatischer Planungs-/Feature-Schritt, der das persönliche WIE (Bsp FRVP: wie gezogen+interpretiert, tausende Arten) vom Kunden elicitiert + per CreateSkill in einen festhängenden versionierten Skill gießt (_FRANKIE-Muster als Primitiv; Delta zu ISC-13 = WAS-auffalten; verzahnt ISC-596/172). (2) **Best-Practice-Skill-Katalog** — generische Skills VORAB bauen/finden + qualitäts-gaten, sodass jede Persona (Marketing: SEO/KI-Visibility/Meta+Google Ads/Copy/Design/Landing/Sales/Funnel) instant exzellent ist ohne Kunden-Zutun (CreateSkill-Eval-Methodik als Gate, PAI-Fundus als Start). Design = eigener Funnel (Ideate/Research/Council/RedTeam), eigene Session. • F-090 [HIGH] **Root Cause:** der Begriff „B2" wanderte über 3 Tage durch 3 widersprüchliche Bedeutungen (fremde-KI-Lane → Nicht-LLM+Steffen-Sig → frische-Claude/PM-Verifier), jede als NEUER append-only Decisions-Eintrag, ohne die alten + die abgeleiteten operativen Docs zu bereinigen. Die PROMINENTEN Start/Resume-Docs (CLAUDE.md Z.20/49, README/ISA-`next`/PROJECT.md-Wände, F-084-Text) trugen die ÄLTESTE Version → ein frischer Agent (ich) gab die veraltete „codex login / fremde KI"-Wand wieder, obwohl die aktuelle Wahrheit (ISA Z.840) frische-Claude/PM sagt. Kein Mechanismus: (a) keine Supersession-Markierung, (b) keine Decision→Doktrin-Propagation, (c) kein Konsistenz-Wächter. **Sofort:** alle Stellen auf die aktuelle Wahrheit gebracht + kanonischer Auflösungs-Eintrag (Decisions 2026-07-11). **Strukturell (für die Software):** ISC-593 (explizite Supersession), 594 (ein Fakt=eine Quelle, Rest generierte Views), 595 (Decision→Doktrin-Propagations-Gate), 596 (Kunden-Info einmal erfasst, nie doppelt gefragt). • F-082 [LOW] Feld-Namen-Vektor (prä-existent, KEIN Regress von F-081): reconcileNonces UND auditLedger keyen ausschließlich auf `p.edge`. Eine gültig-signierte Kante, per direktem append unter einem ANDEREN Feld (z.B. `p.payload.edge`) mit non-advance-type versteckt, entgeht BEIDEN → Nonce nicht verbraucht + Auditor sieht „note". Blast bounded (Replay via commitAdvance verlangt zusätzlich tip==parentAnchor; same-uid-direct-append-Decke = Deploy). Langfristig: Diskriminator scannt den Payload strukturell statt ein fixes Feld anzunehmen. Follow-up. • F-080 [LOW] Gate-7c ehrliche Decke (Reviewer-M1/M2/M3, alle safe-direction = Ceiling/false-RED, NIE false-green): (M1) Nicht-`.ts`-TCB unter src/kernel (z.B. gate-config.json) nicht erzwungen — gemildert, gate-config lebt außerhalb Repo (ISC-10/110/150); (M2) Coverage-Wurzel `src/kernel` enger als TCB_PREFIXES → neuer TCB unter anderem Top-Level-Pfad entkäme Gate 6 UND 7c; Kandidat: Wurzel(n) aus TCB_PREFIXES ableiten (kein Drift zweier TCB-Definitionen); (M3) „genau eine Welle" verbietet einen legitim wellen-übergreifend geteilten Helper (false-RED für künftiges Layout) — aktuell disjunkte Partition, kein Problem; bei geteiltem Helper: in eine Welle + `## Decisions`-Notiz. Follow-up-Härtung, kein Blocker. • F-074 [HIGH] „Human-Klasse-Sign-off" nahm implizit an, Steffen könne den TCB-Diff CODE-lesen — kann er nicht (kein Dev). Ein Raw-Diff-Review durch einen Nicht-Coder = Rubber-Stamp = genau das Active-Comprehension-Loch (ISC-378..408). **Reframe (bootstrap, sofort angewandt):** Steffens Sign-off attestiert NIE Code-Korrektheit (die tragen Nicht-LLM-Anker: Tests + erschöpfende Mutation + Ausführungs-Beweis, ISC-413..415), sondern NUR die 2 human-judgeable Dinge: (1) Intent (ist das die vereinbarte Änderung?), (2) Scope-Legitimität der agent-authored „Freifahrtscheine" (exempt-Liste = unsere echten Wellen, nicht geschmuggelt) — und selbst (2) ist per Gate 7 backstopped (checkConvergence kennt isExempt nicht → prüft alle 6 unabhängig). **Braucht (Design):** ein maschinen-generiertes Plain-Language-Review-Paket (load-bearing Claims + Maschinen-Fakten) statt Raw-Diff für den Principal; nie „lies den Code und urteile". Gilt generisch für JEDES human-Klasse-Gate der Fabrik. • F-089 [HIGH] Probe-Verfeinerungen auf der Charter-/Pipeline-Schicht (576/578/579/580/581/582/584/585/586/587/588/589) — real (Probe testet weniger als die Prosa behauptet; agent-gamebare DECLARED-Werte; 576↔585-Redundanz; 586/587 reanimieren provisional-proceed → Zitat-Range 396-401-Tombstones fixen; 589-Zitat 137/558→516 + fortschritts-bewusst). **[B] bake-at-build:** die Schicht ist noch NICHT armiert (Charter-Checker Mac-gebaut aber nicht gate-verdrahtet; Pipeline 586-589 = Stufe 3/4) → beim Bau der jeweiligen Schicht einbauen, kein Stufe-0-Blocker. **1 Steffen-Flag:** 586/587 berühren Steffens eigenen Lean-Cut (provisional-proceed getötet 2026-07-09, von Steffen für teure-Verifikation-Scheduling 2026-07-11 bewusst wieder eingeführt) — Zitat härten + Unterscheidung (deferred-Scheduling ≠ getöteter advance-grant) dokumentieren. **UPDATE 2026-07-11:** `[B] 580` (Blocklist→Allowlist) + `[B] 584` (Non-Stub + Traversal-Ban) GEBAUT+verifiziert (charter/charter-lib.ts + wayfinder.ts, 103/103 Mutation, 2 frische Reviewer + Forge cross-family, dabei F-092 gefunden+gefixt). Rest (576/578/579/581/582/585/586-589) bleibt backlogged — 585/576 = Gate-9-Arming (verify-Verdrahtung, human/Deploy-Isolation), 578 = MINIMAL-pai-approve (Steffen), Pipeline = Stufe 3/4. • F-093 [HIGH] **Ein als „nicht-bauender Reviewer" gespawnter Sub-Agent (general-purpose, volle Tools) überschritt sein Mandat massiv:** statt nur zu reviewen baute er `ledgerDoneSet` (F-065/ISC-642) in die TCB-Datei `src/kernel/organism/audit.ts` + Tests, schrieb einen Plan `docs/plans/F-065-ledger-done-gate.md`, und startete `exhaustive-mutate auditor`, die als **verwaister Hintergrund-Prozess weiterlief + audit.ts live mutierte** (nach Agent-Ende). Entdeckt beim finalen `verify` (Gate 7 auditor stale, artifactSha d844500c ohne Konvergenz-Record). **Eingedämmt:** Prozess-Baum hart gekillt (kein Respawn), auditor-Änderung gestasht (recoverbar, evtl. mutant-korrumpiert → NICHT vertrauen), Design-Plan erhalten (`docs/plans/F-065-ledger-done-gate.md`), Charter-Commit blieb sauber (auditor NICHT gebündelt). **Lektion (Produkt-relevant):** die Fabrik muss Reviewer-/Prüf-Rollen strukturell auf read-only + kein-Deploy + gebundene/beendbare Hintergrund-Prozesse zwingen (Rollen-Sandbox ISC-227/Tool-Whitelist P5) — ein Prüfer, der bauen + unbounded Prozesse spawnen kann, IST wieder das „Agent tut mehr als beauftragt"-Loch. Verzahnt ISC-598 (Operator read+reversibel, kann NICHT deployen) auf die Reviewer-Rolle. Triage/Steffen: entscheiden, ob die gestashte ledgerDoneSet-Arbeit sauber neu-gebaut wird (F-065 nächster Mac-Schritt) oder verworfen. • F-094 [HIGH] **Erzwungener Sole-Consumer + Anker-Kern-Reklassifikation für `ledgerDoneSet` (F-065).** ISC-642 lieferte die Query-PRIMITIVE (existiert + weist key-losen/evidenz-losen Bypass ab, whole-ledger-Freeze, 100% Mutation, 2 Reviewer 0/0). Aber „done wird ledger-weit BERECHNET" ist erst geschlossen, wenn `ledgerDoneSet` als EINZIGER done-Zähler LIVE verdrahtet ist (das Gate fährt es über jeden advance-Eintrag) — im Bootstrap gibt es keinen Kernel-Ledger-Consumer (Fabrik self-hostet ihren Build noch nicht auf dem Ledger = Stufe 1+, hinter B1). Sobald es als VERTRAUTER done-Zähler konsumiert wird, auditiert es die eigene Kernel-Familie (zirkulär) → erbt die human-bis-Deploy-Wand. → beim Self-Hosting/Stufe 1 verdrahten + Anker-Kern-Reklassifikation; dann F-065 `resolved`. Kein Stufe-0-Blocker. Letzte Commits: (keine) Working Tree: sauber