From 1a87a4568559b0de62ed6bca01999201042fb83c Mon Sep 17 00:00:00 2001 From: Harmen Date: Tue, 25 Aug 2026 16:57:39 +0200 Subject: [PATCH] De bovenstroomse repo gelezen, en twee aannames sneuvelden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit De gebruiker wil de Evolu Relay-app meteen pakketteren. Daarvoor moest fase 1 van Proefopstelling eerst af, want een compose schrijven op aannames is precies wat dat plan moet voorkomen. Upstream-evolu-relay.md gaat daarmee van vooronderzoek naar nagetrokken, met een bron-URL per feit. De quota-manager is in de praktijk verplicht, en om een andere reden dan gedacht. Niet omdat de relay hem aanroept: er is geen HTTP-koppeling en geen URL in de configuratie, ze delen alleen de Postgres. Maar isOwnerAllowed() eist een rij in de limietentabel en de quota-manager maakt die rijen. Zonder hem is de relay dus niet open maar dicht voor iedereen. Dat maakt de tweede weg interessant, want een rij is ook met de hand te zetten; de prijs daarvan is schrijven in andermans schema. Er is geen publieke image. Trezor bouwt er wel een maar duwt hem naar een eigen Amazon ECR, en op Docker Hub staat niets. Zelf bouwen en publiceren, of geen app, en dat is een doorlopende verplichting. Bijvangst die een risico wegneemt: datzelfde werkproces bouwt amd64 en arm64, dus de Dockerfile is bovenstrooms bewezen op een Pi. Nieuw risico dat ervoor terugkomt: LICENSE.md is door GitHub geclassificeerd als "other", en zodra je een image publiceert distribueer je hun software. Twee kleinere correcties. De compose van Trezor draait de relay niet, er staan alleen Postgres en Prometheus in; het is een ontwikkelopstelling en wat zij uitrollen staat in .k8s/. En alle processen komen uit één image met per service een ander command, dus het worden geen drie images. Eén tegenspraak blijft staan en is expres niet weggeschreven als feit: .env.sample zegt dat SERVER_ENV=prod authenticatie aanzet, maar in de code die ik las bepaalt die vlag alleen het logniveau en staan de controles onvoorwaardelijk aan. Eén van de twee is achterhaald. Dat is met één keer starten te meten en het staat als taak in fase 2. Tests: niet gedraaid, dit raakt alleen documentatie. Co-Authored-By: Claude Opus 5 --- Docs/CONTINUE_HERE.md | 2 +- .../Actief/007-Proefopstelling/PROGRESS.md | 28 +++ .../Actief/007-Proefopstelling/TAKEN.md | 33 +++- Docs/Referenties/Upstream-evolu-relay.md | 178 +++++++++++++----- 4 files changed, 184 insertions(+), 57 deletions(-) diff --git a/Docs/CONTINUE_HERE.md b/Docs/CONTINUE_HERE.md index 7636b63..e15ccca 100644 --- a/Docs/CONTINUE_HERE.md +++ b/Docs/CONTINUE_HERE.md @@ -24,7 +24,7 @@ | Plan | App | Volgende stap | Status | |-|-|-|-| | [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | 0.0.10 op een telefoon nakijken, en het uploaden op het niet-gelukkige pad proberen met een sleutel die niet bij het certificaat hoort. Daarna open punt 5: laten controleren of de TLS-poort zélf antwoordt | 🔶 | -| [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | Controleren of Trezor Suite een eigen sync-server accepteert, en op welk platform. Dat is de goedkoopste weerlegging van het hele project en het kost een minuut in de interface | ⬜ | +| [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | Controleren of Trezor Suite een eigen sync-server accepteert, en op welk platform. Dat is de goedkoopste weerlegging van het hele project en het kost een minuut in de interface. Fase 1 is verder af: de quota-manager blijkt in de praktijk verplicht en er is geen publieke image, dus die moet zelf gebouwd worden | 🔶 | ## B - Los oppakbaar (geen blokkade, geen vaste volgorde) diff --git a/Docs/Plannen/Actief/007-Proefopstelling/PROGRESS.md b/Docs/Plannen/Actief/007-Proefopstelling/PROGRESS.md index 1200400..4ceb3b0 100644 --- a/Docs/Plannen/Actief/007-Proefopstelling/PROGRESS.md +++ b/Docs/Plannen/Actief/007-Proefopstelling/PROGRESS.md @@ -3,6 +3,34 @@ > Chronologisch sessielog, nieuwste bovenaan. Kort: 3 tot 6 regels per entry. Wat er is gebeurd en > waarom, niet wat er nog moet: dat staat in [TAKEN.md](TAKEN.md). +## 25-08-2026 - de bovenstroomse repo gelezen, en twee aannames sneuvelden + +De gebruiker wil de app meteen pakketteren en een installatie proberen. Daarvoor moest fase 1 eerst +gedaan worden, want een compose schrijven op aannames is precies wat dit plan moet voorkomen. Alles staat +met bron per feit in [Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md). + +**De quota-manager is in de praktijk verplicht.** Niet omdat de relay hem aanroept (er is geen HTTP-koppeling +en geen URL in de configuratie), maar omdat `isOwnerAllowed()` een rij in de limietentabel eist en de +quota-manager die aanmaakt. Zonder hem is de relay dus niet open maar dicht voor iedereen. Dat is de +tegengestelde uitkomst van waar het vooronderzoek op hoopte, en het maakt de tweede weg interessant: de +tabel is ook met de hand te vullen, want ze delen alleen de Postgres. + +**Er is geen publieke image.** Trezor bouwt er wel een, maar duwt hem naar een eigen Amazon ECR; op Docker +Hub staat niets. Zelf bouwen en publiceren, of geen Umbrel-app, en dat is een doorlopende verplichting en +geen eenmalige handeling. Bijvangst die een risico wegneemt: datzelfde werkproces bouwt amd64 én arm64, dus +de Dockerfile is bovenstrooms bewezen op een Raspberry Pi. + +Twee kleinere correcties op het vooronderzoek: de compose van Trezor draait de relay **niet** (alleen +Postgres en Prometheus, het is een ontwikkelopstelling), en alle processen komen uit **één** image met per +service een ander `command`, dus het worden geen drie images. + +Wat er onopgelost bleef en waar niet op gegokt moet worden: `.env.sample` zegt dat `SERVER_ENV=prod` +authenticatie aanzet, maar in de code die ik las bepaalt die vlag alleen het logniveau en staan de controles +onvoorwaardelijk aan. Eén van de twee is achterhaald; met één keer starten te meten. + +**Geraakt:** `Referenties/Upstream-evolu-relay.md` (van vooronderzoek naar nagetrokken), `TAKEN.md`, +`Docs/CONTINUE_HERE.md`. **Tests:** niet van toepassing, alleen documentatie. + ## 25-08-2026 - plan werd actief Dit project bestond uit één document, `trezor-suite-sync-umbrel-app-plan.md`, met het vooronderzoek van diff --git a/Docs/Plannen/Actief/007-Proefopstelling/TAKEN.md b/Docs/Plannen/Actief/007-Proefopstelling/TAKEN.md index 7439367..d41dd3d 100644 --- a/Docs/Plannen/Actief/007-Proefopstelling/TAKEN.md +++ b/Docs/Plannen/Actief/007-Proefopstelling/TAKEN.md @@ -15,19 +15,38 @@ ## Fase 1 - Kan dit überhaupt - [ ] Het veld voor een eigen sync-server in Trezor Suite gevonden, met de vorm die het verwacht -- [ ] `.env.sample`, `docker-compose.yaml` en de relay-broncode van `trezor/trezor-suite-sync` gelezen op - de vraag of de quota-manager verplicht is. **Lezen, nog niet draaien:** als het antwoord in de - broncode staat, scheelt dat een halve middag proberen -- [ ] Vastgesteld of Trezor een image publiceert of alleen een Dockerfile levert. Zie - [Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md) §4 punt 1; dit bepaalt of - het masterplan **Publicatie** haalbaar is +- [x] **`.env.sample`, `docker-compose.yaml`, `Dockerfile`, `README.md` en de relay-broncode gelezen + (25-08-2026).** Dat leverde meer op dan de vraag stelde en het staat met bron per feit in + [Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md). De drie uitkomsten die het + pakket bepalen: + **(a) de quota-manager is in de praktijk verplicht** - de relay weigert elke eigenaar die geen rij in + de limietentabel heeft, en de quota-manager maakt die rijen. Er is geen HTTP-koppeling tussen de twee, + ze delen alleen de Postgres, dus de tabel gevuld krijgen is wat telt en niet de dienst zelf; + **(b) er is geen publieke image** - Trezor duwt naar een eigen Amazon ECR. Zelf bouwen en publiceren, + of geen app; + **(c) alle processen komen uit één image** met per service een ander `command`, dus geen drie images +- [x] **Vastgesteld dat Trezor geen image publiceert (25-08-2026).** Zie hierboven. Bijvangst die een + risico wegneemt: hun eigen werkproces bouwt `linux/amd64` én `linux/arm64`, dus de Dockerfile is + bovenstrooms bewezen op arm64 +- [x] **De compose van Trezor draait de relay niet** (25-08-2026), tegen wat het vooronderzoek aannam. Er + staan alleen Postgres en Prometheus in; het is een ontwikkelopstelling. Wat Trezor zelf uitrolt staat + in `.k8s/` +- [ ] **Uitzoeken hoe je een eigenaar bij de quota-manager registreert**, en of daar iets extern voor nodig + is. Dit is nu de vraag die bepaalt of dit een bruikbare app wordt. Begin bij `bruno-collection/` in + de repo; de README verwijst voor de API-spec naar Notion +- [ ] **Uitzoeken wat `SERVER_ENV=prod` doet dat `dev` niet doet.** `.env.sample` zegt dat prod + authenticatie aanzet, maar in de code die ik las bepaalt die vlag alleen het logniveau en staan de + controles onvoorwaardelijk aan. Niet aannemen dat dev de deur opent, en ook niet dat hij dicht is ## Fase 2 - De stack lokaal draaien - [ ] `trezor/trezor-suite-sync` gekloond -- [ ] `docker compose up` met **alleen** Postgres en `evolu-relay`, de quota-manager weggelaten +- [ ] Postgres uit de compose van Trezor gestart, en de relay ernaast met `yarn start-evolu-relay` of uit + een zelfgebouwde image. **Niet "docker compose up en klaar":** die compose draait de relay niet - [ ] De relay antwoordt op poort 4000 en blijft draaien. Blijft hij niet draaien, dan is de foutmelding de bevinding: schrijf hem letterlijk op in [PROGRESS.md](PROGRESS.md) +- [ ] Gemeten wat er gebeurt bij een eigenaar zónder limietenrij, in `dev` én in `prod`. Dat beslecht de + tegenspraak uit fase 1 in één keer - [ ] **Blocker-check:** is de relay hard afhankelijk van de quota-manager? Zo ja, die erbij en uitzoeken wat hij zelf nodig heeft. Vraagt hij een externe dienst, dan is dat geen taak meer maar open punt 4 in [OPEN.md](OPEN.md) diff --git a/Docs/Referenties/Upstream-evolu-relay.md b/Docs/Referenties/Upstream-evolu-relay.md index 2adf620..31245d8 100644 --- a/Docs/Referenties/Upstream-evolu-relay.md +++ b/Docs/Referenties/Upstream-evolu-relay.md @@ -1,72 +1,152 @@ # Upstream: `trezor/trezor-suite-sync` en Evolu Relay -Naslag, geen plan. Wat er over de bovenstroomse repo bekend is, plus per feit hoe hard het is. Dat -onderscheid staat er expres in: **alles hieronder komt uit het vooronderzoek van 25-08-2026 en is in deze -repo nog niet nagetrokken tegen de bron.** Het plan **Proefopstelling** doet precies dat, en de eerste -sessie die daar iets van bevestigt of weerlegt, werkt dit document bij met de datum erbij. +Naslag, geen plan. **Nagetrokken tegen de bron op 25-08-2026**, met de URL's onderaan. Dat is een andere +status dan de eerste versie van dit document had: die leunde op vooronderzoek van dezelfde dag en meldde +per regel dat het niet geverifieerd was. Wat hieronder staat komt uit de bestanden zelf. + +Op drie punten week de werkelijkheid af van het vooronderzoek, en alle drie raken het pakket. Ze staan in +§2, §3 en §4. ## 1. Wat het is Trezor Suite kan labels en accountnamen synchroniseren tussen apparaten. De server die dat doet heet in de interface "custom sync server"; het onderdeel zelf heet **Evolu Relay** en staat in de repo -`trezor/trezor-suite-sync`. +`trezor/trezor-suite-sync` (standaardbranch `main`, licentie in `LICENSE.md`, door GitHub geclassificeerd +als "other"). Evolu is een local-first synchronisatielaag: de client houdt zijn eigen kopie bij en de relay is een -doorgeefluik voor versleutelde wijzigingen. Dat is ook waarom zelf hosten hier kán zonder dat je iets aan -de beveiliging opgeeft: volgens Trezor is de data client-side end-to-end versleuteld, dus de relay ziet -niets leesbaars. **Zelf hosten haalt Trezor uit de vergelijking, het verandert de privacygaranties niet.** +doorgeefluik voor versleutelde wijzigingen. Volgens Trezor is de data client-side end-to-end versleuteld, +dus de relay ziet niets leesbaars. **Zelf hosten haalt Trezor uit de vergelijking, het verandert de +privacygaranties niet.** -## 2. Wat de repo bevat +## 2. Eén codebase, vier processen, en een compose die de app niet draait -| Onderdeel | Poort | Waarvoor | Hardheid | -|-|-|-|-| -| `evolu-relay` | 4000 | de eigenlijke sync-relay, dit is wat we nodig hebben | onderzocht 25-08-2026 | -| `quota-manager` | 4001 | quota- en betaalserver, noemt een "Payment Server" en een Notion API-spec | onderzocht 25-08-2026 | -| Postgres | standaard | opslag achter de relay | onderzocht 25-08-2026 | -| `Dockerfile` en `docker-compose.yaml` | | Trezor containeriseert zelf al | onderzocht 25-08-2026 | -| `.k8s/` | | Kubernetes-configuratie, voor Umbrel niet relevant | onderzocht 25-08-2026 | +**Correctie op het vooronderzoek.** Daar stond dat er een `Dockerfile` en een `docker-compose.yaml` in de +repo staan en dat containeriseren dus "al gedeeltelijk gedaan is door Trezor zelf". Het eerste klopt, het +tweede niet: **de compose van Trezor draait de relay niet.** Er staan precies twee diensten in, en dat is +een ontwikkelopstelling: -Laatste release genoemd in het vooronderzoek: **v0.1.8, april 2026**. Dat maakt het een jong en actief -project, en dat is een risico dat verder gaat dan een versienummer: de architectuur kan nog schuiven. +- `db`: `image: postgres`, ongepind, met `PGDATA: /data/postgres` en `5432:5432` naar buiten; +- `prometheus`: `network_mode: host`, die `localhost:4003` afloopt. -## 3. De vraag die alles bepaalt +De README bevestigt de bedoeling: `docker compose up` in de ene terminal voor de database, en in de andere +`yarn start-quota-manager`, `yarn start-evolu-relay` en `yarn start-metrics`. Wat Trezor zélf uitrolt staat +niet in de compose maar in `.k8s/`, met Kustomize-overlays voor dev en prod. -**Is de quota-manager verplicht?** De naam en de beschrijving wijzen op Trezor's eigen gehoste, -quota-gebaseerde dienst, en voor privégebruik op één Umbrel is dat niet iets wat je wilt draaien. Maar -"bedoeld voor" is geen "optioneel": als de relay bij het starten een verbinding met de quota-manager -verwacht, moet hij mee in het pakket. +**Alle processen komen uit dezelfde codebase en dus uit dezelfde image.** Dat is de belangrijkste +pakketteerwinst van dit hele onderzoek: je hebt geen drie images nodig, maar één image met per service een +ander `command`. De `Dockerfile` is `node:24-alpine`, twee fasen, Yarn 4.12.0, met `EXPOSE 4000 4001` en +`CMD ["yarn", "start"]`. Bij dat `CMD` staat bovenstrooms zelf een commentaar dat het misschien +`start-quota-manager` of `start-evolu-relay` had moeten zijn, dus reken er niet op dat `yarn start` het +juiste doet; zet het commando expliciet. -Het verschil in uitkomst is groot genoeg om het als eerste te beantwoorden: +De poorten, met hun standaardwaarde uit `src/config.ts`: -- **niet verplicht** → een pakket van twee containers, relay plus Postgres; -- **wel verplicht** → drie containers, plus de vraag wat de quota-manager zelf nodig heeft. Als dat een - Notion-sleutel of een betaalprovider is, is dat geen pakketteerprobleem meer maar een blokkade. +| Proces | Poort | Waarvoor | +|-|-|-| +| evolu-relay | 4000 | de sync-relay, dit is wat we nodig hebben | +| quota-manager | 4001 | quota- en betaalserver | +| health | 4002 | statuscontrole | +| metrics | 4003 | Prometheus | -Waar je het antwoord vindt zonder te draaien: `.env.sample`, de compose van Trezor zelf, en de plek in de -broncode van de relay waar de quota-manager wordt aangeroepen. Waar je het antwoord bewijst: hem starten -zonder. +In `.env.sample` staan ze alle vier uitgecommentarieerd, dus de standaardwaarden gelden tenzij je ze zet. +`DATA_DIR` heeft standaard de waarde `data`. -## 4. Wat er nog helemaal niet uitgezocht is +## 3. Is de quota-manager verplicht? Ja, in de praktijk wel -Deze vier staan hier omdat ze het pakket bepalen en omdat het vooronderzoek er niets over zegt. Ze zijn -geen taak (dat zijn ze in **Proefopstelling** en **Umbrelapp**), maar een lezer moet niet denken dat de -tabel hierboven het hele plaatje is. +**Dit is de vraag waar het vooronderzoek op hoopte dat het antwoord nee zou zijn.** Dat is het niet, en de +reden is preciezer dan "de relay heeft de quota-manager nodig". -1. **Publiceert Trezor een image in een registry, of is er alleen een Dockerfile?** Dit is de vraag met de - grootste gevolgen na de quota-manager. Umbrel wil een image gepind op - `repo:versie@sha256:`, met `linux/amd64` én `linux/arm64` erin. Alleen een Dockerfile betekent - dat je zelf bouwt en zelf publiceert, en dan ben je onderhouder van een image geworden. -2. **Draait het op arm64?** De helft van de Umbrels is een Raspberry Pi. Een image die alleen amd64 kent, - valt daar om, en dat merk je pas op het apparaat. -3. **Hoe authenticeert Trezor Suite zich tegen de relay, en over welk protocol praat het?** Dit bepaalt of - de app achter de inlog van umbrelOS kan staan. Zie het masterplan **Umbrelapp**, §4b. -4. **Accepteert Trezor Suite een `http://`-adres, of eist het TLS?** Daar hangt het masterplan +De relay bevat twee controles, in `src/evoluRelay/createEvoluRelay.ts`: + +- **`isOwnerAllowed()`** vraagt `getLimitsForOwner({ ownerId })` op en staat de eigenaar alleen toe als daar + iets terugkomt dat niet leeg is; +- **`isOwnerWithinQuota()`** controleert bij schrijven of `usedBytes + requiredBytes` binnen de limiet + blijft. + +De strekking: **een eigenaar zonder rij in de limietentabel wordt geweigerd.** En de quota-manager is +precies het onderdeel dat die rijen aanmaakt. Zonder hem is de relay dus niet "open", maar dicht voor +iedereen. + +Twee dingen die dit relativeren en die het pakket bepalen: + +- **er is geen HTTP-koppeling tussen de twee.** In `src/config.ts` staat geen URL of hostnaam voor de + quota-manager, alleen een poort waarop hij zelf luistert. Ze delen de Postgres. Praktisch gevolg: de + relay hoeft de quota-manager niet te kunnen bereiken, alleen de tabel moet gevuld zijn; +- **daarmee zijn er twee wegen**, en ze zijn allebei legitiem: de quota-manager meepakketteren en er één + eigenaar in registreren, of de limietenrij één keer zelf in de database zetten. Het tweede is minder + bewegende delen, maar het is wél zelf in andermans schema schrijven, en dat breekt bij een migratie. + +**Wat hier niet is uitgezocht**, en het is de eerste vraag voor wie hier verder gaat: hoe je bij de +quota-manager een eigenaar registreert, en of daar iets extern voor nodig is. De README verwijst voor de +API-specificatie naar Notion en voor het uitproberen naar Bruno; er zit een `bruno-collection/` in de repo +die dat waarschijnlijk laat zien. + +### De onopgeloste tegenspraak rond dev en prod + +In `.env.sample` staat `SERVER_ENV="dev" # dev | prod (PROD enables evolu relay authentication)`. Dat +suggereert dat de controles in dev uit staan, en dat zou een self-hosted relay eenvoudig maken. + +**Dat is niet terug te vinden in de code die ik gelezen heb.** In `src/config.ts` wordt +`isDevServer = SERVER_ENV === 'dev'` gezet, en in `createEvoluRelay.ts` bepaalt die vlag alleen het +logniveau (`debug` tegenover `info`). `createEvoluRelayCompositionRoot.ts` hangt `getLimitsForOwner` +onvoorwaardelijk in, zonder tak voor dev. + +Dus: óf het commentaar in `.env.sample` gaat over iets anders dan deze twee controles, óf het is +achterhaald. **Ga er niet van uit dat `SERVER_ENV=dev` de deur opent**, en ga er ook niet van uit dat hij +dicht is: dit is precies het soort aanname waar een middag in gaat zitten. Het is met één keer starten te +meten en dat hoort in **Proefopstelling** fase 2. + +## 4. Er is geen publieke image, en dat is de grootste consequentie + +**Tweede correctie op het vooronderzoek**, en de duurste. Trezor bouwt wel een image, maar publiceert hem +niet ergens waar jij hem kunt halen. + +Uit `.github/workflows/build-and-push-image.yml`: de image gaat via `aws-actions/amazon-ecr-login` naar een +**Amazon ECR in eu-central-1**, met de registry-hostnaam als uitvoer van die stap en de naam als +invoerparameter. Er is geen Docker Hub en geen ghcr in dat werkproces. Onder de namespace `trezor` op +Docker Hub staat niets dat hierop lijkt. + +Wat daaruit volgt voor dit project: + +- **je bouwt en publiceert de image zelf**, of er is geen Umbrel-app. Dat is geen eenmalige handeling maar + een doorlopende verplichting: bij elke nieuwe versie van Trezor bouw je opnieuw; +- **`linux/arm64` is geen risico meer.** Datzelfde werkproces bouwt `platforms: linux/amd64,linux/arm64` + met QEMU, dus de Dockerfile is bovenstrooms bewezen op arm64. Dat was punt 2 van de oude versie van dit + document en die vraag is hiermee weg; +- **de licentie wordt nu wél een vraag.** GitHub classificeert `LICENSE.md` als "other". Zolang je alleen + zelf draait is dat academisch; zodra je een image publiceert, distribueer je hun software. Lees dat + bestand voordat er iets in een openbaar register komt. + +## 5. Wat er nog helemaal niet uitgezocht is + +Deze staan hier omdat ze het pakket bepalen en omdat er in deze ronde geen antwoord op kwam. Ze zijn geen +taak (dat zijn ze in **Proefopstelling** en **Umbrelapp**). + +1. **Kan Trezor Suite überhaupt naar een eigen sync-server wijzen, en op welk platform?** Onveranderd de + goedkoopste weerlegging van het hele project, en niets in deze repo zegt er iets over: dit is de + serverkant. +2. **Accepteert Trezor Suite een `http://`-adres, of eist het TLS?** Daar hangt het masterplan **Bereikbaarheid** aan. +3. **Hoe registreer je een eigenaar bij de quota-manager**, en heeft die daarvoor iets extern nodig? Zie + §3. Begin bij `bruno-collection/`. +4. **Wat doet `SERVER_ENV=prod` dat `dev` niet doet?** Zie de tegenspraak in §3. +5. **Wat staat er in `LICENSE.md`?** Zie §4. -## 5. Bronnen +## 6. Bronnen -Het vooronderzoek van 25-08-2026 staat ongewijzigd in -[Vooronderzoek.PLAN.md](../Plannen/Masterplannen/Archief/Vooronderzoek.PLAN.md); daar is elke regel -hierboven vandaan gekomen. De onderliggende bronnen (de repo van Trezor zelf, de release-pagina) zijn nog -niet opnieuw geraadpleegd; zet de URL erbij zodra dat gebeurt, zoals de andere referenties in deze map dat -doen. +Alles hierboven komt uit deze bestanden, geraadpleegd op 25-08-2026: + +- [`docker-compose.yaml`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/docker-compose.yaml) +- [`.env.sample`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/.env.sample) +- [`Dockerfile`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/Dockerfile) +- [`README.md`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/README.md) +- [`src/config.ts`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/src/config.ts) +- [`src/evoluRelay/createEvoluRelay.ts`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/src/evoluRelay/createEvoluRelay.ts) +- [`src/evoluRelay/createEvoluRelayCompositionRoot.ts`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/src/evoluRelay/createEvoluRelayCompositionRoot.ts) +- [`.github/workflows/build-and-push-image.yml`](https://raw.githubusercontent.com/trezor/trezor-suite-sync/main/.github/workflows/build-and-push-image.yml) +- Docker Hub, namespace `trezor`: geen image die hierop lijkt + +Het oorspronkelijke vooronderzoek van 25-08-2026 staat ongewijzigd in +[Vooronderzoek.PLAN.md](../Plannen/Masterplannen/Archief/Vooronderzoek.PLAN.md). Wat daar niet meer klopt, +staat hierboven in §2 en §4.