Pinnen komt na een eigen image, niet ervoor

Alleen documentatie. Op aanwijzing van de gebruiker bij het afsluiten: de suite
meldt bij elke ronde dat python:3-alpine en nginx:alpine niet gepind zijn, en de
verleiding is dat even te doen. Dat is de verkeerde volgorde. Pinnen is een eis van
Publicatie, maar daarvoor gaat de app-inhoud eerst een eigen image in, en dan
bestaan die twee niet meer als de plek waar onze code draait.

De regel staat nu in KNOWLEDGE.md, want vier plannen raken hem en geen van de vier
bezit hem: de eis komt uit Publicatie, de oorzaak zit in Eigenimage, en de taak
stond in Umbrelapp en Appstore. Met twee grenzen erbij, anders slaat het de andere
kant op door: de eigen image pin je wel meteen bij elke verhoging, en de melding in
de suite blijft een afdruk en geen toets, zodat de suite niet rood staat tot
Eigenimage klaar is.

Onderweg bleek Eigenimage PLAN.md 8 achterhaald en misleidend. Daar stond dat het
bouwrecept van Evolu Relay misschien zou vervallen zodra de kale relay de weg werd,
en dat je er daarom niets aan moest verbeteren. Wij bouwen juist een eigen image,
want de twee terugroepfuncties zitten niet in de gepubliceerde. En de paragraaf
onderschatte wat er nog te doen is: ook bij die app staan de agent en de pagina nog
op vreemde images, alleen de relay zelf is klaar. Herschreven, en de kolom App van
dat plan in CONTINUE_HERE staat daarom op "beide" in plaats van op Gate.

Verder de taak in Umbrelapp gemarkeerd als wachtend op Eigenimage in plaats van
open, een verwijzing bovenaan Images-pinnen.md, en de regel voor Umbrelapp in
CONTINUE_HERE ingekort en bijgewerkt naar 0.5.1.

Geen tests gedraaid: er is niets buiten Docs/ geraakt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-30 13:42:14 +02:00
co-authored by Claude Opus 5
parent 329b4ab947
commit 627c8306b1
6 changed files with 89 additions and 14 deletions
+3 -3
View File
@@ -23,13 +23,13 @@
| Plan | App | Volgende stap | Status | | Plan | App | Volgende stap | Status |
|-|-|-|-| |-|-|-|-|
| [Eigenimage](Plannen/Actief/004-Eigenimage/TAKEN.md) | Gate | **Gepromoveerd op 28-08-2026, want waar het op wachtte is klaar:** de gebruiker wilde eerst Evolu Relay afmaken en dat doel is gehaald. Het register is beslist (Gitea, bij inlevering opnieuw kijken), dus fase 1 kan zo starten: het bouwrecept in `tools/electrum-gate/`, multi-arch, anoniem te halen. Er ligt nu ook een voorbeeld naast: `tools/evolu-relay/` doet precies dit, inclusief de valkuil dat een lokaal gebouwde tag voor umbreld onbereikbaar is. Let op §1: het lost níet het updateprobleem op, want dat bestaat niet meer | ⬜ | | [Eigenimage](Plannen/Actief/004-Eigenimage/TAKEN.md) | **beide** | **Gepromoveerd op 28-08-2026, want waar het op wachtte is klaar:** de gebruiker wilde eerst Evolu Relay afmaken en dat doel is gehaald. Het register is beslist (Gitea, bij inlevering opnieuw kijken), dus fase 1 kan zo starten: het bouwrecept in `tools/electrum-gate/`, multi-arch, anoniem te halen. Er ligt nu ook een voorbeeld naast: `tools/evolu-relay/` doet precies dit, inclusief de valkuil dat een lokaal gebouwde tag voor umbreld onbereikbaar is. **Sinds 30-08-2026 wegen er twee dingen zwaarder voor dit plan.** De kolom App staat op "beide": §8 is herschreven, want ook Evolu Relay heeft zijn agent en pagina nog op vreemde images staan; alleen de relay zelf is klaar. En dit plan blijkt de poort te zijn voor het pinnen dat **Publicatie-Gate** en **Publicatie-Relay** eisen: die twee images verdwijnen hier, dus eerder pinnen is weggegooid werk. Let op §1: het lost níet het updateprobleem op, want dat bestaat niet meer | ⬜ |
## B - Los oppakbaar (geen blokkade, geen vaste volgorde) ## B - Los oppakbaar (geen blokkade, geen vaste volgorde)
| Plan | App | Volgende stap | Status | | Plan | App | Volgende stap | Status |
|-|-|-|-| |-|-|-|-|
| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **De pagina is op 30-08-2026 verbouwd op de lijst van de gebruiker; 0.5.0 ligt klaar maar is nog niet uitgerold.** Er zit een tijdvenster van twee minuten voor nieuwe eigenaars in (teller in het relay-proces, niet in de browser), labels op een eigenaar-id, de twee lijsten met buitengesloten eigenaars samengevoegd, en de maatvoering gelijk aan Electrum Gate. **De image is dezelfde dag op de Umbrel gebouwd, geduwd en gepind** (`sha256:1e4dafdc…`), dus wat er nog staat is de app store verversen en updaten, en dan in een browser nakijken wat alleen het apparaat kan zeggen: loopt de teller écht af, overleeft een label een herstart, en klopt het adres achter de app-proxy. Verder open en klein: herstart overleven, `python:3-alpine` en `nginx:alpine` pinnen, data per eigenaar wissen | 🔶 | | [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **0.5.1 staat klaar en de pagina is af op de lijst van de gebruiker (30-08-2026):** tijdvenster van twee minuten met de teller in het relay-proces, labels op een eigenaar-id, geblokkeerd en geweigerd in één kader, maatvoering gelijk aan Electrum Gate. De image is dezelfde dag op de Umbrel gebouwd, geduwd en gepind. **Volgende stap is van de gebruiker en is een blik, geen sessie:** verversen, updaten, en dan de drie dingen nakijken die alleen het apparaat kan zeggen (teller met de pagina dicht, label na een herstart, het adres achter de app-proxy). Wat daarna nog open is: data per eigenaar wissen, en een `package-lock.json`. **Het pinnen van `python:3-alpine` en `nginx:alpine` is bewust géén werk meer hier** en wacht op Eigenimage; zie [KNOWLEDGE.md](KNOWLEDGE.md) | 🔶 |
| [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | **Volledig ingehaald op 28-08-2026 en klaar voor het archief.** Beide vragen die het nog bezat zijn beantwoord door **Umbrelapp**: Trezor Suite accepteert een eigen relay, en een eigenaar registreren is niet meer nodig sinds de quota-manager eruit is. Wat er in fase 2 en 3 stond gaat over een pakket dat niet meer bestaat. **Eén beslissing van de gebruiker: opheffen of laten staan** | 🔶 | | [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | **Volledig ingehaald op 28-08-2026 en klaar voor het archief.** Beide vragen die het nog bezat zijn beantwoord door **Umbrelapp**: Trezor Suite accepteert een eigen relay, en een eigenaar registreren is niet meer nodig sinds de quota-manager eruit is. Wat er in fase 2 en 3 stond gaat over een pakket dat niet meer bestaat. **Eén beslissing van de gebruiker: opheffen of laten staan** | 🔶 |
| [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | **De pagina is af en goedgekeurd, op een breed scherm én op een telefoon (27-08-2026).** Op 28-08-2026 kapotgegaan door de tweede app en gerepareerd in 0.0.23. In 0.0.24 (30-08-2026) is de statuswidget van "Answering" naar "Running" gegaan en is er een menu-item "About this app" bij gekomen; dat kwam uit het werk aan Evolu Relay, waar de gebruiker de twee pagina's naast elkaar zag. **Nog nakijken op het apparaat, en dat is een blik en geen sessie.** Wat er verder staat wacht op tijd (het activiteitenlog een etmaal laten lopen) of is een beslissing van de gebruiker (waar Nginx Proxy Manager zijn certificaten neerzet, en of Zoraxy een harde afhankelijkheid wordt) | 🔶 | | [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | **De pagina is af en goedgekeurd, op een breed scherm én op een telefoon (27-08-2026).** Op 28-08-2026 kapotgegaan door de tweede app en gerepareerd in 0.0.23. In 0.0.24 (30-08-2026) is de statuswidget van "Answering" naar "Running" gegaan en is er een menu-item "About this app" bij gekomen; dat kwam uit het werk aan Evolu Relay, waar de gebruiker de twee pagina's naast elkaar zag. **Nog nakijken op het apparaat, en dat is een blik en geen sessie.** Wat er verder staat wacht op tijd (het activiteitenlog een etmaal laten lopen) of is een beslissing van de gebruiker (waar Nginx Proxy Manager zijn certificaten neerzet, en of Zoraxy een harde afhankelijkheid wordt) | 🔶 |
| [Appstore](Plannen/Actief/010-Appstore/TAKEN.md) | Gate | De repo `ElectrumTLS` weghalen op de Git-server; daar staat het domein nog in de historie. **De omschakeling naar Fulcrum is op 27-08-2026 gelukt zonder aanpassing**, dus daarvan is alleen de herstartcontrole nog over, en die komt vanzelf bij de eerstvolgende herstart | 🔶 | | [Appstore](Plannen/Actief/010-Appstore/TAKEN.md) | Gate | De repo `ElectrumTLS` weghalen op de Git-server; daar staat het domein nog in de historie. **De omschakeling naar Fulcrum is op 27-08-2026 gelukt zonder aanpassing**, dus daarvan is alleen de herstartcontrole nog over, en die komt vanzelf bij de eerstvolgende herstart | 🔶 |
@@ -73,7 +73,7 @@ Cross-plan kennis staat in [KNOWLEDGE.md](KNOWLEDGE.md). Naslag staat niet in de
| Document | Voor wie | Waarvoor | | Document | Voor wie | Waarvoor |
|-|-|-| |-|-|-|
| [Umbrel-appstore-spec.md](Referenties/Umbrel-appstore-spec.md) | beide | Wat umbrelOS van een community app store verwacht, en hoe wisselen tussen Electrs, Fulcrum en ElectrumX werkt. Met bron per feit, zodat dit niet opnieuw uitgezocht hoeft te worden | | [Umbrel-appstore-spec.md](Referenties/Umbrel-appstore-spec.md) | beide | Wat umbrelOS van een community app store verwacht, en hoe wisselen tussen Electrs, Fulcrum en ElectrumX werkt. Met bron per feit, zodat dit niet opnieuw uitgezocht hoeft te worden |
| [Images-pinnen.md](Referenties/Images-pinnen.md) | beide | De commando's om een image op een index-digest te pinnen, en welke digest uit de uitvoer je moet hebben. Nog niet gedaan, voor geen van beide apps | | [Images-pinnen.md](Referenties/Images-pinnen.md) | beide | De commando's om een image op een index-digest te pinnen, en welke digest uit de uitvoer je moet hebben. **Lees eerst de volgorde-regel in [KNOWLEDGE.md](KNOWLEDGE.md):** de eigen images worden gepind, de vreemde wachten op Eigenimage |
| [Architectuur-huidig.md](Referenties/Architectuur-huidig.md) | Gate | Hoe de app vandaag op de Umbrel draait, inclusief wat er vast in de code staat | | [Architectuur-huidig.md](Referenties/Architectuur-huidig.md) | Gate | Hoe de app vandaag op de Umbrel draait, inclusief wat er vast in de code staat |
| [Clients.md](Referenties/Clients.md) | Gate | Welke wallets naar een eigen Electrum-server kunnen wijzen, in welke vorm ze het adres willen, en wanneer TLS iets toevoegt boven Tor | | [Clients.md](Referenties/Clients.md) | Gate | Welke wallets naar een eigen Electrum-server kunnen wijzen, in welke vorm ze het adres willen, en wanneer TLS iets toevoegt boven Tor |
| [Vergelijkbare-apps.md](Referenties/Vergelijkbare-apps.md) | Gate | Of dit type app al bestaat voor Umbrel, en waarom niet. De kern voor de PR-tekst bij inlevering: de reverse proxies in de store kunnen een certificaat niet op een TCP-poort zetten | | [Vergelijkbare-apps.md](Referenties/Vergelijkbare-apps.md) | Gate | Of dit type app al bestaat voor Umbrel, en waarom niet. De kern voor de PR-tekst bij inlevering: de reverse proxies in de store kunnen een certificaat niet op een TCP-poort zetten |
+36
View File
@@ -4,6 +4,42 @@ Cross-plan kennis: dingen die blijven gelden en die geen enkel plan bezit. Wat b
daar; wat naslag is staat in [Referenties/](Referenties/). Geldt een stuk maar voor één van de twee apps, daar; wat naslag is staat in [Referenties/](Referenties/). Geldt een stuk maar voor één van de twee apps,
dan staat dat in de kop. dan staat dat in de kop.
## Pinnen komt ná een eigen image, niet ervoor (beide apps)
Vastgelegd 30-08-2026 op aanwijzing van de gebruiker, nadat de suite voor de zoveelste keer meldde dat
`python:3-alpine` en `nginx:alpine` niet gepind zijn. De verleiding is dan om dat "even te doen". **Doe het
niet in die volgorde.**
De keten die eronder ligt, van achter naar voren:
1. **de officiële appstore eist gepinde images.** Dat is de reden dat het op de lijst staat, en het staat in
de masterplannen **Publicatie-Gate** en **Publicatie-Relay**;
2. **maar vóór inleveren gaat de app-inhoud eerst een eigen image in**, want dat is wat het plan
**Eigenimage** doet. De agent en de pagina zitten nu als `*.template` in de app-map en worden door
`python:3-alpine` en `nginx:alpine` uitgevoerd;
3. **en dan bestaan die twee images er niet meer**, of in elk geval niet meer als de plek waar onze code
uitgevoerd wordt. Wat je gepind had, is dan weg.
**De regel: pin alleen een image die er na Eigenimage nog staat.** In de praktijk is dat de image die je
zelf uitgeeft, en die is er precies één per app.
Twee dingen die dit níet zegt, want anders slaat het de andere kant op door:
- **de eigen image pinnen doe je wél meteen**, bij elke verhoging. Dat is geen toekomstig werk maar de
gewone gang van zaken; Evolu Relay doet dat sinds 25-08-2026. Zie de valstrik in de compose daar: een
óude digest onder een níeuwe tag levert stilzwijgend de oude image, dus laat de digest er even ván af
zolang de nieuwe niet geduwd is;
- **de melding in de suite blijft staan en dat is goed.** `test_appstore_vorm.py` drukt de pinstatus af en
toetst hem met opzet níet, juist zodat dit zichtbaar blijft zonder de suite rood te maken. Zet die toets
er dus niet "even" bij: dan staat de suite rood tot Eigenimage klaar is, en een suite die altijd rood
staat wordt niet gelezen.
Waarom dit hier staat en niet in één plan: de eis komt uit **Publicatie**, de oorzaak zit in **Eigenimage**,
en de taak staat in **Umbrelapp** en **Appstore**. Vier plannen, en geen van de vier bezit het. De
onderbouwing van punt 3 staat wel al uitgeschreven in **Eigenimage**, `PLAN.md` §3: met een eigen image pin
je één ding dat je zelf uitgeeft, in plaats van twee images van iemand anders die bij elke
beveiligingsupdate opnieuw gepind moeten worden.
## De app is voor eigen gebruik, niet voor distributie (Electrum Gate) ## De app is voor eigen gebruik, niet voor distributie (Electrum Gate)
Vastgelegd 18-08-2026 op aangeven van de gebruiker. De repo is publiek, maar dat is een **technische Vastgelegd 18-08-2026 op aangeven van de gebruiker. De repo is publiek, maar dat is een **technische
+23 -7
View File
@@ -138,14 +138,30 @@ hierna wordt elders aangehaald.
## 8. Wat dit voor Evolu Relay betekent ## 8. Wat dit voor Evolu Relay betekent
Voor die app is dit plan grotendeels al uitgevoerd: `tools/evolu-relay/build.sh` bestaat, het register is **Herschreven op 30-08-2026, want de vorige versie van deze paragraaf gokte verkeerd.** Daar stond dat het
gekozen en de anonieme pull is gecontroleerd. Wat hier eventueel bijkomt is de multi-arch-stap, want ook bouwrecept van die app misschien zou vervallen omdat de kale `docker.io/evoluhq/relay:latest` de weg zou
dat recept bouwt vandaag één architectuur. worden, en dat je daarom niets aan dat recept moest verbeteren. Die verwachting is ingehaald: de app draait
sinds 28-08-2026 op een **eigen** image, omdat wij twee terugroepfuncties aan `createRelay` meegeven en die
in de gepubliceerde image niet zitten. Het recept in `tools/evolu-relay/` is dus geen tijdelijke toestand
maar de vaste weg.
**Trek dat werk niet in dit plan.** Het plan **Umbrelapp** staat op tier A met de conclusie dat de Wat daarmee de stand is, en het is minder ver dan hier stond:
gepakketteerde relay in de kern niet kan werken, en dat de volgende stap de kale
`docker.io/evoluhq/relay:latest` is. Wordt dat de weg, dan is er een gepubliceerde image en vervalt het - **de relay zelf: klaar.** Eigen image, eigen recept, register gekozen, anonieme pull gecontroleerd, en
hele bouwrecept. Iets verbeteren aan een recept dat misschien weggaat, is de verkeerde volgorde. gepind op tag plus digest bij elke verhoging. Voor dat deel is dit plan uitgevoerd;
- **de agent en de pagina: niet.** Die zitten daar precies zoals bij Electrum Gate: `agent.py.template`,
`index.html.template` en `nginx.conf.template` in de app-map, gemount in `python:3-alpine` en
`nginx:alpine`. Alles in §1 tot §4 geldt dus onverkort ook voor die app;
- **multi-arch: open**, want ook dat recept bouwt vandaag één architectuur. Dat staat bij
**Publicatie-Relay**.
**De volgorde die hieruit volgt en die verder reikt dan dit plan:** zolang de agent en de pagina op vreemde
images draaien, valt er voor die twee niets zinnig te pinnen, want ze verdwijnen hier. Dat is de regel in
[KNOWLEDGE.md](../../../KNOWLEDGE.md), en Evolu Relay is er het tweede geval van.
Wat wél blijft gelden: **trek het werk aan de relay-image niet in dit plan.** Niet meer omdat het recept
misschien weggaat, maar omdat het dat níet doet en het al af is. Wat hier hoort is de agent en de pagina,
voor beide apps.
## 9. Waarom dit nú actief is ## 9. Waarom dit nú actief is
@@ -44,6 +44,17 @@ Bijvangst: die weigering stond in de neutrale stijl en is nu rood. En het manife
image (0.5.1 tegen 0.5.0), wat correct is voor een wijziging in alleen een template. De changelog beweerde image (0.5.1 tegen 0.5.0), wat correct is voor een wijziging in alleen een template. De changelog beweerde
sinds diezelfde ochtend het tegenovergestelde en is rechtgezet. sinds diezelfde ochtend het tegenovergestelde en is rechtgezet.
**Bij het afsluiten haalde de gebruiker een taak van de lijst in plaats van erbij.** De suite meldt bij elke
ronde dat `python:3-alpine` en `nginx:alpine` niet gepind zijn, en de verleiding is dat "even te doen". Zijn
punt: pinnen is een eis van **Publicatie**, maar daarvóór gaat de app-inhoud eerst een eigen image in, en dan
bestaan die twee niet meer als de plek waar onze code draait. Dus eerst **Eigenimage**.
Dat klopt, en het bleek breder dan de taak: §8 van dat plan gokte er nog op dat het bouwrecept van deze app
zou vervallen zodra de kale relay de weg werd, en dat is ingehaald. Wij bouwen juist een eigen image, want de
twee terugroepfuncties zitten niet in de gepubliceerde. Bovendien staat ook bij Evolu Relay de agent én de
pagina nog op vreemde images; alleen de relay zelf is klaar. Beide rechtgezet, en de volgorde-regel staat nu
als cross-plan kennis in `KNOWLEDGE.md`, want vier plannen raken hem en geen van de vier bezit hem.
**Wat er nu nog staat is van de gebruiker en is een blik, geen sessie:** verversen, updaten, en dan de drie **Wat er nu nog staat is van de gebruiker en is een blik, geen sessie:** verversen, updaten, en dan de drie
dingen nakijken die alleen het apparaat kan zeggen. dingen nakijken die alleen het apparaat kan zeggen.
+11 -4
View File
@@ -245,10 +245,17 @@ tonen, maar drie klassen fouten hoeven niet op het apparaat gevonden te worden:
- [x] **De Postgres-pin is vervallen (28-08-2026):** die database zit niet meer in de app - [x] **De Postgres-pin is vervallen (28-08-2026):** die database zit niet meer in de app
- [x] **De statuspagina verbeteren, op een lijst van de gebruiker.** De lijst kwam op 30-08-2026 en is in - [x] **De statuspagina verbeteren, op een lijst van de gebruiker.** De lijst kwam op 30-08-2026 en is in
één ronde uitgevoerd; zie fase 6 hieronder één ronde uitgevoerd; zie fase 6 hieronder
- [ ] **`python:3-alpine` en `nginx:alpine` pinnen op hun multi-arch index-digest.** Dat zijn de twee laatste - [ ] **`python:3-alpine` en `nginx:alpine` pinnen op hun multi-arch index-digest. WACHT OP het plan
ongepinde images van deze app, en ze staan als TODO in de compose. Met Eigenimage; doe dit niet eerder.** Op aanwijzing van de gebruiker (30-08-2026): die twee images zijn
`docker buildx imagetools inspect` op de Umbrel. Electrum Gate heeft precies dezelfde twee openstaan, de plek waar de agent en de pagina van deze app uitgevoerd worden, en dat is precies wat **Eigenimage**
dus dit is één handeling voor beide apps naar een eigen image verhuist. Pin je ze nu, dan pin je iets dat verdwijnt.
De eis komt uit **Publicatie-Relay** en die is nog ver weg, dus er is geen haast. De regel en de hele
keten erachter staan in [KNOWLEDGE.md](../../../KNOWLEDGE.md); de commando's in
[Images-pinnen.md](../../../Referenties/Images-pinnen.md).
**De eigen relay-image is een ander geval en die is wél gepind**, bij elke verhoging. Verwar die twee
niet: de suite drukt beide af in dezelfde lijst
## Fase 3 - Het bouwrecept ## Fase 3 - Het bouwrecept
+5
View File
@@ -3,6 +3,11 @@
Naslag, geen plan. Wanneer dit gedaan wordt en waarom staat in het masterplan **Publicatie**; hier staan Naslag, geen plan. Wanneer dit gedaan wordt en waarom staat in het masterplan **Publicatie**; hier staan
alleen de commando's en wat je uit de uitvoer moet halen. alleen de commando's en wat je uit de uitvoer moet halen.
> **Lees eerst de volgorde-regel in [KNOWLEDGE.md](../KNOWLEDGE.md), voordat je `python:3-alpine` en
> `nginx:alpine` gaat pinnen.** Vastgelegd 30-08-2026 op aanwijzing van de gebruiker: die twee verdwijnen
> waarschijnlijk als het plan **Eigenimage** klaar is, en dan is dit werk weggegooid. Voor een image die je
> zelf uitgeeft blijft alles hieronder wél gelden, en dat is dan het enige dat er te pinnen valt.
Alles hieronder draait **op de Umbrel**, want daar staat Docker. Lukt een commando niet, zet er dan `sudo` Alles hieronder draait **op de Umbrel**, want daar staat Docker. Lukt een commando niet, zet er dan `sudo`
voor. voor.