En dan, met dat pad, de meting die je later herhaalt:
```
sudo ls -la <hostpad>
```
Schrijf de uitkomst op; leeg of alleen een verse database is een prima nulmeting. `sudo du -sb <hostpad>`
geeft er een getal bij dat makkelijker te vergelijken is.
**De nulmeting van 28-08-2026, meteen na de start:** één bestand, `evolu-relay.db`, 40960 bytes, eigenaar
uid 1001. Twee dingen die dat vastlegt. De relay maakt zijn eigen SQLite-database aan bij de start, dus de
schemavraag die bij het Trezor-pakket openstaat bestaat hier niet. En hij draait niet als root, wat precies
de reden is dat een zelfgemaakte bind-mount hier niet gebruikt wordt.
**Wij openen dat bestand niet.** Ook niet om te kijken of het label erin staat; dat is data van de
gebruiker. `ls` en `du` zeggen genoeg.
**5. Suite ernaartoe wijzen.** Instellingen, **dev-utils**, het veld voor de relay-URL:
`http://<host>:4000`, met de eigen opslaan-knop van dat veld. `http://` volstaat, dat blijkt uit Trezor's
eigen e2e-test. **De quota-manager-URL laat je met rust**: bij een eigen relay-URL negeert Suite hem toch,
en dat is precies de bevinding waar deze richting op rust. Zet daarna de synchronisatie aan en bevestig op
het apparaat.
**6. Eén label maken**, of een account hernoemen. Kijk daarna naar de drie signalen, in deze volgorde:
- **het log in venster 1**: komt er een verbinding binnen, en blijft die staan?
- **`sudo ls -la <hostpad>`** uit stap 4: is er in het volume iets bijgekomen of gegroeid? **Kijk vooral
naar de tijdstempel van `evolu-relay.db` en niet alleen naar de omvang:** SQLite schrijft in pagina's, en
een enkel label past mogelijk in de ruimte die er al is. Verschijnen er `-wal` of `-shm`-bestanden naast,
dan is dat op zichzelf al bewijs van schrijfverkeer;
- **Suite zelf**: zegt hij iets over de sync-status? Dit is het zwakste signaal van de drie, zie de
valkuil hieronder.
**7. Alleen met een tweede cliënt: de rondgang.** Wijs een tweede Suite naar dezelfde relay, met dezelfde
Trezor, en kijk of het label vanzelf verschijnt. Dit is de enige controle die beide richtingen bewijst.
Heb je die niet, dan is stap 6 het eindpunt en meld je dat de leeskant ongemeten bleef.
#### De uitslag lezen
| Waarneming | Wat het betekent |
|-|-|
| Geen verbinding in het log, curl uit stap 3 werkte wel | Suite komt er niet bij. Adresvorm, firewall of het verkeerde IP. **Nog geen uitspraak over het protocol**, dus eerst dit oplossen |
| Verbinding komt op en valt meteen weg, herhaald in een cyclus | Dit is het beeld van een geweigerde handshake, en dus de meest waarschijnlijke vorm van een protocolmismatch. **Uitslag: mislukt**, en het log is de bevinding: schrijf het letterlijk over |
| Verbinding blijft staan, maar het volume verandert niet na een label | Verbonden, maar er landt niets. Ook mislukt, en interessanter dan de vorige: dan zit het niet in de handshake maar in de laag erboven. **Controleer eerst dat je naar het volume kijkt en niet naar `docker diff`** |
| Verbinding blijft staan én het volume groeit | **Geslaagd op de schrijfkant.** Dit is genoeg om de richting uit punt 6 te bevestigen en aan de limiter te beginnen |
| En de tweede cliënt ziet het label | **Volledig geslaagd.** Beide richtingen bewezen |
#### De valkuil, en hij is groot
**Dat je het label in Suite ziet staan bewijst niets.** Evolu is local-first: de schrijfactie landt eerst
in de lokale database en daarna pas bij de relay. Bij een mislukte verbinding ziet de interface er dus
precies hetzelfde uit. Vandaar dat de conclusie in de tabel hierboven aan de **relaykant** hangt en niet
aan wat Suite toont.
#### Opruimen
Ctrl-C in venster 1; door `--rm` verdwijnt de container en met hem de opslag. Dat is voor een proef prima,
maar het betekent ook dat een herhaling opnieuw bij nul begint, en dat je een geslaagde meting niet per
ongeluk op oude data doet.
**Zet daarna de relay-URL in Suite terug**, anders blijft hij naar een relay wijzen die er niet meer is.
**En laat de proefcontainer niet staan.** Hij is onbeschermd bereikbaar op het hele netwerk, en dat is nu
juist het gat dat de limiter uit [OPEN.md](OPEN.md) punt 8 moet dichten.
#### Wat je terugkoppelt
Het log uit venster 1 (letterlijk, ook als het er saai uitziet), de inhoud van het volume van vóór en
na, de digest uit stap 1, en of stap 7 gedaan is. Met die vier is de vervolgsessie beslisbaar zonder de
proef te herhalen.
#### Wat er op 28-08-2026 gemeten is, en wat nog steeds niet
**De hoofdvraag is die dag níet beantwoord.** Er is geen enkele cliënt tot een verbinding gekomen, dus over
de protocolversie is nog niets bekend. Wat er wél uit kwam is de halve dag waard, en staat hieronder zodat
het niet opnieuw uitgezocht hoeft te worden.
**De relay zelf is in orde.** Hij haalt, start en luistert. De WebSocket-handshake slaagt zowel vanaf de
Umbrel zelf als vanaf een Mac elders op het netwerk, met een correcte `Sec-WebSocket-Accept`. De poort is
gepubliceerd op alle interfaces. Aan de serverkant is er dus niets te repareren.
**Hij maakt zijn database zelf aan.** Direct na de start staat er één bestand in het volume,
`evolu-relay.db` van 40960 bytes, eigenaar uid 1001. Daarmee vervalt in deze richting de schemavraag die bij
het Trezor-pakket nog openstaat, en het bevestigt dat de relay niet als root draait.
**Drie meetinstrumenten bleken onbruikbaar, en alle drie op dezelfde manier: ze gaven een vals negatief.**
Dit is de duurste les van de dag, want elk ervan leek een probleem aan te wijzen dat er niet was.
- **`docker diff` kijkt niet in een volume.** Omdat `/app/data` als VOLUME gedeclareerd is, blijft die
uitvoer leeg, ook na een geslaagde synchronisatie. Meet op het hostpad uit `docker inspect`.
- **Een browser of een gewone `curl` krijgt niets terug.** De relay negeert een verzoek zonder
upgrade-headers volledig: geen antwoord, geen foutcode. Dat ziet er identiek uit aan een dode poort of een
firewall. Alleen de handshake uit stap 3 meet iets.
- **`healthy` in `docker ps` zegt niets over werking.** De healthcheck opent een TCP-verbinding en sluit hem
meteen.
**iOS is voor deze proef geen bruikbaar platform gebleken.** Wat er werkt: het veld voor de relay-URL
bestaat in de iOS-app onder dev-utils, het valideert (`ws://` wordt geweigerd met "Enter a valid url", dus
het wil `http(s)://`, precies zoals Trezor's eigen e2e-test), en de ingevulde waarde overleeft een
geforceerde afsluiting. Wat er niet werkt: de app maakt geen enkele verbinding. Met een wachter die elke
halve seconde keek is er nooit een poging op poort 4000 aangekomen, en in de iOS-instellingen verscheen
geen schakelaar voor "Lokaal netwerk", wat erop wijst dat de app het nooit geprobeerd heeft.
Twee lezingen blijven mogelijk en zijn van buitenaf niet te scheiden: de app kan op dit platform geen eigen
relay gebruiken, of het synchroniseren zelf kwam niet op gang omdat de bevestiging op het apparaat
ontbrak. **Dat is een eigen vraag geworden en niet langer deel van deze proef**, want anders sluiten we twee
onbekenden tegelijk uit. De proef verhuist naar de desktop-Suite op de Mac, die aantoonbaar bij de relay