This commit is contained in:
+16
-11
@@ -1,6 +1,6 @@
|
|||||||
schema_version: 1
|
schema_version: 1
|
||||||
project: VacatureRadar
|
project: VacatureRadar
|
||||||
updated_at: '2026-07-29'
|
updated_at: '2026-07-30'
|
||||||
execution_policy:
|
execution_policy:
|
||||||
order: file-order, then first ready task whose dependencies are done
|
order: file-order, then first ready task whose dependencies are done
|
||||||
no_product_questions: true
|
no_product_questions: true
|
||||||
@@ -1341,7 +1341,7 @@ tasks:
|
|||||||
gebruikt strikt de gepinde certifi-bundel zonder bypass.
|
gebruikt strikt de gepinde certifi-bundel zonder bypass.
|
||||||
- id: VR-202
|
- id: VR-202
|
||||||
title: Live IMAP- en SMTP-credentials configureren
|
title: Live IMAP- en SMTP-credentials configureren
|
||||||
status: blocked-external
|
status: done
|
||||||
priority: P0
|
priority: P0
|
||||||
requirement_ids:
|
requirement_ids:
|
||||||
- PR-016
|
- PR-016
|
||||||
@@ -1361,17 +1361,19 @@ tasks:
|
|||||||
- Dezelfde live testmail importeert per mailbox idempotent en alle geconfigureerde intervallen worden door de
|
- Dezelfde live testmail importeert per mailbox idempotent en alle geconfigureerde intervallen worden door de
|
||||||
scheduler gerespecteerd.
|
scheduler gerespecteerd.
|
||||||
- SMTP verstuurt één testdigest en outboxstatus klopt.
|
- SMTP verstuurt één testdigest en outboxstatus klopt.
|
||||||
- OAuth-clientcredentials en de encryptiesleutel staan alleen in de productie-secretstore/.env; eventuele
|
- OAuth-clientcredentials en de encryptiesleutel staan alleen in de productie-secretstore/.env; eventuele Gmail/custom-app-wachtwoorden
|
||||||
Gmail/custom-app-wachtwoorden zijn als ciphertext opgeslagen en sleutelrotatie is live getest.
|
zijn als ciphertext opgeslagen en sleutelrotatie is live getest.
|
||||||
verification:
|
verification:
|
||||||
- Volg Unraid mailboxchecklist
|
- Volg Unraid mailboxchecklist
|
||||||
- Inspecteer logs op afwezigheid van secret/payload
|
- Inspecteer logs op afwezigheid van secret/payload
|
||||||
primary_paths:
|
primary_paths:
|
||||||
- /mnt/user/appdata/vacatureradar/config/.env
|
- /mnt/user/appdata/VacatureRadar/.env
|
||||||
- Bronnen -> Platformmailboxen
|
- Bronnen -> Platformmailboxen
|
||||||
external_blocker: De dedicated productie-alias, Entra-appregistratie, admin consent en Exchange-mailboxscope zijn
|
result:
|
||||||
op 2026-07-30 live ingericht; resterend zijn de productie-uitrol en echte platformalertmails voor de
|
completed_at: '2026-07-30'
|
||||||
import-/digestproef.
|
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
|
- id: VR-203
|
||||||
title: Productiedomein, TLS en reverse proxy activeren
|
title: Productiedomein, TLS en reverse proxy activeren
|
||||||
status: done
|
status: done
|
||||||
@@ -1403,7 +1405,7 @@ tasks:
|
|||||||
containerintern bereikbaar.
|
containerintern bereikbaar.
|
||||||
- id: VR-204
|
- id: VR-204
|
||||||
title: Immutable containerimage publiceren
|
title: Immutable containerimage publiceren
|
||||||
status: blocked-external
|
status: done
|
||||||
priority: P1
|
priority: P1
|
||||||
requirement_ids:
|
requirement_ids:
|
||||||
- NFR-009
|
- NFR-009
|
||||||
@@ -1421,9 +1423,12 @@ tasks:
|
|||||||
- Pull image op schone host
|
- Pull image op schone host
|
||||||
- Start smoke stack en rollback naar vorige digest
|
- Start smoke stack en rollback naar vorige digest
|
||||||
primary_paths:
|
primary_paths:
|
||||||
- .github/workflows/release.yml
|
- .gitea/workflows/release.yml
|
||||||
- docker-compose.unraid.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
|
- id: VR-205
|
||||||
title: Gelicenseerde Belgische geodatabron laden
|
title: Gelicenseerde Belgische geodatabron laden
|
||||||
status: done
|
status: done
|
||||||
|
|||||||
+26
-11
@@ -1,7 +1,7 @@
|
|||||||
# Projectstatus
|
# Projectstatus
|
||||||
|
|
||||||
- Laatst bijgewerkt: 2026-07-29
|
- Laatst bijgewerkt: 2026-07-30
|
||||||
- Repositoryversie: 0.3.14 importperformance
|
- Repositoryversie: 0.3.15 M365 OAuth en immutable registryrelease
|
||||||
- Uitvoeringsmodus: autonome backlog
|
- Uitvoeringsmodus: autonome backlog
|
||||||
- Eerste uitvoerbare taak: controleer met `python scripts/backlog.py next`
|
- 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`;
|
- 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.
|
- 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
|
Productieoplevering 0.3.15 op 2026-07-30:
|
||||||
mailbox-/identityconfiguratie (`VR-202`) en publicatie naar een externe private
|
|
||||||
registry (`VR-204`) blijven extern geblokkeerd.
|
- `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
|
## 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 alias is niet primair gemaakt en bestaande adressen zijn ongewijzigd gebleven;
|
||||||
- de Entra-appregistratie, admin consent en Exchange-mailboxscope zijn live ingericht
|
- 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;
|
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;
|
- `VR-202` is volledig afgerond; Basic Auth is niet geactiveerd;
|
||||||
Basic Auth wordt niet geactiveerd;
|
|
||||||
- de volledige lokale gate is groen met 324 tests, 0 failures, 0 skips en 84,05%
|
- de volledige lokale gate is groen met 324 tests, 0 failures, 0 skips en 84,05%
|
||||||
branch-aware dekking.
|
branch-aware dekking.
|
||||||
|
|
||||||
@@ -576,16 +594,13 @@ Een toekomstige agent moet altijd de actuele waarheid opnieuw bepalen met:
|
|||||||
|
|
||||||
## Nog te bouwen
|
## 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
|
## Externe blokkades
|
||||||
|
|
||||||
Deze blokkeren onafhankelijke code niet:
|
Deze blokkeren onafhankelijke code niet:
|
||||||
|
|
||||||
- verdere persoonlijke werkgevers-/bronnenkeuze en actuele menselijke review buiten de actieve VITO-/Deliverect-startercatalogus;
|
- 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
|
## 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
|
## 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.
|
- 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.
|
- 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`.
|
- 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
|
## 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-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-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-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-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-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.
|
- 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