This commit is contained in:
+16
-11
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user