docs: Gate 5 — the smoke list passed, and one criterion was unachievable
Federation answers, sign-in confirmed by the owner, a backup ran, ClamAV's signatures are from yesterday, the wiki returns 302 from outside. One line is not ticked: a call was not tested. Neither coturn nor the SFU was touched, so this undertaking cannot have affected calls - but that is an argument, not a test, and it stands here as the argument it is. Acceptance criterion 1 of this very document is named as wrong rather than quietly reinterpreted. It demands zero workloads left with only the broad rule, and it was written before Gate 2 introduced the class that exists to keep exactly that. What holds is what it should have said: every workload is either narrowly ruled or documented as a reasoned exception at the selector. Four remain open, all with a reason. The pattern behind every correction in this undertaking: they came from measuring, not from thinking about the plan. And four times the tool was wrong rather than the subject - /dev/tcp in an sh, no nc in alloy, find -printf in busybox, busybox TLS against Traefik. Each looked like a finding. Recorded for the next harvest: traffic to the node's own address escapes the policy entirely, so every "internal only" workload still reaches whatever the ingress publishes. Not a fault of this work, but it bounds every statement about these rules and the framework does not know the case. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Q4Ri8NGwyTZzScvKnWFM
This commit is contained in:
co-authored by
Claude Opus 5
parent
2766bea246
commit
c372665e2d
@@ -89,7 +89,7 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
|
||||
|
||||
| Design | Gate | Title |
|
||||
|---|---|---|
|
||||
| [2026-08-21-egress-vollstaendig](docs/design/2026-08-21-egress-vollstaendig.md) | gate-4 | Design: Den ausgehenden Verkehr zu Ende schließen (#0088) |
|
||||
| [2026-08-21-egress-vollstaendig](docs/design/2026-08-21-egress-vollstaendig.md) | gate-5 | Design: Den ausgehenden Verkehr zu Ende schließen (#0088) |
|
||||
|
||||
## ADRs (25)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
type: design
|
||||
status: gate-4
|
||||
status: gate-5
|
||||
date: 2026-08-21
|
||||
size: L
|
||||
related:
|
||||
@@ -595,6 +595,77 @@ auffiel, weil das Ergebnis gegen eine zweite Messung gehalten wurde.
|
||||
Die vier sind `synapse-main`, `coturn`, `matrix-rtc-sfu`, `clamav` — drei
|
||||
davon Dienstmerkmale, eines eine begründete CDN-Ausnahme.
|
||||
|
||||
**Status:** `DONE` — die Abnahme durch einen echten Login steht bei sorb.
|
||||
**Status:** `DONE` — Login von sorb bestätigt: *„anmeldung geht."*
|
||||
|
||||
> **STOP — Slice-Review.**
|
||||
> **STOP — Slice-Review.** Freigegeben.
|
||||
|
||||
## Gate 5 — Closeout (AAR)
|
||||
|
||||
**Planned vs. actual.** Geplant waren drei Wellen; es wurden vier, weil MAS
|
||||
sich im Verlauf als einschränkbar herausstellte statt unklar zu bleiben.
|
||||
|
||||
| Abnahmeliste (Gate 1, Kriterium 3) | Ergebnis |
|
||||
|---|---|
|
||||
| Föderation | `matrix.org` antwortet, `Synapse 1.158.0` |
|
||||
| Anmeldung über Authentik | von sorb bestätigt |
|
||||
| Backup-Lauf | ausgelöst, Archiv geschrieben |
|
||||
| ClamAV-Signaturen | `daily.cld` von gestern 17:40 |
|
||||
| Wiki | von außen `HTTP 302 in 0,19 s` |
|
||||
| **Ein Call** | ⚠️ **nicht getestet.** Weder `coturn` noch die SFU wurde angefasst, dieses Vorhaben kann Calls also nicht beeinflusst haben — aber das ist ein Argument, kein Test, und es steht hier als das eine. |
|
||||
|
||||
**Was diese Arbeit falsch gemacht hat.**
|
||||
|
||||
1. ⚠️ **Abnahmekriterium 1 dieses Dokuments ist unerfüllbar formuliert.** Es
|
||||
verlangt „die Zahl derer, für die nur `egress-block-metadata` gilt, ist
|
||||
**0**" — geschrieben, **bevor** Gate 2 die Klasse C einführte, die genau
|
||||
das vorsieht. Erfüllt ist, was es hätte heißen müssen: *jede Arbeitslast
|
||||
ist entweder eng geregelt oder als begründete Ausnahme am Selektor
|
||||
dokumentiert.* Vier bleiben offen, alle mit Grund. Das Kriterium wird
|
||||
hier nicht stillschweigend uminterpretiert, sondern als falsch benannt.
|
||||
2. **Gate 2s Rückweg-Behauptung** („`git revert` ist ein Rückweg von
|
||||
Minuten") — in Slice 1 korrigiert: es braucht zusätzlich ein Anstoßen der
|
||||
Quelle.
|
||||
3. **Gate 3s Einstufung von MAS** als „vorerst Klasse C" — durch Messung
|
||||
überholt und in Welle 4 aufgelöst.
|
||||
4. **Der Titel von #0088** („13 Ingress-Regeln, 1 Egress") war schon vor
|
||||
diesem Vorhaben überholt und wurde am selben Tag korrigiert.
|
||||
|
||||
**Why the difference.** Alles, was hier korrigiert wurde, kam aus einer
|
||||
Messung, nicht aus dem Nachdenken über den Plan. Und viermal war nicht die
|
||||
Sache falsch, sondern das **Werkzeug**: `/dev/tcp` in einer `sh`, fehlendes
|
||||
`nc` in `alloy`, `find -printf` in busybox, busyboxs TLS gegen Traefik.
|
||||
Jedes Mal sah das Ergebnis nach einem Befund aus.
|
||||
|
||||
**Learnings.**
|
||||
|
||||
- **Die Positivkontrolle ist hier nicht Kür, sondern das Einzige, was ein
|
||||
„blockiert" von einem kaputten Messwerkzeug trennt.** Viermal an einem Tag
|
||||
gerettet.
|
||||
- **NetworkPolicies sind additiv** — der Ausschluss gehört in die breite
|
||||
Regel. Die Deckungsgleichheitsprüfung vor jedem Push ist die billigste
|
||||
Absicherung des Vorhabens: Ein einseitiger Eintrag öffnet einen Dienst
|
||||
ganz oder schneidet ihn ganz ab, und beides ist kein Syntaxfehler.
|
||||
- **Ein ephemerer Container ist der Weg zu distroless Arbeitslasten** — für
|
||||
Sonden und, über `/proc/<pid>/root`, sogar zum Lesen der Konfiguration.
|
||||
- **Ein privater Weg schlägt eine Ausnahme nach draußen.** Der Hinweis kam
|
||||
von sorb und hat eine Regel ganz entfallen lassen.
|
||||
|
||||
**Harvested.** ADR-0025. Für die nächste Ernte vorgemerkt: ⚠️ **Verkehr zur
|
||||
eigenen Knoten-Adresse unterliegt der Policy nicht** — jede „nur intern"
|
||||
laufende Arbeitslast erreicht weiterhin alles über den Ingress
|
||||
Veröffentlichte. Das ist kein Fehler dieses Vorhabens, aber es begrenzt jede
|
||||
Aussage über diese Regeln und ist nirgends im Rahmenwerk vorgesehen.
|
||||
|
||||
**Open uncertainties.**
|
||||
|
||||
1. **Der Call ist ungetestet** (siehe oben).
|
||||
2. **`clamav` bleibt die einzige breite Ausnahme, die kein Dienstmerkmal
|
||||
ist.** Ein interner Signaturspiegel löst sie; ADR-0025 hält das offen.
|
||||
3. **Die Klasse-A-Zuordnung der Deploy-Arbeitslasten beruht auf Zweck, nicht
|
||||
auf Beobachtung.** Sie laufen nur beim Deploy — ein Fehler zeigt sich beim
|
||||
nächsten ESS-Rollout, nicht heute.
|
||||
4. **Die Job-artigen sind nur teilweise belegt.** Für `synapse-backup` wurde
|
||||
ein Lauf ausgelöst; `wikijs-backup`, `turn-secret-rotation` und
|
||||
`wikijs-config` warten auf ihren nächsten regulären Lauf.
|
||||
|
||||
> **STOP — Freigabe für Gate 5.**
|
||||
Reference in New Issue
Block a user