# Handover — stand van zaken

> **Status:** ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

**Peildatum: 29 juli 2026.** Dit document vervangt de eerdere inhoud van dit bestand en is de
ingang voor wie deze sessie overneemt. Managementweergave van dezelfde inhoud:
[status/index.html](status/index.html).

Verwante bronnen: [beslissingen](beslissingen/index.html) (wat op een keuze wacht) ·
[jouw acties](acties/index.html) (wat alleen de eigenaar kan doen) ·
[plan TestFlight + testfeedback](../implemented/release/plan-testflight-en-testfeedback.md) ·
beslislogs van [26](besluitenlog-2026-07-26.md) en [27 juli](besluitenlog-2026-07-27.md).

---

## 1. Waar we staan, in één alinea

De app draait op vier testtoestellen, de codebase is groen (3457 tests, analyze schoon), en
**build 1248 staat verwerkt en geldig in App Store Connect**. Alles wat via de API in te vullen
was voor TestFlight is ingevuld. Wat resteert richting testers zijn drie handelingen die alleen
de eigenaar kan doen, en één die niemand mag doen zonder zijn zegje: de indiening voor Beta App
Review. Daarnaast is de eigenaar van plan eerst de modules door te lopen en feedback te geven —
dat gaat vóór de TestFlight-afronding.

## 2. Wat er de afgelopen dagen is gebeurd

**Panel-review op twee grensverleggende wijzigingen** (TEN-89, TEN-122/TEN-59). Drie
onafhankelijke lenzen vonden drie reële defecten en één landmijn; alle vier zijn opgelost. De
zwaarste: een gedeeld gezinslid dat "voor wie" wijzigde, draaide stil de héle bewerking terug —
voor de agenda geruisloos, want die tabel zit niet in de drop-melder. Volledig verdict in
[besluitenlog-2026-07-26.md](besluitenlog-2026-07-26.md).

**Twee migraties gedraaid** met toestemming: `0083` (agenda-backfill, 6 rijen, 0 over) en `0082`
(klusreeks lokaal zaaien). De client-helft van 0082 zit in build 1248.

**TEN-99 opgeleverd en live** — de containercascade. Onderweg bleek de eerste implementatie zélf
een privacylek te introduceren via reparenting; dat is gereproduceerd en gedicht. De backfill
bleek een **no-op** (0 gedrifte rijen op productie), dus dat goedkeuringspunt is vervallen.
ADR-0019 had een onjuiste premisse en is gecorrigeerd.

**Eigenaar-besluiten 3 t/m 10** afgehandeld: export-compliance bevestigd, privacy-manifest
ingevuld, TEN-47 hernoemd, gezondheidsdocumentatie rechtgezet, drie refinement-tickets
aangemaakt (TEN-140/141/142), Sentry-DSN gecorrigeerd en gezet.

**TestFlight ingericht**: app-record bestond al, API-key aangemaakt, build 1247 geüpload (gaf
ITMS-90683), oorzaak weggecompileerd, **build 1248** geüpload en geldig.

## 3. TestFlight — wat er nog moet gebeuren

### Klaar ✅

| Wat | Bijzonderheid |
|---|---|
| App-record in App Store Connect | Apple ID `6789917487`, bundle `com.aquait.tendlo` |
| Distributiecertificaat veiliggesteld | `.p12` met privésleutel, geverifieerd |
| App Store Connect API-key | Key `58FJ54X566`, in `~/.appstoreconnect/private_keys/` |
| Export-compliance | `ITSAppUsesNonExemptEncryption = false`, eigenaar bevestigd |
| Privacy-manifest in de app | Zes types; locatie **grof** en **niet gekoppeld** |
| Build 1248 geüpload | VALID; ITMS-90683 opgelost door de always-locatiecode weg te compileren |
| Test Information (nl-NL) | Beschrijving, feedback-adres, privacy- en marketing-URL |
| Beta App Review-notities | Kernpunt: inloggen is **niet** nodig om te reviewen |
| Contactgegevens review | Robin van Duiven · info@aqua-it.com · +31655748050 |
| What to Test op 1248 | Zes punten uit deze ronde |
| Categorieën, Content Rights, subtitel | Productiviteit + Lifestyle |
| Testgroep "Gezin (extern)" | Aangemaakt, **zonder** publieke link |
| Plus-grants testhuishoudens | Bleken al te bestaan; enforcement blijft aan |

### Nog te doen 🔧

| # | Stap | Wie | Blokkeert |
|---|---|---|---|
| **T1** | **App Privacy-formulier invullen en publiceren** in ASC. Zit **niet** in de publieke API (vijf endpoints geprobeerd, alle 404). Klikklare instructie staat in [acties](acties/index.html) punt 4. | eigenaar | externe distributie |
| **T2** | **Testers toevoegen** aan "Gezin (extern)": e-mailadressen van Rosanne, Laura en Sandra. Niet gegokt, want een invite gaat naar een echte inbox. | eigenaar of ik, mét adressen | uitnodigen |
| **T3** | **Verifiëren dat `beta@tendlo.app` aankomt.** Testerfeedback met screenshots gaat daarheen en verdwijnt anders stil. | eigenaar | niets, maar stil verlies |
| **T4** | **Indienen voor Beta App Review.** Dit zet ik niet in gang zonder expliciete opdracht: hier gaat Apple daadwerkelijk kijken. Eerste build van een versie moet erdoor; doorgaans binnen een dag. | eigenaar geeft opdracht | testers krijgen de build |
| **T5** | **Privacybeleid op de website bijwerken** — twee gaten. Input ligt klaar in [website-privacy-input.md](../implemented/release/website-privacy-input.md); de website wordt door een ander traject gebouwd, dus deze repo raakt hem niet aan. | website-traject | niet blokkerend, wel inhoudelijk |

**Volgorde:** T1 → T2 → T4. T3 en T5 kunnen parallel.

### Twee dingen om te weten

**De privacybeleid-URL is nog niet definitief.** `https://tendlo-website.pages.dev/privacybeleid/`
werkt, maar `tendlo.app` resolveert nog niet. Na de domeinswitch moet die URL in ASC worden
bijgewerkt. Bovendien staat er een concept-banner op ("aan deze versie kunnen geen rechten
worden ontleend") — dat is wat Apple's review te zien krijgt. Weghalen is een juridische
beslissing, geen redactionele.

**Voor de échte App Store (later, niet nu) komt er meer bij:** trader-status onder de EU-regels,
waarbij bedrijfscontactgegevens **wél publiek** op de productpagina komen; schermafbeeldingen;
een supporturl; accountverwijdering (besluit 10 in `testflight-besluiten.md`: later, maar vóór
de inzending). Dat is een aparte ronde en staat los van TestFlight.

## 4. Testfeedback — waar dat staat

**Bord op 29 juli: 15 Triage · 7 Todo · 20 Testen.**

De belangrijkste bevinding van deze week: **acht van de twaalf Todo-tickets hadden hun fix al op
`main`** en stonden alleen in Todo omdat niemand ze had doorgezet, of omdat een her-test tegen
een oudere build liep. Vijf zijn doorgezet naar Testen met een hertest-instructie; de build op
alle vier de toestellen maakt die hertest nu mogelijk.

**Nog in Todo (7):**

- **TEN-99** — server-garantie is live, de client-helft zit in de merge maar is gebouwd ná 1248,
  dus die gaat mee met de volgende build.
- **TEN-120** — de eigenaar meldt zelf dat de ingest twee losse zaken in één ticket propte
  (vakantie-module vs. vastgoed). **Splitsen** is de volgende stap; dat is administratief.
- **TEN-116** en **TEN-111** — de fix staat er, maar de her-test vraagt een **nieuw ontwerp**
  (een aparte maandlijst met swipe; een keuze per vastgoedobject). Horen door de ontwerp-gate.
- **TEN-87 / TEN-118** — het Vermogen-programma. Door de ontwerp-gate, zes open vragen op de
  [varianten-pagina](../superseded/design/vermogen-ontwerpvarianten.html).
- **TEN-135** — opgegaan in TEN-138 (app-brede rij- en swipe-conventie).

**Nieuw op 29 juli: TEN-144** (Sandra) — iets in de agenda dat op "afgevinkt" springt zonder dat
zij dat deed. Nog niet verrijkt.

## 5. Beslist, maar bewust niet gebouwd 💤

Dit is gekozen richting die wacht, zodat niemand denkt dat het vergeten is:

- **Datum- en tijdkiezer** — richting beslist (wielen; W3 duur + W2 Van/Tot als één component met
  twee standen; maandgrid erbij). ~18-23 dagen over 55 aanroepen. Vraag 6 (nachten of dagen) is
  beantwoord: eenheid per aanroep. Vijf van de acht vragen staan nog open, geen blokkerend.
- **Vermogen** — richting beslist, zes open vragen.
- **AI-assistent (zoeken én aanmaken)** — geparkeerd als dossier op **TEN-143**, met de volledige
  stand van zaken, drie varianten voor de kernkeuze en vier open vragen. De eigenaar wil hier
  eerst over sparren. Belangrijk om te weten: de grounded assistent **bestaat al** en werkt voor
  zeven modules.
- **TEN-140 / 141 / 142** — permissie- en consent-tickets, eerst samen refinen.

## 6. Wat de eigenaar hierna wil

**Eerst de modules doorlopen en feedback geven, in een nieuwe sessie.** Dat gaat vóór het
afronden van TestFlight. Deze handover is bedoeld om die sessie zonder context-verlies te laten
starten.

## 7. De werkmap is opgeschoond ✅

Op 29 juli volledig doorgelopen. Eindstand: **één worktree, één branch (`main`), geen
niet-gecommitte wijzigingen.**

- **Werk van een parallelle sessie afgemaakt en gemerged**: marketing- en
  donker-thema-screenshottests plus een tekstcorrectie (`plusBenefitCalendar` beloofde
  "externe agenda-sync — Google & Outlook", wat de app niet doet → AI-capture).
- **`test/deelmodel-e2e` alsnog gemerged** — twee E2E-tests uit 8 juli die nooit geland waren.
  Ze compileerden niet meer omdat het pakket sindsdien van `mijn_pa` naar `tendlo` is hernoemd;
  na die hernoeming was analyze schoon. Relevant om te bewaren: ADR-0019 en de panel-review
  vragen allebei om E2E-verificatie van het deelmodel, en dit is precies dat harnas.
- **11 worktrees verwijderd** (de `.claude/worktrees/cx-*`-lanes, `plan-rework`, `pa_wt_e2e`).
  Wat er nog in stond waren wegwerp-briefs (`TICKET.md`, `ROUND2-FINDINGS.md`).
- **53 branches verwijderd.** Alle 53 zijn eerst geverifieerd als voorouder van `main`, dus er
  is geen commit verloren — alleen labels. Inclusief `backup/pre-golf2-main` en
  `backup/pre-release-main`, die volledig in `main` zaten.
- `git gc` gedraaid; `.git` is 20 MB.

### De remote is bij ✅

**`origin/main` is bijgewerkt** (`git@github.com:Aqua-IT/tendlo.git`, privé): 251 commits
gepusht, `699a67d3..3693abf2`. Lokaal en remote staan nu exact gelijk (0 voor, 0 achter). De drie
stale remote branches (`fix/ten3b-*`, `fix/ten4-*`, `fix/ten7-*`) waren al in `main` opgenomen en
zijn verwijderd; er staat nog uitsluitend `origin/main`.

Vóór het pushen gecontroleerd dat er geen sleutelmateriaal in de repo of de historie zit: geen
`.p12`/`.p8`/`.mobileprovision`/`.keystore` (niet getrackt en nooit gecommit), geen JWT's, geen
`sk-`/`ghp-`-achtige sleutels, en alleen `.env.example` als env-bestand.

## 8. Losse einden waar de volgende sessie over kan struikelen ⚠️

**Een integratietest is stuk:** `integration_test/ten114_abonnement_formulier_ui_test.dart:115`
zoekt een `TextField` met label "Incassodag", terwijl dat sinds TEN-131 een dropdown 1..31 is.
Mechanische fix, verifiëren vraagt de simulator.

**Een organisatie die weg moet:** bij het uitzoeken van de Sentry-EU-vraag is per ongeluk een
lege organisatie `probe-dry-run` in het Sentry-account aangemaakt (een POST die als test bedoeld
was, gaf 201). Verwijderen lukt niet met de beschikbare token (403, geen `org:admin`). Handmatig:
sentry.io → wissel naar `probe-dry-run` → Settings → General Settings → Remove Organization.

**Sentry staat sinds 13 augustus 2026 in de EU.** Er is een nieuwe organisatie
`aqua-it-bv-eu` op `de.sentry.io` (een bestaande organisatie kan niet van regio wisselen) en de
DSN is omgezet. Het account heeft nu beide regio's. **BYO zit nog op de oude VS-organisatie** —
dat loopt via BYO-337. Documentatie: TEN-228.

**Twee reviews die het ADR vroeg maar niet zijn gedaan** voor TEN-99: een volledige panel-review
(er waren twee lenzen in plaats van de volledige vorm) en een E2E tegen productie met de
wegwerp-accounts. De garantie is bewezen op SQL/RLS-niveau, niet end-to-end door de
PowerSync-bucket-herberekening heen.

---
*Bronnen: `git log` en `git status` op 2026-07-29; Linear team TEN (15 Triage / 7 Todo / 20 Testen); App Store Connect API (builds, betaAppReviewSubmissions, betaGroups); `docs/archive/sessions/besluitenlog-2026-07-26.md`, `-27.md`; `docs/archive/implemented/release/plan-testflight-en-testfeedback.md`. Geverifieerd op 2026-07-29.*
