docs: SAVEPOINT — Rippy v5, Etappe W-0
Ampel / ampel (push) Failing after 2m14s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-08-30 16:54:32 +02:00
co-authored by Claude Fable 5
parent c539e65cd2
commit 0464933ada
+83 -1
View File
@@ -1,6 +1,88 @@
# SAVEPOINT — Rippy # SAVEPOINT — Rippy
## Aktueller Stand: v4.0-rc11 — der Schalter, den es nicht gibt (30.08.2026) ## Aktueller Stand: Rippy v5 — Etappe W-0, das Gerüst steht (30.08.2026)
> **Rippy v5 hat sein Fundament.** Auf dem Branch `worktree-windows-electron`
> steht jetzt neben dem Konzept das erste lauffähige Programm: Electron 44,
> durchgehend TypeScript, drei Prozesse, eine Datenbank, die Prozess-Leine.
> Kein Python, kein Docker-Code, kein HTTP-Server — genau wie
> `KONZEPT-WINDOWS.md` es festlegt. 18/18 Tests grün, Smoke-Beweis grün.
### Was gebaut wurde (`rippy-windows/`)
* **Drei Prozesse, wie im Konzept § 4.1:** Das Haupt (`src/haupt/`) verwaltet
Fenster und Kern; der Kern (`src/kern/`, ein Electron-utilityProcess) macht
die Arbeit; das Fenster (`src/fenster/`, React) zeigt nur an. Fenster und
Kern reden über einen **direkten MessagePort** — kein localhost, kein Port,
kein Polling.
* **Die Datenbank läuft** — `node:sqlite`, wie in `beweise/` gemessen, und
sie hat genau **einen** Zugriffsort (`kern/speicher/db.ts`, § 6.7). Der
Kern schreibt beim Start eine Einstellung und liest sie zurück; „geöffnet"
allein gilt nicht als Beweis.
* **Die Prozess-Leine ist scharf:** Das Haupt legt die Windows-Arbeitsgruppe
aus `beweise/leine.js` an und hängt sich selbst hinein — alles, was Rippy
je startet, stirbt mit ihm. Eine bewusste, im Code begründete Abweichung
von der Ordnerliste § 4.2: Die Leine liegt in `haupt/leine.ts`, nicht im
Kern — das Job-Handle muss bei dem Prozess liegen, dessen Tod alles
mitreißen soll (§ 4.1: „ALLES stirbt mit ihm").
* **Wächter-Tests nach § 4.3** — mechanisch, wie versprochen: koffi nur an
den zwei benannten Orten (R1) · kein leerer catch, kein catch, das leere
Listen erfindet (R2/R4) · kein HTTP-Server (§ 4.1) · `node:sqlite` nur in
`db.ts` (§ 6.7). Dazu Tests für Datenbank und Nachrichten-Schema.
* **Sicherheitsrahmen:** contextIsolation, Sandbox, kein Node im Fenster,
strikte CSP im gebauten HTML, Einzelinstanz-Sperre, Kern-Neustart-Wache
(stirbt der Kern, startet ihn das Haupt neu — höchstens dreimal je Minute,
danach steht der Fehler sichtbar im Fenster).
### Der Beweis
`npm run smoke` startet das ECHTE Programm und prüft alle fünf Punkte
maschinell — Ausgabe vom 30.08.2026 auf dem Commander-PC:
```
SMOKE: OK — fenster=geladen kern=pid:13676,node:24.18.1 datenbank=ok leine=gesetzt pong=ok version=5.0.0-w0
```
Dazu nachgemessen, nicht geglaubt: `taskkill /F` auf den Haupt-Prozess
(ohne `/T` — der Absturz-Fall, der in rc10 verwaiste makemkvcon
hinterließ) → **der Kern ist danach tot.** Der Wirkungs-Test mit einem
echten Werkzeug-Kind folgt in W-2, wenn es erstmals eines gibt.
Das W-0-Fertigkriterium aus § 12 — „Ein Fenster geht auf, der Kern läuft,
ein Testlauf ist grün" — ist damit erfüllt.
### Die Ampel prüft v5 mit
`ci.yml` läuft jetzt fest auf **Node 24** (vorher: Zufalls-Node des
Runners; `docker/ui` unter Node 24 vorher lokal nachgemessen). Die Ampel
baut und testet `rippy-windows/` auf Linux mit — nur der Smoke bleibt ein
Windows-Beweis und steht deshalb hier mit Ausgabe.
### Stolperdrähte, dokumentiert in `rippy-windows/BAUEN.md`
npm 11 blockt Electrons Install-Skript — nach `npm install` fehlt die
`electron.exe`, `node node_modules/electron/install.js` holt sie nach
(§ 3.5, beim Bau erneut bestätigt) · `@vitejs/plugin-react` 6 verlangt
Vite 8, deshalb die 5er-Linie · TypeScript fest auf 5.9.3 gepinnt (die
neue Go-Fassung 7.x ist eine bewusste Entscheidung für später).
### Was W-0 absichtlich NICHT kann
Kein Tray, kein Autostart, kein Update, keine Laufwerks-Erkennung — das
sind W-1 bis W-6. Bis das Tray kommt (W-5), gilt: Fenster zu = Rippy zu.
### Nächste Schritte
1. **W-1 — Laufwerk:** `kern/laufwerk/win32.ts` aus dem § 3.2-Beweis,
Wache im 3-Sekunden-Takt, Disc-Typ, Auswerfen mit Nachsehen.
2. **Parallel, eigener Branch von `main`:** das Aufräumen nach § 11
(A → C, Remote-Worker bleibt) — noch nicht begonnen.
3. **Termin im Blick (§ 9.1):** MakeMKVs Beta-Key läuft **Ende September
2026** ab.
---
## v4.0-rc11 — der Schalter, den es nicht gibt (30.08.2026)
> **Ein falscher Kommandozeilen-Schalter kostete einen fertigen 16,5-GB-Rip — > **Ein falscher Kommandozeilen-Schalter kostete einen fertigen 16,5-GB-Rip —
> und HandBrake meldete es als Erfolg.** Dazu vierzehn weitere Funde aus > und HandBrake meldete es als Erfolg.** Dazu vierzehn weitere Funde aus