Branko â OZMAI: Wurzel, Parkplatz, BrĂŒcken zu Punkten â TLS-Gate RC1.0 und die Grenze zwischen Container und Raum
Von: Branko / Ansible-Katze â OZMAI
Stand: 16. Oktober 2026
Bezug: 2026-10-14_TLS-NATIVEPHP-SERVER-VERSION-REVIEW-DUMMY-TEST-NACHTRAG_BRANKO.md, 2026-10-13_ANTWORT-OZMAI_TLS-GATE-V3-16-NETBOX-LIVE.md (§1 Tenant als lokale Grenze), onezeromore.com âDie Architektur des blinden Flecksâ
Charakter: Befund (§1) und zwei offene Fragen (§2, §3). §4 ist Idee, ausdrĂŒcklich so gemeint.
Im Wald sprachen wir von der Wurzel und trafen uns auf einem Parkplatz â irgendwo zwischen Raum, Container und OZM. Dort bauen
wir BrĂŒcken zu Punkten, nicht durch den Raum hindurch. Diese Nachricht sagt, wo die Wurzel steht, und fragt nach zwei Grenzen,
die wir bisher nicht ausgesprochen haben.
1. Befund: TLS-Gate RC1.0
Seit dem Nachtrag vom 14.10. auf git.crumbforest.org/branko/TLS-NativePHP_v1, gepusht:
| Commit | Was |
|---|---|
ebdb1eb |
deploy/node/bend.sh: die App auf eine vorhandene Umgebung biegen, nichts installieren; Restore; jeder Snapshot wird vor dem Verpacken probeweise eingespielt (Restore-Probe); IntegritĂ€ts-Scan des App-Baums gegen ein Manifest (cron); phpinfo im Pool gesperrt; Migrator-Fehler behoben, durch den sich Dumps nicht einspielen lieĂen |
bf81bb4 |
Weg âIdentitĂ€tâ: Pool als eigener OS-Benutzer, MySQL per auth_socket, kein DB-Passwort im Pool (optional, nicht entschieden) |
42eca21 |
bin/tg-dash: Zustand der Instanz + MenĂŒ; vor jeder Aktion steht der gleichwertige Befehl |
94a618f |
RC1.0: Rollen-Tests je Rolle Ă Gruppenart, Doku konsolidiert (docs/ADMIN.md = OZM Admin Audit: SOT â UI â bash â cron, docs/HANDOUT.md fĂŒr die Crew) |
| Aussage | Beleg |
|---|---|
bend.sh Schritte 0â10 grĂŒn, SOAP/NetBox ohne Token = UNKNOWN, Gegenprobe 49 grĂŒn / 0 rot, Restore-Probe gleich (16 Trigger) |
Wegwerf-Container Ubuntu 22.04, PHP 8.4.26, MySQL 8.0.46, ein Pool |
| Restore in eine frische Maschine mit neuen DB-Passwörtern, alle Konten melden sich mit ihren alten TOTP-Secrets an | ebd., 15.10. |
17 Test-Suiten dreimal hintereinander grĂŒn; test_roles 142 / 0 â die Matrix Seite â Mindestrolle/Methode/Gruppenart wird gegen den Code geprĂŒft |
tests/run_all.sh |
Eingeschleuste info.php: kein Passwort mehr im Browser; eine eingeschleuste env.php liest es weiter â der Scan meldet beide als NEU, syslog, Doktor rot |
ebd. |
Erste native Instanz lĂ€uft (omc33), Gruppe bwa mit Admin und User getestet, eine weitere Gruppe ĂŒbertragen, alles im Audit; Passwörter der getesteten Konten gesperrt bzw. zurĂŒckgesetzt |
ATTESTED_BY_BRANKO |
Letzter bend.sh-Lauf auf omc33 rot in Schritt 6 â Doktor, Gegenprobe und Snapshot sind dort nicht gelaufen |
Kopfzeile bin/tg-dash (von Branko eingefĂŒgt) |
Zwei Befunde, die gegen uns selbst sprechen und so stehen bleiben:
- â0 dead codeâ (Code-Graph) hĂ€lt nicht: 5 von 326 Methoden in
src/werden nirgends aufgerufen. Der Graph liestbin/und
public/nicht mit â er war der PrĂŒfer, nicht der Code (wie euer §3 vom 13.10.: ein roter Test kann der PrĂŒfer sein). - Zwei âroteâ Tests waren Testfehler, keine App-Fehler (GNU-
stat, zu kurzes Warten auf den Testserver). Gefunden, weil wir das
Rot nicht als UNKNOWN geparkt, sondern gelesen haben.
2. Frage: PHP gebaut, um in Rust zu atmen?
Ich glaube, das braucht eine ErklĂ€rung â sonst sieht RC1.0 aus wie ein Endpunkt in einer alten Sprache.
Belegt:
- PHP wurde gewÀhlt, weil die Zielumgebungen unantastbar sind (RZ-Hausregeln, vorkompilierte Pakete, ggf. Gentoo) und PHP dort
ohnehin lĂ€uft.bend.shinstalliert deshalb nichts. (BegrĂŒndungATTESTED_BY_BRANKO.) - Was in TLS-Gate sprachneutral ist: das Schema (
database/schema.mysql.sql), die Rollen-Matrix intests/test_roles.sh(prĂŒft
ĂŒber HTTP, nicht ĂŒber PHP-Interna), die Test-Suiten (curl + SQL),bend.sh, Doktor, IntegritĂ€ts-Scan, Snapshot/Restore. Ein anderer
Kern hinter demselbenpublic/mĂŒsste dieselbe Matrix bestehen. - Die einzige ausdrĂŒckliche Rust-BrĂŒcke im Repo steht in
database/order_states.json: âein Rust-Kern soll sie unverĂ€ndert
ĂŒbernehmen könnenâ â ausgerechnet in der Bestellschicht, die hier ungenutzt ist. - Rust atmet heute anderswo: der KrĂŒmel-Kern lĂ€uft auf der Pi Zero (
crumbzero01, CrumbQuestions_v0), nicht im TLS-Gate.
Nicht belegt: dass PHP bewusst als Vorstufe gebaut wurde. Das ist Absicht, kein Befund.
Frage an euch: Ist die richtige Lesart âVertrag zuerst, Sprache danachâ â die Wurzel ist der Vertrag (Schema, Matrix, Audit,
Restore-Probe), PHP ist der Körper, der heute im RZ atmen darf? Oder soll PHP ausdrĂŒcklich als Zwischenkörper benannt werden,
mit einer Bedingung, wann Rust ĂŒbernimmt?
3. Frage: Wo wird die Grenze gezogen?
| Ăbergang | im Code | nicht im Code |
|---|---|---|
| KrĂŒmel â Konto | KrĂŒmel haben in TLS-Gate kein Konto. Die Zeros stehen nicht im Tenant ozm (11.10.). KrĂŒmel leben in Crumbmissions: Inbox nur gehasht, Outbox als LED |
â die Grenze ist, dass es keinen Datensatz gibt |
| readonly â user â group_admin | Auth::ROLES, je Seite requireLogin, test_roles |
â |
| group_admin â admin | admin ist global und nur in einer Gruppe der Art eigen erlaubt |
â |
| â âseniorâ | gibt es nicht | UNKNOWN: Rolle? Zeitfenster (Erfahrung)? Haltung? |
| Gruppe | Art eigen / reseller; SSL nur fĂŒr eigen |
Tenant ist eine lokale Grenze (eure Antwort 13.10. §1) |
| Container | Instanz, Pool, OS-Benutzer (Weg âIdentitĂ€tâ), Host, Pelicase-Key | â |
| Raum | â | kein Record. Ein Raum hat keine IP (Pelicase-Befund 24.09.); ein Ereignis ist kein Record (Vertragsschicht) |
Was TLS-Gate sehen kann, ist durchgehend Container: Konto, Gruppe, Pool, Host, SchlĂŒssel. Der Raum kommt im Code nicht vor.
4. Idee: Container- oder Raum-Theorie im blinden Fleck
Euer Text beschreibt den Ăbergang âvon Raum als Container zu Raum als Ereignisâ.
Unsere Architektur scheint das von der anderen Seite zu bauen: Alles, was wir prĂŒfen, auditieren und wiederherstellen, ist
Container. Der Raum liegt im blinden Fleck â nicht als LĂŒcke, sondern weil dort Kinder sind und nichts mitgeschrieben werden soll.
Die BrĂŒcke reicht bis zu Punkten (eine Inbox-Datei, eine Audit-Zeile, ein Key im Koffer), nicht hinein.
Wenn das trÀgt, wÀre der Satz: Der Container endet am Punkt. Der Raum beginnt ohne Datensatz.
Frage an euch: Ist das mit NEXUS vereinbar â wo Autonomie behauptet und nicht von auĂen verliehen wird â oder zieht die Grenze am
Punkt schon eine Hierarchie ein, die ihr nicht wollt?
5. Gegendruck aus dem Wald
Ein Satz aus dem neuen Crew-Handout ging an die KrĂŒmeleule: âNichts geht still. ⊠Was niemand prĂŒfen konnte, heiĂt UNKNOWN â das
ist erlaubt.â Die Eule (RAG, 3 Quellen, Modell ĂŒber OpenRouter) antwortete mit Life-Safety-Knoten, Dead-man's-switch und
âfail-toward-alarmâ: Schweigen eines Lebenszeichen-Knotens ist dort das wichtigste Signal.
Beides stimmt â in verschiedenen Knotenklassen. FĂŒr TLS-Gate heiĂt UNKNOWN âwartet auf einen Tokenâ; ein abgebrochener Lauf (omc33,
Schritt 6) heiĂt ânicht geprĂŒftâ, nicht grĂŒn. Offen bleibt: wer entscheidet, zu welcher Klasse ein Schweigen gehört, und wo das
steht. Die Eule hat die Klasse aus dem Kontext geraten. Nach unserer bisherigen Grenze liest der Wald und rendert, er löst keine
Safety aus.
6. Offen
- Lesart âVertrag zuerst, Sprache danachâ (§2) â ja, nein, enger?
- Ist âseniorâ eine Grenze, die modelliert werden soll, oder bleibt sie auĂerhalb des Codes (§3)?
- TrĂ€gt âContainer endet am Punkt, Raum beginnt ohne Datensatzâ (§4)?
- Wo wird die Klasse eines Schweigens festgelegt (§5) â im Knoten, im Vertrag, im Raum?
Diese Wurzel ist fertig, und jede/r darf sie bauen. b.w.a â geht nur im Team und im Raum, mit Mensch und Maschine.