docs: slice 1 for #0106 — the derivation runs, and two of my own errors were caught
The slice changes no behaviour: the scanner still reads the old list. What it adds is the ability to say how much of the estate is covered, and its acceptance is a number already known by hand. Both mistakes in this slice were caught by controls rather than by luck. The counter-proof about tag ordering was itself wrong — name ordering loses v0.10.0, not v0.8.0 — and the test failed until the reasoning was fixed. The first edit to the compose file assumed the wrong indentation, and the assertion in front of it stopped a half-applied change from being written.
This commit is contained in:
@@ -86,7 +86,7 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
|
||||
|
||||
| Design | Gate | Title |
|
||||
|---|---|---|
|
||||
| [2026-08-21-cve-ziele-ableiten](docs/design/2026-08-21-cve-ziele-ableiten.md) | gate-3 | Design: Die CVE-Zielmenge ableiten statt pflegen (#0106) |
|
||||
| [2026-08-21-cve-ziele-ableiten](docs/design/2026-08-21-cve-ziele-ableiten.md) | slice-1 | Design: Die CVE-Zielmenge ableiten statt pflegen (#0106) |
|
||||
|
||||
## ADRs (26)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
type: design
|
||||
status: gate-4
|
||||
status: slice-1
|
||||
date: 2026-08-21
|
||||
size: L
|
||||
related:
|
||||
@@ -465,4 +465,47 @@ Zeigt cAdvisor nur Laufendes, ist die Soll-Menge unvollständig und die Deckung
|
||||
meldet trotzdem 100 %. Dann braucht es eine zweite Quelle für den Betriebs-Stack
|
||||
— und das gehört als Befund in Gate 5, nicht stillschweigend in den Code.
|
||||
|
||||
> **STOP — Freigabe für Gate 4.**
|
||||
> **Gate 4 freigegeben durch sorb, 2026-08-21.** Ausrollen als Deploy-Übergabe.
|
||||
|
||||
### Slice 1 — durchgeführt, 2026-08-21 · Commit `27770b6` (threadnet-operating)
|
||||
|
||||
**Status: DONE_WITH_CONCERNS** — gebaut und belegt, aber die Abnahme dieses
|
||||
Slices ist erst nach dem Ausrollen messbar (siehe unten).
|
||||
|
||||
| Aufgabe | Beleg |
|
||||
|---|---|
|
||||
| 1.1 `cve/targets.py` | `py_compile` sauber; Handlauf `python3 targets.py` vorhanden |
|
||||
| 1.2 `cve/test_targets.py` | **21 Zusicherungen grün** |
|
||||
| 1.3 `cve-exporter.py` | Lauf gegen aufgezeichnete Quellen: fünf `cve_target_*`-Serien, `targets.txt` geschrieben |
|
||||
| 1.4 `docker-compose.yml` | `docker compose config` grün; Volume `cve_targets` rw beim Exporter, **ro** beim Scanner |
|
||||
|
||||
**Die Testreihe kann nachweislich rot werden.** Eine gezielte Sabotage der
|
||||
Normalisierung (Tag wird verworfen, alles fällt zusammen) fährt **11 von 21**
|
||||
Zusicherungen rot; zurückgesetzt wieder grün. Ohne diesen Nachweis wäre „21
|
||||
grün" nur eine Vermutung.
|
||||
|
||||
**Ein Nebenbeweis fiel im Lauf ab:** Der Testbericht trägt
|
||||
`docker.io/library/postgres:17-alpine`, die Soll-Menge `postgres:17-alpine` —
|
||||
und `cve_targets_orphaned` blieb **0**. Die Normalisierung trägt also über die
|
||||
Quellgrenze hinweg, nicht nur innerhalb einer Quelle.
|
||||
|
||||
⚠️ **Zwei eigene Fehler, beide von den eingebauten Kontrollen gefangen:**
|
||||
|
||||
1. Die Gegenprobe zur Tag-Sortierung war **selbst falsch** — sie behauptete,
|
||||
eine Namenssortierung würde `v0.8.0` verlieren. Tatsächlich verliert sie
|
||||
`v0.10.0` und nimmt `v0.7.0` mit. Der Test schlug fehl und hat meinen
|
||||
Denkfehler korrigiert, nicht den Code.
|
||||
2. Der erste Änderungsversuch am Compose ging von **6/8 Leerzeichen**
|
||||
Einrückung aus; tatsächlich sind es **4/6**. Die `assert`-Zeile davor hat
|
||||
verhindert, dass eine halb angewandte Änderung geschrieben wurde — die Datei
|
||||
blieb unberührt. Das ist die Lehre vom 20.08. (zeilenweise, einrückungsbewusst
|
||||
ändern), diesmal als Kontrolle statt als Schaden.
|
||||
|
||||
**Was das Verhalten der Anlage angeht: nichts.** `scan-loop.sh` ist unangetastet
|
||||
und liest weiter `images.txt`. Das Volume ist beim Scanner bereits eingehängt,
|
||||
damit beim Umschalten in Slice 3 kein Neustart-Rennen entsteht.
|
||||
|
||||
**Offen bis zum Ausrollen** (Deploy-Übergabe): Die eigentliche Abnahme ist die
|
||||
Zahl. `cve_targets_missing` muss **24** ergeben, `cve_targets_orphaned` **2**,
|
||||
`cve_target_coverage_ratio` **≈ 0,52** — die Werte der Handmessung. Weicht sie
|
||||
ab, ist die Herleitung falsch.
|
||||
|
||||
@@ -14,11 +14,17 @@ related:
|
||||
|
||||
| gate | commit | approval | status | note |
|
||||
|---|---|---|---|---|
|
||||
| 4 | | | OPEN | Fuenf Slices; Ausrollen als Deploy-Uebergabe, Mengengeruest beigelegt. |
|
||||
| 4 | e316193 | sorb | DONE | Fuenf Slices; Ausrollen als Deploy-Uebergabe, Mengengeruest beigelegt. |
|
||||
| 3 | a0cd02a | sorb | DONE | Dateien, Signaturen, Zusicherungen, Grenzen; fuenf wackelige Annahmen benannt. |
|
||||
| 2 | 2693a2d | sorb | DONE | Herleitung im Exporter statt drittem Dienst; ADR-0026 vorgeschlagen. |
|
||||
| 1 | e10cd5d | sorb | DONE | Sechs Kriterien; Registry-Reichweite = Option C (Bestand + letzte drei je Repo). |
|
||||
|
||||
## Slices
|
||||
|
||||
| slice | commit | status | note |
|
||||
|---|---|---|---|
|
||||
| 1 | 27770b6 | DONE_WITH_CONCERNS | Herleitung + Metriken, nur beobachtend; Abnahme (24/2/0,52) erst nach dem Ausrollen messbar. |
|
||||
|
||||
## Ladder
|
||||
|
||||
| searched | found | outcome | commit |
|
||||
@@ -60,3 +66,10 @@ Betriebs-Host 12), gescannt 27, Registry 36 Tags in 6 Repos davon 7
|
||||
CI-Artefakte. Die volle Lesart der Anforderung ergaebe rund 83 Ziele statt 29 —
|
||||
Faktor drei. Deshalb steht die Registry-Reichweite als ausdrueckliche Frage in
|
||||
Gate 1 statt als stille Annahme im Entwurf.
|
||||
|
||||
**Zwei eigene Fehler in Slice 1, beide von eingebauten Kontrollen gefangen.**
|
||||
Die Gegenprobe zur Tag-Sortierung war selbst falsch (sie behauptete den Verlust
|
||||
von `v0.8.0` statt `v0.10.0`) — der Test korrigierte meinen Denkfehler, nicht
|
||||
den Code. Und der erste Compose-Eingriff ging von falscher Einruckung aus; die
|
||||
`assert`-Zeile davor hat verhindert, dass eine halb angewandte Aenderung
|
||||
geschrieben wurde. Beide Male war die Kontrolle billiger als der Schaden.
|
||||
|
||||
Reference in New Issue
Block a user