Testclient: losmaken maakt nu werkelijk los

Gemeld door de gebruiker: een eigenaar uit het register halen liet de relay hem
zien tot het proces stopte. `vergeet` koppelt netjes af, maar de socket zit niet
in de Evolu-instantie: hij zit in de gedeelde worker, en die blijft staan zolang
er nog een eigenaar open is. Een transport dat je in de config van `createEvolu`
meegeeft, kun je daarna nergens opzeggen.

Nu start de instantie met `transports: []` en gaat de transport erin met
`evolu.useOwner`, ook al is het de eigen appOwner. Die geeft een opzegging terug
en Evolu telt de verwijzingen, dus de laatste opzegging sluit de socket.

Bewezen met een wegwerpproef tegen een relay op localhost die iedereen toelaat:
twee eigenaars open, dan de ene sluiten. Gemeten in de verbindingstabel van het
besturingssysteem en niet met de `dicht`-melding van de cliënt, want
`closeSocket` in @evolu/common zet `socket.onclose` op null voordat het sluit.
Oude vorm: 2 verbindingen na het sluiten. Nieuwe vorm: 1, en de andere eigenaar
kon daarna nog schrijven.

Suite groen: 42, 90, 36, 22, 54 en 68 goed, 0 fout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-09-10 09:55:05 +02:00
co-authored by Claude Opus 5
parent e4b0aa5df9
commit 090843a523
4 changed files with 51 additions and 2 deletions
@@ -1,5 +1,24 @@
# Voortgang - Testclient
## 10-09-2026 - losmaken maakte niets los
Gemeld door de gebruiker: hij haalde een eigenaar uit het register, de rij verdween uit het bedieningsvlak,
en de relay bleef hem zien tot het proces stopte. Dat was geen vergissing in `vergeet`: die koppelt netjes
af. De socket zit niet in de Evolu-instantie maar in de gedeelde worker, en die blijft staan zolang er nog
één eigenaar open is. Een transport dat je in de config van `createEvolu` meegeeft, kun je daarna nergens
meer opzeggen.
De uitweg staat in de API zelf: `createEvolu` starten met `transports: []` en de transport erna met
`evolu.useOwner` erin zetten, ook al is het de eigen appOwner. Die geeft een opzegging terug en Evolu telt
de verwijzingen, dus de laatste opzegging sluit de socket werkelijk.
**Bewezen met een wegwerpproef tegen een relay op localhost die iedereen toelaat, want tegen de echte relay
is er niets te meten:** een geweigerde eigenaar levert nauwelijks verkeer op. Twee eigenaars open, dan de
ene sluiten. De maat is de verbindingstabel van het besturingssysteem en niet de `dicht`-melding van de
cliënt: `closeSocket` in `@evolu/common` zet `socket.onclose` op null vóórdat het sluit, dus een sluiting
die je zelf veroorzaakt meldt zichzelf nooit. Met de oude vorm bleven het 2 verbindingen, met de nieuwe
werd het 1, en de andere eigenaar kon daarna nog schrijven.
## 09-09-2026 - plan geschreven, gepromoveerd, en de samenstelling werkt
Het masterplan is geschreven en dezelfde dag gepromoveerd naar `Actief/003-Testclient/`, op verzoek van de
@@ -12,6 +12,15 @@
## Volgende stap
- [ ] **Fase 4 afmaken, nu 0.7.0 op het apparaat draait.** De wachtlijst is daar de enige weg naar binnen,
dus de drie proeven die een toegelaten eigenaar nodig hebben kunnen. Ze vragen om en om een handeling
van de gebruiker op de statuspagina en een ronde met de cliënt
- [x] **Losmaken maakte niets los (10-09-2026).** Gemeld door de gebruiker: een eigenaar uit het register
halen liet de relay hem zien tot het proces stopte. De socket zit in de gedeelde worker, niet in de
instantie, en een transport uit de config van `createEvolu` is nergens meer op te zeggen. Nu start de
instantie met `transports: []` en gaat de transport erin met `evolu.useOwner`, die een opzegging
teruggeeft. Bewezen tegen een relay op localhost: met de oude vorm bleven het 2 verbindingen na het
sluiten van de ene eigenaar, met de nieuwe 1
- [ ] **De logregels van de relay-container lezen, want daar zit het antwoord op [OPEN.md](OPEN.md) punt
9.** Twee eigenaars die toegelaten waren zijn uit de allowlist verdwenen, en de cliënt kan niet zien
waarom. Gezocht wordt naar `learned a new owner`, `owners.json was unreadable`, `refused a write of