Record live mail and registry acceptance
deploy / deploy (push) Canceled after 0s

This commit is contained in:
Jens
2026-07-30 02:53:38 +02:00
parent db9f340130
commit 3ab9127548
4 changed files with 59 additions and 25 deletions
+16 -11
View File
@@ -1,6 +1,6 @@
schema_version: 1
project: VacatureRadar
updated_at: '2026-07-29'
updated_at: '2026-07-30'
execution_policy:
order: file-order, then first ready task whose dependencies are done
no_product_questions: true
@@ -1341,7 +1341,7 @@ tasks:
gebruikt strikt de gepinde certifi-bundel zonder bypass.
- id: VR-202
title: Live IMAP- en SMTP-credentials configureren
status: blocked-external
status: done
priority: P0
requirement_ids:
- PR-016
@@ -1361,17 +1361,19 @@ tasks:
- Dezelfde live testmail importeert per mailbox idempotent en alle geconfigureerde intervallen worden door de
scheduler gerespecteerd.
- SMTP verstuurt één testdigest en outboxstatus klopt.
- OAuth-clientcredentials en de encryptiesleutel staan alleen in de productie-secretstore/.env; eventuele
Gmail/custom-app-wachtwoorden zijn als ciphertext opgeslagen en sleutelrotatie is live getest.
- OAuth-clientcredentials en de encryptiesleutel staan alleen in de productie-secretstore/.env; eventuele Gmail/custom-app-wachtwoorden
zijn als ciphertext opgeslagen en sleutelrotatie is live getest.
verification:
- Volg Unraid mailboxchecklist
- Inspecteer logs op afwezigheid van secret/payload
primary_paths:
- /mnt/user/appdata/vacatureradar/config/.env
- /mnt/user/appdata/VacatureRadar/.env
- Bronnen -> Platformmailboxen
external_blocker: De dedicated productie-alias, Entra-appregistratie, admin consent en Exchange-mailboxscope zijn
op 2026-07-30 live ingericht; resterend zijn de productie-uitrol en echte platformalertmails voor de
import-/digestproef.
result:
completed_at: '2026-07-30'
note: M365 app-only OAuth/XOAUTH2 live ingericht met dedicated alias/map en Exchange-regel; negen platformmailboxen
importeerden dezelfde live testmail idempotent, schedulerstatus was correct, testdigest stond sent en logs
bleven payload-/secretvrij.
- id: VR-203
title: Productiedomein, TLS en reverse proxy activeren
status: done
@@ -1403,7 +1405,7 @@ tasks:
containerintern bereikbaar.
- id: VR-204
title: Immutable containerimage publiceren
status: blocked-external
status: done
priority: P1
requirement_ids:
- NFR-009
@@ -1421,9 +1423,12 @@ tasks:
- Pull image op schone host
- Start smoke stack en rollback naar vorige digest
primary_paths:
- .github/workflows/release.yml
- .gitea/workflows/release.yml
- docker-compose.unraid.yml
external_blocker: Vereist registrykeuze, account en credentials.
result:
completed_at: '2026-07-30'
note: Gitea private registry publiceerde v0.3.15 als immutable digest met commitlabel, SPDX-SBOM, checksums
en release notes; Unraid pull, digest-pin, healthy smoke en rollback naar 0.3.14 plus herstel zijn live geslaagd.
- id: VR-205
title: Gelicenseerde Belgische geodatabron laden
status: done
+26 -11
View File
@@ -1,7 +1,7 @@
# Projectstatus
- Laatst bijgewerkt: 2026-07-29
- Repositoryversie: 0.3.14 importperformance
- Laatst bijgewerkt: 2026-07-30
- Repositoryversie: 0.3.15 M365 OAuth en immutable registryrelease
- Uitvoeringsmodus: autonome backlog
- Eerste uitvoerbare taak: controleer met `python scripts/backlog.py next`
@@ -30,9 +30,28 @@ Productieoplevering 0.3.14 op 2026-07-29:
- de pre-releasecustomdump, media en composeconfig staan checksum-geldig onder `/mnt/user/appdata/VacatureRadar/backups/release-0.3.14-20260729T164500Z`; rollbackimage `vacatureradar:rollback-0.3.13` wijst naar `sha256:34aef8853f77a3f311b119bd67d9f1160a97fd4a21e62c9776222be289bf3b88`;
- productie is healthy zonder restarts, versie 0.3.14 is publiek zichtbaar, alle gastkernroutes antwoorden 200 en een echte importsmoke creëerde één job binnen een transactie waarna rollback expliciet bevestigd werd.
Volgende uitvoerbare taak: geen na afronding van VR-228. Alleen de optionele
mailbox-/identityconfiguratie (`VR-202`) en publicatie naar een externe private
registry (`VR-204`) blijven extern geblokkeerd.
Productieoplevering 0.3.15 op 2026-07-30:
- `VR-202` is live afgerond met een dedicated alias, geïsoleerde Exchange-map en
inboxregel, app-only OAuth/XOAUTH2 voor IMAP en SMTP en negen platformconnecties;
- dezelfde echte testmail werd per connectie eenmaal geïmporteerd en bij herhaling
als duplicate herkend; alle ingestelde intervallen zetten `next_poll_at` correct
en de scheduler plande geen connectie te vroeg;
- de productie-Fernet-sleutel werd live naar een nieuwe primaire MultiFernet-sleutel
geroteerd; een tijdelijke versleutelde custom credential bleef ontsleutelbaar en
is na de proef verwijderd;
- één echte digest werd verzonden en de outbox eindigde op `sent`; productie-logs
bevatten geen OAuth-secret, bearer-token of mailpayload;
- `VR-204` publiceerde `v0.3.15` naar de private Gitea-registry en Unraid is gepind
op `sha256:5a6dc253db7a60c42c0c806ae084ddc6ee7c98db5db71a857423b894a3662ba5`;
- commitlabel, digest, SPDX-SBOM, checksums en release notes zijn checksum-geldig
opgeslagen als Gitea Actions-artifact `release-evidence-v0.3.15`;
- pull, interne en publieke readiness, rollback naar `0.3.14` en herstel naar de
immutable `0.3.15`-digest zijn live geslaagd;
- lokale en Gitea-releasegate zijn groen met 324 tests, 0 failures, 0 skips en
84,05% branch-aware dekking.
Volgende uitvoerbare taak: geen; alle P0- en P1-releasepunten zijn afgerond.
## Laatste risicohardening
@@ -42,8 +61,7 @@ Live mailboxvoorbereiding op 2026-07-30:
- de alias is niet primair gemaakt en bestaande adressen zijn ongewijzigd gebleven;
- de Entra-appregistratie, admin consent en Exchange-mailboxscope zijn live ingericht
met app-only OAuth; tijdelijke bootstraprechten en de bootstrap-app zijn na afloop verwijderd;
- `VR-202` resteert alleen nog op de productie-uitrol en echte platformalert-/digestproeven;
Basic Auth wordt niet geactiveerd;
- `VR-202` is volledig afgerond; Basic Auth is niet geactiveerd;
- de volledige lokale gate is groen met 324 tests, 0 failures, 0 skips en 84,05%
branch-aware dekking.
@@ -576,16 +594,13 @@ Een toekomstige agent moet altijd de actuele waarheid opnieuw bepalen met:
## Nog te bouwen
Momenteel staan er geen `ready` taken meer over; het volgende te behandelen item is `VR-202` als `blocked-external` voor live mailbox-/SMTP-credentials en echte jobalertmails van de gekozen platformen.
Momenteel staan er geen `ready` taken of P0/P1-releaseblokkers meer over.
## Externe blokkades
Deze blokkeren onafhankelijke code niet:
- verdere persoonlijke werkgevers-/bronnenkeuze en actuele menselijke review buiten de actieve VITO-/Deliverect-startercatalogus;
- live IMAP/SMTP-account en app-password;
- containerregistry en credentials;
- actieve/voor deze repository geregistreerde Gitea Actions-runner;
## Bekende verificatiebeperking van de aangeleverde basis
+11 -3
View File
@@ -1,6 +1,6 @@
# Finale acceptance 0.3.14
# Finale acceptance 0.3.15
Status: productie geaccepteerd op 2026-07-29.
Status: productie geaccepteerd op 2026-07-30.
## Bewijs
@@ -14,7 +14,15 @@ Status: productie geaccepteerd op 2026-07-29.
- PostgreSQL custom dump plus media/configbewijs is naar een geïsoleerde database hersteld; migrations, exacte recordtellingen en een aparte applicatiestart slaagden.
- Een productie-importsmoke extraheerde en creëerde één geldige job in een expliciete transactie; rollback werd bevestigd en liet geen smokedata achter.
- De checksum-geldige pre-releaseback-up staat onder `backups/release-0.3.14-20260729T164500Z`; rollbacktag `vacatureradar:rollback-0.3.13` bewaart image `sha256:34aef8853f77a3f311b119bd67d9f1160a97fd4a21e62c9776222be289bf3b88`.
- M365 IMAP en SMTP werken app-only via OAuth/XOAUTH2; negen geïsoleerde
platformconnecties importeerden één live testmail idempotent en één testdigest
eindigde met outboxstatus `sent`.
- Gitea Actions publiceerde `v0.3.15` met immutable digest
`sha256:5a6dc253db7a60c42c0c806ae084ddc6ee7c98db5db71a857423b894a3662ba5`.
Het artifact bevat een geverifieerde SPDX-SBOM, checksums en release notes.
- Unraid is op die digest gepind; pull, health/readiness, rollback naar `0.3.14`
en herstel naar `0.3.15` zijn live geslaagd.
## Uitkomst
Er bestaan geen bekende P0- of P1-releaseblokkers. Alleen optionele Entra- en mailboxcredentials blijven extern; zij raken de kernrelease niet.
Er bestaan geen bekende P0- of P1-releaseblokkers.
+6
View File
@@ -96,6 +96,12 @@ Iedere backlogtaak die een requirement wijzigt, werkt in dezelfde commit deze ma
- VR-122 operationaliseert de veilige platformingress als dagelijkse, configureerbare en begrensde mailboxpoll. VDAB-alerts krijgen expliciete provenance, replay blijft idempotent en de bronpagina onderscheidt de werkende jobalertroute van de contractueel afgeschermde officiële Vacature API. Bewijs staat in de e-mailadapter-/importtests, `apps/sources/services/imap_import.py` en ADR-0005.
- VR-123 vervangt die globale poll door gebruikersgescopeerde VDAB- en Indeed-mailboxkoppelingen met versleutelde app-wachtwoorden, afzonderlijke intervallen, per-mailboxleases en UI-beheer. Bewijs staat in `tests/unit/test_mailbox_credentials.py`, `tests/integration/test_mailbox_connections.py`, de migratie en ADR-0009.
- VR-124 breidt dezelfde mailboxingang uit met LinkedIn, ictjob.be, Jobat, StepStone, EuroBrussels en BrusselsJobs. De platformgebonden parser accepteert uitsluitend gelabelde HTTPS-links op het gekozen jobboarddomein; fixtures, adapter-/integratietests en de centrale denylist bewijzen de afscherming.
- VR-202 bewijst de productie-ingress met M365 app-only OAuth/XOAUTH2, een
dedicated alias en map, negen platformconnecties, een idempotente live
testmail, correcte schedulerstatus en een verzonden digest-outbox.
- VR-204 bewijst de immutable releaseketen via de private Gitea-registry,
digest-pin, commitlabel, SPDX-SBOM, checksums, release notes en een live
Unraid pull-/rollback-/herstelsmoke.
- VR-125 vervangt de twee Brusselse nicheboards door Careerjet, Randstad en Robert Half, retireert buitenregionale werkgevers zonder provenanceverlies en voegt host- en padgebonden adapters toe voor ACA Group, Xplore Group, UHasselt, PXL en ZOL in de kern Hasselt-Genk.
- VR-126 herankert profiel en broncatalogus op postcode 2400 Mol en 40 km. De host-, pad- en locatiefilters voor SCK CEN, Cipal Schaubroeck, VanRoey, NTX en Thomas More worden gedekt door regionale adaptertests, source-viewtests, live bronruns en de bijgewerkte threat T-39.
- VR-201 activeert Gemeente Mol en zeven bijkomende Kempen-werkgevers na menselijke voorwaardenreview, fixtures, fail-closed locatie-/routefilters en twee livecycli. Twaalf interessante werkgevers zonder stabiele actieve ingang staan afzonderlijk en niet-scanbaar op de UI-waaklijst. Bewijs staat in de livecatalogus, seeddata, `KempenEmployerAdapter`, bronruns en adapter-/seed-/viewtests.