702 lines
57 KiB
Markdown
702 lines
57 KiB
Markdown
# Projectstatus
|
||
|
||
## Gecontroleerde migratie — 2026-09-09
|
||
|
||
VR-232 voegt een startup-hold voor Celery worker/beat toe tijdens de expliciet
|
||
goedgekeurde legacy-migratie. Alleen de kandidaatdatakopie krijgt een marker;
|
||
uitgaand werk wordt pas na een geverifieerde deploymentcommit vrijgegeven.
|
||
De eerste middleware blokkeert ook gewone webverzoeken tot commit; alleen exacte
|
||
GET/HEAD-healthroutes blijven beschikbaar. De netwerkoverride behoudt het bestaande
|
||
netwerk. Lokaal slagen 344 tests inclusief browsercontroles (84,07% coverage).
|
||
De volledige `scripts/codex_verify.sh`-gate is groen: Ruff, Django-checks,
|
||
migratiecontrole, tests, taakledger en repositoryvalidatie zijn geslaagd.
|
||
Live migratie is niet uitgevoerd. Bestaande productietaken zijn niet gewijzigd.
|
||
|
||
- Laatst bijgewerkt: 2026-08-12
|
||
- Repositoryversie: 0.3.17 immutable releaseherstel
|
||
- Uitvoeringsmodus: autonome backlog
|
||
- Eerste uitvoerbare taak: controleer met `python scripts/backlog.py next`
|
||
|
||
## Werkende basis
|
||
|
||
De repository bevat een uitvoerbare Django-MVP met:
|
||
|
||
- profielen, revisies en begrensde feedbackconfiguratie;
|
||
- source registry, policy/denylist, veilige fetcher en source runs;
|
||
- JSON-LD-, HTML-, RSS/Atom- en e-mailadapters;
|
||
- normalisatie, sanitization, werkgeverresolutie, dedupe, aliassen, provenance en versies;
|
||
- deterministische features, harde exclusions, scores en optionele uitgeschakelde Ollama-boundary;
|
||
- volledige responsive dark/light Stitch-cockpit met negen functionele hoofdschermen, skillsradar, login en foutstates;
|
||
- feedbackacties, applicationdossiers, lifecycle en dagelijkse digest-outbox;
|
||
- Celeryworker/scheduler, healthchecks, Docker/Unraidconfiguratie en back-up-/herstelscripts;
|
||
- offline unit-, integratie- en securitytests.
|
||
|
||
## Laatste documentatie-update
|
||
|
||
Visuele demo-hardening `VR-229` op 2026-08-12:
|
||
|
||
- iedere publieke demosessie herstelt idempotent zes actuele fictieve vacatures,
|
||
de laatste scores, twee toekomstige opvolgmomenten en negen geïsoleerde
|
||
`example.test`-platformmailboxkoppelingen;
|
||
- mailboxbronnen worden niet meer door de URL-fetchscheduler gepland, de
|
||
publieke demo wordt uitgesloten van echte mailboxpolling en historische
|
||
mailboxpolicyfouten vervuilen dashboard en activiteit niet langer;
|
||
- navigatie en dashboard onderscheiden nu expliciet een actief zoekprofiel van
|
||
bron- of systeemgezondheid; het lege loginwachtwoordveld heeft geen misleidende
|
||
mask-placeholder meer;
|
||
- visuele audit: negen kernroutes groen in dark/light op 390×844, 1280×600,
|
||
1440×900 en 3440×1440 zonder overflow, heading- of consolefouten;
|
||
- gerichte regressies: 51 tests groen; volledige gate: 327 tests, 0 failures,
|
||
0 skips en 84,04% branch-aware dekking;
|
||
- commit `a6c8a79` en tag `v0.3.16` zijn naar Gitea gepusht; vóór uitrol is onder
|
||
`/mnt/user/appdata/VacatureRadar/local/backups/release-0.3.16-20260812T094608Z`
|
||
een checksum-geldige database- en configuratieback-up gemaakt;
|
||
- Unraid draait healthy zonder restarts op lokaal gebouwde image
|
||
`sha256:c98001c063e8358dc59dfc175c574187b36021dd5a81f44e3ba982a28c9f9341`;
|
||
een live sessiesmoke bevestigde dashboard 200, zes demomatches, negen
|
||
platformmailboxen, actieve ingress, nul oude policyfouten en geen
|
||
wachtwoord-maskplaceholder;
|
||
- `VR-230` herstelde de Gitea-releaseworkflow door `setup-uv` op immutable commit
|
||
`0880764` en uv op 0.11.12 te pinnen; de Astral-mirror verwijdert de eerdere
|
||
GitHub Releases-API-rate-limit;
|
||
- vier lege, verweesde Docker-netwerken zijn gecontroleerd verwijderd nadat de
|
||
runner geen subnet meer kon reserveren; actieve productie- en compose-netwerken
|
||
bleven onaangeroerd;
|
||
- Gitea Actions-run 3062 publiceerde 0.3.17 met digest
|
||
`sha256:98f4b33db353c192967013818f7c82c4f171921f3d300645908d52680fde209f`
|
||
en artifact `release-evidence-v0.3.17` met SPDX-SBOM, checksums en release notes;
|
||
- een dedicated `read:package`-token geeft Unraid alleen pulltoegang. De
|
||
pre-deployback-up staat onder
|
||
`/mnt/user/appdata/VacatureRadar/local/backups/release-0.3.17-20260812T114510Z`;
|
||
- Unraid is live op de immutable digest gepind: container healthy, nul restarts,
|
||
interne liveness/readiness groen, publieke readiness 200 en runtimeversie 0.3.17.
|
||
- `VR-231` verwijderde de oude `main`-push-to-deployworkflow en annuleerde de
|
||
laatste onbeperkt wachtende run 3065; alleen semantische tags publiceren nog;
|
||
- Jobat is via de bestaande OAuth/IMAP-taak geforceerd herhaald: 61 duplicaten
|
||
correct herkend, nul fouten en de foutstatus volledig gewist;
|
||
- Unraid gebruikt persistent `10.200.0.0/16,size=24`; een live proefnetwerk kreeg
|
||
`10.200.1.0/24` en werd daarna verwijderd. Na de gecontroleerde Docker-herstart
|
||
zijn alle 127 vooraf actieve containers hersteld; VacatureRadar, Grimmory en
|
||
MeTube zijn healthy en er zijn geen unhealthy of herstartende containers;
|
||
- serverback-ups bewaren de eerdere `docker.cfg`, de running-containersnapshot,
|
||
de Grimmory-template en de Gitea-database vóór de begrensde runannulering.
|
||
Volgende uitvoerbare backlogtaak: geen.
|
||
|
||
README-update op 2026-07-30:
|
||
|
||
- de repository-ingang benoemt release 0.3.15, de groene 324-testgate, de live
|
||
M365 app-only OAuth/XOAUTH2-flow en de immutable private Gitea-registryrelease;
|
||
- eerste configuratie noemt alle negen ondersteunde jobplatformen en verwijst
|
||
expliciet naar het M365 least-privilege- en rotatiepad in het runbook;
|
||
- de bestaande negen screenshots zijn visueel herbeoordeeld. De layout is nog
|
||
actueel; de bronafbeelding toont bewust een gesaneerde demo zonder actieve
|
||
ingress en is daarom als demo-momentopname verduidelijkt, niet vervangen door
|
||
een productiebeeld met accountgegevens;
|
||
- eindverificatie: volledige gate groen met 324 tests, 0 failures, 0 skips en
|
||
84,07% branch-aware dekking.
|
||
|
||
## Laatste productiehardening
|
||
|
||
Productieoplevering 0.3.14 op 2026-07-29:
|
||
|
||
- VR-228 en commit `cbd7220` zijn via `origin/main` uitgerold als image `sha256:1ee84241c2f4ecef751f45df760054309843e1e98192035bc27476ae5a9477df`;
|
||
- de geïsoleerde PostgreSQL-runner mat na één warm-up drie identieke queryprofielen: 3.264 importqueries, gemiddeld 9.040,123 ms, p50 32,900 ms, p95 52,296 ms, 28,031 documenten/s en 18,799 MB piekgeheugen;
|
||
- tegenover 0.3.13 is de import 44,74% sneller, gebruikt hij minstens 63,73% minder queries en stijgt throughput 83,42%; parser 12/12, precision/recall 1,0 en rankingchurn 0 bleven behouden;
|
||
- beide volledige gates waren groen met elk 318 tests, 0 failures, 0 skips en 84,20% dekking;
|
||
- 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.
|
||
|
||
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
|
||
|
||
Live mailboxvoorbereiding op 2026-07-30:
|
||
|
||
- Exchange Online bevestigde dat de dedicated VacatureRadar-alias aan de productie-mailbox is toegevoegd;
|
||
- 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` 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.
|
||
|
||
Risicohardening op 2026-07-29:
|
||
|
||
- de productiefetcher blokkeert nu fail-closed wanneer de HTTP-transportlaag het
|
||
werkelijk verbonden peer-IP niet beschikbaar stelt; ieder niet-publiek peer-IP
|
||
bleef al geblokkeerd;
|
||
- alleen expliciet geïnjecteerde test/custom clients mogen nog de begrensde
|
||
DNS-overlapfallback gebruiken; een negatieve regressietest dekt de
|
||
productiegrens;
|
||
- `VR-203` is administratief afgerond op basis van het bestaande live bewijs in
|
||
`docs/audit/FINAL_ACCEPTANCE.md`: publieke HTTP→HTTPS, TLS/securityheaders,
|
||
veilige cookies, CSRF-gastlogin, kernroutes en readiness zijn aantoonbaar
|
||
geslaagd;
|
||
- verificatie: Ruff groen, 8 gerichte fetchertests geslaagd en de volledige gate
|
||
groen met 319 tests, 0 failures, 0 skips en 84,21% branch-aware dekking.
|
||
|
||
Productieoplevering 0.3.13 op 2026-07-29:
|
||
|
||
- basiscommit `5e2453c` en hardeningcommit `a4a71eb` naar `origin/main` gepusht en op Unraid werkelijk gebouwd als finale image `sha256:34aef8853f77a3f311b119bd67d9f1160a97fd4a21e62c9776222be289bf3b88`;
|
||
- migrations, 148 static files, poort 1226, mounts, restartpolicy, PostgreSQL, Redis, Gunicorn, Celery worker/beat en readiness live gevalideerd, inclusief containerrestart;
|
||
- publieke HTTP→HTTPS, proxy/securityheaders, login-/gastflow, kernroutes, dark/light, 390/1280/3440 px en browserconsole live groen;
|
||
- productiecustomdump en media gehasht, naar een geïsoleerde database hersteld en via migrations, recordtellingen en afzonderlijke Gunicorn-readiness bewezen;
|
||
- vorige image `sha256:1851863be947b1e8b504e61e73b89d09c1dff704257b48856c775bb55f741459` live healthy teruggezet, waarna 0.3.13 opnieuw healthy is uitgerold;
|
||
- importprofiling overschreed opnieuw 9.000 queries; veilige optimalisatie vereist eerst een geïsoleerde benchmarkdatabase en blijft als performancevervolg gedocumenteerd.
|
||
|
||
VR-227 op 2026-07-29:
|
||
|
||
- globaal contentframe en topbar zijn gecentreerd tot ultrawide; de gastbanner staat in de normale hoofdflow en de mobiele pipeline is verticaal;
|
||
- vacaturepaginering is begrensd tot twintig resultaten, zoekscope is eerlijk en recente zoektermen blijven lokaal tot vijf items beperkt;
|
||
- Playwright Chromium is een verplichte CI-gate op zes viewports en faalt op focusverlies, overflow, console- en page-errors; de volledige gebruikersreis draait zonder skips;
|
||
- cachegebaseerde worker/beat-heartbeat vervangt de vroegere ongemeten runtimeclaim; onbekende queuediepte blijft expliciet onbekend;
|
||
- generieke HTML-extractie ondersteunt publicatiedatum en dienstverband; benchmarkkwaliteitsrun behaalt 12/12 velden, precision/recall 1,0 en nul rankingchurn;
|
||
- authbackenddekking bedraagt 97%, Entra 86% en totale branch-aware dekking 84,16%; volledige gate groen met 312 tests, 0 failures en 0 skips;
|
||
- CI genereert een CycloneDX-SBOM. Docker kon lokaal niet worden uitgevoerd omdat de binary ontbreekt; live en externe restpunten staan uitsluitend in `USER_INPUT_REQUIRED.md`.
|
||
|
||
Volgende uitvoerbare taak: geen na afronding van VR-227.
|
||
|
||
VR-225 op 2026-07-27:
|
||
|
||
- `PUBLIC_BASE_URL` stuurt publieke host-, origin- en HTTPS-instellingen aan en voorkomt de gemelde `DisallowedHost` achter Nginx Proxy Manager;
|
||
- publieke debugmodus, zwakke secrets, onveilige cookies, ontbrekende HTTPS-origin en een schrijfbare productiedemo worden fail-fast geweigerd;
|
||
- login- en importrate-limiting delen Redis over alle workers; forwarded client-IP’s gelden alleen vanaf expliciet vertrouwde proxy-CIDR’s;
|
||
- de gastdemo is server-side alleen-lezen, heeft een begrensde sessie en toont die beperking zichtbaar in de cockpit;
|
||
- interne healthchecks blijven HTTP-bruikbaar onder SSL redirect en readiness verifieert optioneel database plus cache;
|
||
- Unraid, publieke poort, env-pad, Nginx Proxy Manager en productie-env zijn als één reproduceerbaar deploymentcontract gedocumenteerd;
|
||
- de volledige offline suite is groen met 296 tests en 2 correcte Playwrightskips; Docker-, publieke TLS- en live Unraid-smokes blijven doelservervalidatie.
|
||
|
||
## Laatste frontendvervanging
|
||
|
||
VR-209 tot en met VR-213 vervangen de oude browserfrontend integraal:
|
||
|
||
- één nieuwe lokale Stitch-shell en design system zonder CDN of clientframework;
|
||
- echte dashboard-/vacature-intelligence, sollicitatiepipeline, profielconfigurator en source-healthinterface;
|
||
- nieuwe activiteit- en werkgeversroutes/read models en een eerlijke automationcockpit;
|
||
- standaard IT-relevantie, persoonlijke scorecontext en user-scoped mutaties blijven intact;
|
||
- browsermatrix van 360 tot 2560 px, elf actuele screenshots, schone console en geen documentoverflow;
|
||
- bronhealth-N+1 verwijderd: twee queries voor alle bron/runmetingen, 23 totale queries voor het representatieve automationscherm.
|
||
|
||
Het volledige scherm- en afwijkingsrapport staat in `docs/design/STITCH_INTEGRATION_REPORT.md`.
|
||
|
||
## Laatste onderhoudsaudit
|
||
|
||
VR-226 op 2026-07-28:
|
||
|
||
- README-presentatie verdiept van vier losse beelden naar een klikbare productreis met negen actuele screenshots: overzicht, zoeken, analyse, skills, werkgevers, sollicitaties, bronnen, automatisering en mobiel profiel;
|
||
- alle desktopbeelden opnieuw vastgelegd op 1920×1080, doelbewust verdeeld over dark/light en gecombineerd met 390×844 mobiel; geen overgangsoverlays, horizontale overflow, secrets of consolewaarschuwingen;
|
||
- de onrustige mobiele dashboardcapture is afgekeurd en verwijderd; de volledige galerij blijft lokaal en samen circa 1,1 MB;
|
||
- vier aangetroffen VR-225-lintproblemen en de ongeldige POSIX-modusassertie op Windows zijn hersteld; volledige gate groen met 296 geslaagde tests, 2 optionele skips en 83,44% branch-aware dekking. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-224 op 2026-07-27:
|
||
|
||
- README volledig herordend rond doelgroep, dagelijkse workflow, concrete productwaarde, veilige quickstart en eerste configuratie; architectuur, beheer en Codex-overdracht volgen pas daarna;
|
||
- vier actuele lokale screenshots toegevoegd voor dagoverzicht, vacatureverkenner, automatisering en mobiel zoekprofiel, samen minder dan 330 kB en zonder secrets of persoonlijke gegevens;
|
||
- browsercontrole op 1600×1000 en 390×844 in dark/light toont geen horizontale overflow of consolewaarschuwingen; repositorylinks en configuratiedocumentatie valideren;
|
||
- volledige gate groen met 268 geslaagde tests, 2 optionele skips en 83,48% branch-aware dekking. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-223 op 2026-07-27:
|
||
|
||
- VacatureRadar-logo verfijnd tot een transparante vier-elementenradar zonder donkere tegel, rand of schaduw; login en sidebar delen dezelfde schaalbare SVG;
|
||
- dubbele demo-/accountidentiteit uit de sidebar verwijderd; radarstatus en een themabewuste transparante ITWorx-credit vormen één compacte footer, terwijl accountmenu en afmelden in de topbar intact blijven;
|
||
- widescreenframe groeit naar 2.200 px en op 4K naar 2.480 px; browsermatrix van 18 shellcombinaties op 390/1280/1920/2560/3840 px en 1280×600 toont geen overlap, overflow of consolewaarschuwing;
|
||
- dark/light en mobiele login bevestigen een transparante logoachtergrond, correcte wordmarkbehandeling en intacte kerninteracties.
|
||
- gerichte regressies: 30 tests groen; volledige gate tweemaal groen met 268 geslaagde tests, 2 optionele skips en 83,45% branch-aware dekking;
|
||
- live image `sha256:ea9e61a1febca59eb906bfdebcd9fd2b2c2b000189a8772f4abf09012722e921` healthy uitgerold; readiness, favicon, transparant productlogo en CSS 0.3.11 leveren HTTP 200. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-222 op 2026-07-26:
|
||
|
||
- integrale visuele audit van tien hoofdroutes plus login/herstel vastgelegd in `docs/design/VISUAL_AUDIT_2026-07-26.md`, met geprioriteerde bevindingen, gevolgen en uitgevoerde roadmap;
|
||
- topbar en hoofdcontent delen één begrensd contentframe; het dagoverzicht toont maximaal vijf kernmatches en daalde op 1440 px van 2.399 naar 1.838 px;
|
||
- activiteitstijdlijn, ontwikkelaarscredit, secundaire klikdoelen en reduced-motion zijn verfijnd; CSS-imports gebruiken een gedeelde cacheversie zodat een release werkelijk alle stijllagen ververst;
|
||
- mobiele loginbotsing, foutieve oog-/demo-iconen en dubbele herstel-link zijn opgelost; VacatureRadar blijft productmerk en ITWorx.tech uitsluitend ontwikkelaarscredit;
|
||
- browsercontrole: 50 combinaties over tien routes en 390/768/1280/1920/3840 px, plus light-theme en login, zonder overflow of consolewaarschuwingen;
|
||
- volledige gate tweemaal groen met 268 geslaagde tests, 2 optionele skips en 83,45% branch-aware dekking; live image `sha256:7e1688db80241813a04e27038ef5e4afb64748868b6a97e353346f077be50b70` healthy uitgerold en readiness, favicon, productlogo, ontwikkelaarswordmark plus CSS 0.3.9 leveren HTTP 200. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-221 op 2026-07-26:
|
||
|
||
- merkarchitectuur gecorrigeerd: ITWorx.tech is de ontwikkelaar, VacatureRadar het zelfstandige productmerk;
|
||
- twee logo-concepten zijn met de ingebouwde beeldgeneratieflow verkend; de eenvoudigste radar-/kansrichting is handmatig vertaald naar een exact vijf-elementen-SVG met open cyan radarboog, scanstraal en emerald kanssignaal;
|
||
- sidebar, bovenbalk, login, favicon en Dockerman gebruiken het VacatureRadar-logo; de officiële ITWorx.tech-wordmark staat alleen als `Ontwikkeld door`-credit in secundaire zones;
|
||
- appmetadata heet opnieuw uitsluitend `VacatureRadar`; het ongebruikte ITWorx-appicoon is verwijderd en bron-/assetdocumentatie is bijgewerkt;
|
||
- browsermatrix op 390, 1280 en 1920 px toont correcte hiërarchie, geen overflow en een schone console; 29 gerichte regressies en de volledige gate zijn groen met 267 geslaagde tests, 2 optionele skips en 83,45% branch-aware dekking;
|
||
- live image `sha256:4184aeff33759b7a205637b0a0333b751b599141fe691a61965d2f1c56ca984a` via `unraid-itworx` uitgerold; container healthy, readiness HTTP 200 en favicon, productlogo, Dockermanicoon plus ITWorx-ontwikkelaarscredit live gevalideerd. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-220 op 2026-07-26:
|
||
|
||
- “eigen branding” is gecorrigeerd naar de door de eigenaar aangeleverde officiële ITWorx.tech-identiteit in plaats van een tijdelijke tekstuele Jens-signatuur;
|
||
- sidebar, bovenbalk, login en wachtwoordherstel gebruiken de transparante opgeschoonde ITWorx.tech-wordmark; VacatureRadar blijft herkenbaar als product en intelligence cockpit;
|
||
- favicon/app-icon (512×512) en Dockermanicoon (256×256) zijn exact uit het officiële cloud-check-symbool gecropt en Lanczos geschaald, zonder generatieve wijziging;
|
||
- merkassets zijn lokaal, transparant, geoptimaliseerd en met herkomst vastgelegd in `static/img/README.md`;
|
||
- browsercontrole op 390, 1280 en 1920 px toont correcte assets, geen overflow en een schone console; 29 gerichte regressies en de volledige gate zijn groen met 267 geslaagde tests, 2 optionele skips en 83,45% branch-aware dekking;
|
||
- de deployhelper negeert nu veilig verwijderde indexpaden; de twee vervangen SVG-assets zijn expliciet uit de gevalideerde remote sourceboom verwijderd en de uiteindelijke image bevat 147 in plaats van 149 static files;
|
||
- live image `sha256:daf34407813b37cdf2d0fc65a482ded65375f89eedd3f0144a8c0ce206d41565` via `unraid-itworx` uitgerold; container healthy, readiness HTTP 200 en wordmark-, app-icon- en Dockermanassets leveren `image/png` met HTTP 200. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-219 op 2026-07-26:
|
||
|
||
- de door gebruikersscreenshots aangetoonde ultrawide-uitlijningsfout is hersteld: directe hoofdsecties zijn niet langer afzonderlijk gecentreerd op 1860 px, maar delen één links verankerd grid tot 2800 px;
|
||
- op 3840 px beginnen heading, filters, explorer, systeemstatus, pipeline, KPI's en automationdetail op x=296; dezelfde gridbreedte schaalt zonder overflow naar 1920, 1280 en 390 px;
|
||
- de resultatenkolom en automationlograil hebben begrensde ultrawide-verhoudingen zodat primaire inhoud niet onnodig uitrekt;
|
||
- sidebar, bovenbalk, login en herstelpagina's gebruiken consistent `Personal intelligence by Jens` en `Jens Intelligence`, los van de accountgebruikersnaam;
|
||
- browsermatrix schoon zonder consolewaarschuwingen; gerichte regressies 23 tests groen en volledige gate groen met 267 geslaagde tests, 2 optionele skips en 83,45% branch-aware dekking;
|
||
- live image `sha256:86836f82cc543a7adb414e47b9667e9123bb9ceba10d629a53086273aaaae03f` via `unraid-itworx` uitgerold; container healthy, readiness HTTP 200 en de nieuwe branding plus 2800px-grid-CSS live gevalideerd. Volgende uitvoerbare taak: geen.
|
||
|
||
VR-218 op 2026-07-26:
|
||
|
||
- favicon, login en applicatieshell delen één verfijnd lokaal radarbeeldmerk met een sterker silhouet op klein formaat;
|
||
- de persoonlijke signatuur `Jens · private intelligence` is zichtbaar op publieke en ingelogde schermen en via `VACATURERADAR_OWNER_NAME` configureerbaar;
|
||
- de desktopbovenbalk toont eigenaar plus actuele routecontext; navigatie- en zoekfocus zijn verfijnd en de aanvullende context verdwijnt doelbewust op mobiel;
|
||
- gerichte regressies: Ruff groen, 29 tests geslaagd en 2 optionele skips; browsercontrole van dashboard, verkenner, profiel en login op 1280×850 en 390×844 zonder documentoverflow of consolewaarschuwingen;
|
||
- live image `sha256:5f25f00c9b7efb166587901ff39b02c56c98fb9946ddef0a4546a22f18dc0802` via `unraid-itworx` uitgerold; container healthy, readiness HTTP 200 en persoonlijke loginbranding plus SVG-favicon live gevalideerd;
|
||
- volledige gate groen met 266 geslaagde tests, 2 optionele skips en 83,45% branch-aware dekking; volgende uitvoerbare taak: geen, alleen bestaande externe blokkades en uitgestelde productkeuzes resteren.
|
||
|
||
VR-217 op 2026-07-26:
|
||
|
||
- de vermeende Unraid-authenticatiefout bleek een clientprofielkeuze: rechtstreeks IP gebruikte gebruiker `jens`, terwijl `unraid-itworx` correct `root`, `IdentitiesOnly` en de afzonderlijke deploysleutel selecteert;
|
||
- `scripts/deploy_unraid.sh` valideert de hostalias, synchroniseert uitsluitend niet-genegeerde projectbestanden en combineert build, containerhealth en readiness-smoke;
|
||
- het zoekprofiel heeft een lokale interactieve SVG-radar met scansweep, signalen, pointerparallax en statische reduced-motionvariant zonder fictieve data;
|
||
- browsercontrole op 1280×800 en 390×844 in licht en donker toont geen documentoverflow of consolefouten; de illustratie blijft decoratief en staat mobiel na de primaire actie;
|
||
- volledige gate groen met 265 tests, 2 optionele skips en 83,44% branch-aware dekking;
|
||
- live image `sha256:4d30e01e778777d5a2cde4339a9b2ad006edb25cae387293737420152d65069d` gebouwd en via `unraid-itworx` uitgerold; container healthy, readiness HTTP 200 en de nieuwe CSS-/JS-assets via LAN HTTP 200;
|
||
- volgende uitvoerbare taak: geen; alleen bestaande externe blokkades en uitgestelde productkeuzes resteren.
|
||
|
||
VR-216 op 2026-07-26:
|
||
|
||
- premium “calm intelligence”-laag toegevoegd met zachtere scheidingen, spaarzamer cyan, humane navigatietypografie en duidelijkere elevatie in donker en licht thema;
|
||
- dashboard-KPI's staan mobiel compact 2×2, filters vormen een responsieve commandobar, pipelinekolommen scrollen intern en het profiel gebruikt een brede compositie;
|
||
- de browsermatrix controleerde 1280×800 en 390×844 zonder documentoverflow; dashboard, verkenner, pipeline, profiel en beide thema's zijn visueel beoordeeld;
|
||
- een bestaande CSP-consolefout op login is opgelost door de interactie naar een lokale externe JavaScriptasset te verplaatsen en regressiegedekt;
|
||
- gerichte verificatie: Ruff groen, 22 tests geslaagd en 2 optionele Playwright-skips; volledige gate groen met 264 tests, 2 optionele skips en 83,44% branch-aware dekking;
|
||
- volgende uitvoerbare taak: geen; alleen bestaande externe blokkades en uitgestelde productkeuzes resteren.
|
||
|
||
VR-215 op 2026-07-26:
|
||
|
||
- Dockermans eigen implementatie bleek `[IP]`/`[PORT]` uitsluitend voor WebUI-links
|
||
te vervangen en niet vóór een icoondownload; het eerdere label kon daardoor de
|
||
cache niet vullen;
|
||
- het live icoonlabel gebruikt nu de server-side loopback-URL op hostpoort 1226;
|
||
- de Unraid-host bevat zowel de persistente als actuele RAM-cache
|
||
`VacatureRadar-icon.png`, en Dockermans gegenereerde `docker.json` verwijst naar
|
||
`/state/plugins/dynamix.docker.manager/images/VacatureRadar-icon.png`;
|
||
- de gerecreate container is healthy en de PNG-/readiness-smokes slagen;
|
||
- volgende uitvoerbare taak: geen; alleen bestaande externe blokkades en
|
||
uitgestelde productkeuzes resteren.
|
||
|
||
VR-214 op 2026-07-25:
|
||
|
||
- het ontbrekende Unraid/Dockerman-tegelicoon is hersteld met een lokale 256×256 PNG op
|
||
`/static/img/vacatureradar-docker.png`; de browserfavicon blijft de bestaande SVG;
|
||
- de volledige WebUI- en icoonlabels, PNG-signatuur en afmetingen zijn regressiegedekt;
|
||
- `collectstatic` kopieert de asset naar de productie-staticroot;
|
||
- de volledige `scripts/codex_verify.sh`-gate slaagde via Git Bash met 264 tests,
|
||
2 optionele Playwright-skips en 83,47% branch-aware codedekking;
|
||
- de Unraid-image is daarna live gebouwd als
|
||
`sha256:799825df1a343b6bee43695850454a5fdc977b5af3366077e6ac6aaeeb94f6f9`;
|
||
de gerecreate container was healthy, liveness/readiness slaagden en het
|
||
Dockerman-label wees naar de lokale PNG, die via LAN HTTP 200 met
|
||
`Content-Type: image/png` en 7.111 bytes leverde;
|
||
- er zijn tijdens de volledige lint-, systeem-, migratie-, test-, ledger- en
|
||
repositorycontrole geen andere releaseblokkerende regressies gevonden;
|
||
- volgende uitvoerbare taak: geen; alleen de bestaande externe blokkades en
|
||
uitgestelde productkeuzes resteren.
|
||
|
||
VR-209–213-verificatie op 2026-07-22:
|
||
|
||
- 248 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 84,40% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecheck, backlogvalidatie en repository-/documentvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- alle negen routes in de geïntegreerde browser gecontroleerd zonder consolewaarschuwingen, kapotte assets of documentoverflow;
|
||
- browsermatrix: 360×800, 390×844, 768×1024, 1024×768, 1280×800, 1440×900, 1920×1080 en 2560×1440;
|
||
- elf actuele beelden onder `artifacts/visual-validation/`; artifacts en Stitch-referenties blijven buiten de productieimage;
|
||
- volgende uitvoerbare taak: geen; alleen de bestaande externe credentials-/infrastructuurblokkades en uitgestelde productkeuzes resteren.
|
||
|
||
## Laatste geverifieerde baseline
|
||
|
||
Release-audit op 2026-07-21:
|
||
|
||
- 146 geslaagde tests en 2 lokaal overgeslagen Playwright-varianten; de HTML/a11y-fallback is geslaagd;
|
||
- 81,98% branch-aware codedekking over `apps` en `config`;
|
||
- Ruff en Django system checks geslaagd;
|
||
- geen ontbrekende migraties;
|
||
- backlog- en repositoryvalidatie geslaagd;
|
||
- de lockfile gebruikt publieke PyPI-bronnen in plaats van een niet-overdraagbare interne registry;
|
||
- releaseblokkers hersteld in template-rendering, JSON/BOM-verwerking, leases, feedback, dossierautorisatie, ATS-provenance, employer-resolutie en DNS-rebindcontrole;
|
||
- de productie-fetcher valideert het verbonden peer-IP, zodat legitieme CDN-DNS-rotatie bij DAF en Xplore Group niet als rebind wordt afgewezen terwijl private peers geblokkeerd blijven;
|
||
- een echte Dockerimagebuild op de Unraid-server, migratiecontrole en live LAN-smoke voor liveness, readiness, login en static assets zijn geslaagd;
|
||
- deploymenthardening voorkomt gelijktijdige migraties door worker/scheduler, schakelt de Gunicorn-controlsocket uit voor de read-only container en houdt de lokale healthcheckhost toegestaan.
|
||
|
||
VR-118-herverificatie op 2026-07-21:
|
||
|
||
- 146 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 82,00% branch-aware codedekking;
|
||
- Ruff, Django system check en migratiecontrole geslaagd;
|
||
- taakledger geldig met 36 taken: 28 done, 5 blocked-external, 3 deferred en 0 ready;
|
||
- geïntegreerde browservalidatie op zes viewports en beide thema's geslaagd.
|
||
|
||
VR-119-herverificatie op 2026-07-21:
|
||
|
||
- 146 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; uitgebreide HTML/a11y-fallback geslaagd;
|
||
- 82,02% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd;
|
||
- geïntegreerde browsercontrole op alle kernroutes, zes doelviewports, dark/light en mobiele drawer geslaagd zonder pagina-overflow of consolefouten;
|
||
- taakledger geldig met 37 taken: 29 done, 5 blocked-external, 3 deferred en 0 ready.
|
||
|
||
VR-120-herverificatie op 2026-07-21:
|
||
|
||
- 155 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback en in-app-browsercontrole geslaagd;
|
||
- 82,94% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via de volledige `scripts/codex_verify.sh`-gate;
|
||
- VITO leverde 37 vacatures in twee geslaagde cycli; Deliverect leverde 26 vacatures en verwerkte de tweede cyclus correct als HTTP 304;
|
||
- taakledger geldig met 38 taken: 30 done, 5 blocked-external, 3 deferred en 0 ready.
|
||
|
||
VR-121-herverificatie op 2026-07-22:
|
||
|
||
- 159 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 82,91% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- acht nieuwe bronnen passeerden elk twee livecycli zonder parserwarnings; de lokale inventaris telt 10 actieve bronnen en 145 actieve vacatures;
|
||
- in-app-browsercontrole bevestigde 10 bronkaarten, de VDAB/Indeed-alertingress, geen horizontale overflow en geen consolefouten;
|
||
- taakledger bevat 39 taken; na afronding van VR-121 blijven alleen 5 `blocked-external` en 3 `deferred` taken over.
|
||
|
||
VR-122-herverificatie op 2026-07-22:
|
||
|
||
- 164 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 83,55% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- de dagelijkse mailboxingang is configureerbaar, idempotent en begrensd; VDAB-mails krijgen expliciete provenance zonder platformlinks automatisch te volgen;
|
||
- Codex-browsercontrole bevestigde de VDAB-/API-uitleg, desktop en 390 px zonder horizontale overflow en zonder consolefouten;
|
||
- taakledger bevat 40 taken; na afronding van VR-122 blijven alleen 5 `blocked-external` en 3 `deferred` taken over.
|
||
|
||
VR-123-herverificatie op 2026-07-22:
|
||
|
||
- 178 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 83,56% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- VDAB en Indeed hebben afzonderlijke gebruikersgescopeerde mailboxkoppelingen met eigen provider, account, app-wachtwoord en interval van 5 tot 360 minuten;
|
||
- app-wachtwoorden zijn versleuteld met roteerbare MultiFernet-sleutels; schedulerleases, per-mailbox-idempotentie, SSRF-validatie en foutisolatie zijn regressiegedekt;
|
||
- Codex-browsercontrole bevestigde de platformmailboxformulieren, desktop en 390 px zonder horizontale overflow en zonder consolefouten;
|
||
- taakledger bevat 41 taken; na afronding van VR-123 blijven alleen 5 `blocked-external` en 3 `deferred` taken over.
|
||
|
||
VR-124-herverificatie op 2026-07-22:
|
||
|
||
- 192 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 83,61% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- platformmailboxen ondersteunen naast VDAB en Indeed ook LinkedIn, ictjob.be, Jobat, StepStone, EuroBrussels en BrusselsJobs met afzonderlijke accounts, intervallen en status;
|
||
- zes gesaneerde jobboardfixtures bewijzen platformprovenance en de afwijzing van externe, HTTP-, tracking-, account-, help-, privacy- en uitschrijflinks;
|
||
- alle acht jobboardgroepen staan op de directe-fetchdenylist; platformlogin en scraping blijven uitgesloten;
|
||
- Codex-browsercontrole bevestigde acht keuzelijstopties en alertkaarten, desktop en 390 px zonder horizontale overflow en zonder consolefouten;
|
||
- taakledger bevat 42 taken; na afronding van VR-124 blijven alleen 5 `blocked-external` en 3 `deferred` taken over.
|
||
|
||
VR-125-herverificatie op 2026-07-22:
|
||
|
||
- 200 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 83,90% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- EuroBrussels en BrusselsJobs zijn uit de configureerbare mailboxcatalogus verwijderd; Careerjet, Randstad en Robert Half gebruiken dezelfde versleutelde platformmailboxflow;
|
||
- Deliverect, YPTO, adesso, Monizze, Qover, SFEIR en ARHS zijn buiten de regionale scope uitgeschakeld en verborgen zonder vacaturehistoriek of provenance te wissen;
|
||
- ACA Group, Xplore Group, UHasselt, PXL en ZOL passeerden ieder twee livecycli zonder parserwarnings; de acht zichtbare actieve bronnen bevatten 162 vacature-aliassen;
|
||
- Codex-browsercontrole bevestigde exact acht regionale bronkaarten, negen platformkeuzes, geen Brusselse kaarten, desktop en 390 px zonder horizontale overflow en zonder consolefouten;
|
||
- taakledger bevat 43 taken; na afronding van VR-125 blijven alleen 5 `blocked-external` en 3 `deferred` taken over.
|
||
|
||
VR-126-herverificatie op 2026-07-22:
|
||
|
||
- 206 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 84,12% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- het actieve profiel bewaart postcode 2400 en 40 km; ontbrekende gelicenseerde coördinatendata blijft zichtbaar en wordt niet geschat;
|
||
- SCK CEN, Cipal Schaubroeck, VanRoey, NTX en Thomas More passeerden twee livecycli zonder parserwarnings; de dertien actieve bronnen bevatten 210 vacature-aliassen;
|
||
- Codex-browsercontrole bevestigde 13 bronkaarten, de Mol/40-km-status, desktop en 360 px zonder horizontale overflow en zonder consolefouten;
|
||
- taakledger bevat 44 taken; na afronding van VR-126 blijven alleen 5 `blocked-external` en 3 `deferred` taken over.
|
||
|
||
VR-201/VR-205-herverificatie op 2026-07-22:
|
||
|
||
- 218 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 84,46% branch-aware codedekking;
|
||
- Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- GeoNames België 2026-04-03 is onder CC BY 4.0 met checksums gedocumenteerd, 2.781 unieke invoerrijen zijn gevalideerd en 2400 Mol is opgelost naar het benaderende postcodecentrum 51.1919, 5.1166;
|
||
- Gemeente Mol en zeven bijkomende Kempen-werkgevers passeerden elk twee livecycli zonder parserwarnings; samen leverden zij 53 kaarten per cyclus;
|
||
- twaalf regionale werkgevers staan afzonderlijk als niet-scanbare waaklijst in de UI, ook wanneer zij momenteel geen vacature hebben;
|
||
- Codex-browsercontrole bevestigde 21 actieve bronnen, 12 waaklijstkaarten, de GeoNames-status, één `h1`, geen horizontale overflow op desktop of 390 px en geen consolefouten;
|
||
- de Unraid-deploy gebruikt expliciet Celery-queue `default`, overeenkomstig de queues die de productie-worker consumeert;
|
||
- de fetcher valideert het werkelijk verbonden publieke peer-IP, zodat legitieme CDN-rotatie van DAF en Xplore Group veilig wordt ondersteund;
|
||
- taakledger bevat 44 taken: 38 `done`, 3 `blocked-external`, 3 `deferred` en 0 `ready`.
|
||
|
||
VR-206-herverificatie op 2026-07-22:
|
||
|
||
- 225 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 84,53% branch-aware codedekking; Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- de standaardradar gebruikt een deterministische titelgestuurde IT-grens en laat verborgen/hard uitgesloten matches weg, met expliciete archiefopties voor volledige inspectie;
|
||
- de lokale auditinventaris telt 336 actieve records: 108 aantoonbare IT-titels, 228 gefilterde niet-IT-records en 102 kaarten in de persoonlijke radarselectie;
|
||
- de Stitch-cockpit benut maximaal 2240 px met tweekoloms matchfeeds op ultrawide; de zes kernroutes zijn handmatig gecontroleerd op 320, 390, 1024, 1440, 1920 en 2560 px zonder horizontale paginaoverflow;
|
||
- dark/light, gelabelde velden, mobiele drawer, score-/confidencecopy, archieffilters en inline bewaren zijn in de geïntegreerde browser gecontroleerd.
|
||
|
||
VR-207-herverificatie op 2026-07-22:
|
||
|
||
- 232 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 84,59% branch-aware codedekking; Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- het profiel bevat gegroepeerde field-/infrastructuur-, Microsoft/endpoint-, netwerk/security-, back-up/monitoring-, virtualisatie-, VoIP- en scriptingkeuzes plus een ervaringsband;
|
||
- de skillcomponent bereikt zijn maximum bij vier aangetroffen cv-skills en presenteert niet-vermelde voorkeurskills niet meer als tekort;
|
||
- ambigue field-/implementatietitels vereisen een onafhankelijk IT-contextsignaal en titeluitsluitingen respecteren woordgrenzen en eenvoudige Engelse meervouden;
|
||
- de lokale actieve auditprofielen zijn zonder persoonsgegevens in Git afgestemd op 10–14 jaar ervaring, 27 relevante roltitels en 46 cv-skills; na herscoring blijven 14 plausibele field-/infrastructuurkansen zichtbaar;
|
||
- geïntegreerde browsercontrole bevestigde de categorie-editor op ultrawide en 390 px, één mobiele categoriekolom, geldige profielselecties en geen horizontale paginaoverflow.
|
||
|
||
VR-208-herverificatie op 2026-07-22:
|
||
|
||
- 240 geslaagde tests en 2 optioneel overgeslagen pytest-Playwrightvarianten; HTML/a11y-fallback geslaagd;
|
||
- 84,73% branch-aware codedekking; Ruff, Django system check, migratiecontrole, taakledger en repositoryvalidatie geslaagd via `scripts/codex_verify.sh`;
|
||
- ervaringsduur en senioriteitslabels hebben geen invloed meer op deterministische score, AI-score, aanbeveling, uitsluiting of feedbacklearning; migratie 0006 ruimt het oude gewicht op;
|
||
- de persoonlijke Skillsradar analyseert alleen actieve IT-vacatures met een niet-verborgen score voor de actuele profielversie en laat records van uitsluitend uitgeschakelde bronnen buiten beschouwing;
|
||
- de lokale radar toont 9 onderzochte vacatures, 5 herkenbare vraagsignalen, 2 gedekte skills en 3 mogelijke leerkansen zonder een tekstsignaal als harde eis te presenteren;
|
||
- geïntegreerde browsercontrole bevestigde filters, 88 profielskillcheckboxes, één `h1`, lege console en geen horizontale paginaoverflow op 2560×1440, 1440×900 en 390×844.
|
||
|
||
## Deploymentstatus
|
||
|
||
- `main` is via de bestaande Gitea-SSH-sleutel naar `NuklearRabbit/VacatureRadar` gepusht.
|
||
- De applicatie draait op de Unraid-server via de geconfigureerde private host en poort `1226` als één Dockerman-container; Supervisor bewaakt intern PostgreSQL 17, Redis, web, worker en scheduler.
|
||
- De Dockerman-tegel gebruikt de lokale VacatureRadar-favicon en opent rechtstreeks de WebUI op poort 1226.
|
||
- De server-side `.env` heeft rechten `0600`; gegenereerde secrets zijn niet naar Git of logs gekopieerd.
|
||
- Historisch bewijs (2026-07-22, inmiddels vervangen): de self-hosted runner was
|
||
toen niet actief en die sessie gebruikte een directe SSH-deploy. Sinds 0.3.17
|
||
is uitsluitend de taggestuurde immutable registryrelease operationeel; een
|
||
gewone push naar `main` deployt bewust niet.
|
||
- Deze historische LAN-beperking is op 2026-07-29 opgeheven: het publieke domein, reverse proxy/TLS, `DJANGO_DEBUG=0` en secure cookies zijn live gevalideerd.
|
||
|
||
## Laatste uitgevoerde backlogtaak
|
||
|
||
- 2026-07-22: `VR-208` voltooid.
|
||
- Ervaringsjaren zijn alleen nog profielcontext; alle score-, recommendation-, concern-, evidence- en learninginvloed is verwijderd.
|
||
- Een gebruikersgescopeerde vraaganalyse brengt actuele skillfrequentie, bewijskwaliteit, profieldekking en niet-blokkerende leer-/bijscholingskansen in kaart.
|
||
- De profielcatalogus en nieuwe responsieve Skillsradar ondersteunen Microsoft, netwerk/security, monitoring/platform, ITSM en digitale adoptie met begeleide filters.
|
||
- Volgende taak: geen uitvoerbare `ready` taak; `VR-202`, `VR-203` en `VR-204` blijven `blocked-external`.
|
||
|
||
- 2026-07-22: `VR-207` voltooid.
|
||
- De twee aangeleverde cv's zijn visueel en tekstueel lokaal beoordeeld; alleen afgeleide technische profielkeuzes zijn in de lokale gebruikersdatabase opgeslagen.
|
||
- Relevante ervaring, rollen, skills en doelgerichte uitsluitingen zijn toegepast en alle 336 actieve vacatures zijn opnieuw gescoord voor beide lokale auditprofielen.
|
||
- De profiel- en scorelogica is regressiegedekt; afwezige cv-skills verlagen een breed profiel niet onbeperkt en worden niet als bewezen tekort getoond.
|
||
- Volgende taak: geen uitvoerbare `ready` taak; `VR-202`, `VR-203` en `VR-204` blijven `blocked-external`.
|
||
|
||
- 2026-07-22: `VR-206` voltooid.
|
||
- Niet-IT-vacatures en commercieel/recruitmentmisleidende IT-titels zijn standaard uit Vandaag en de vacaturefeed verwijderd zonder bronhistoriek te wissen.
|
||
- Matchsortering, radar-/archieffilters, score-evidence en gebruikersgescopeerde dashboardscores maken de dagelijkse selectie beslisbaar.
|
||
- De Stitch-dominante shell, feeds, details en context-rails schalen van 320 tot 2560 px en gebruiken op ultrawide twee resultaatkolommen.
|
||
- Een open redirect in feedbackterugkeer, 320 px bronoverflow en de ontbrekende faviconfallback zijn als auditbevindingen mee opgelost.
|
||
- Volgende taak: geen uitvoerbare `ready` taak; `VR-202`, `VR-203` en `VR-204` blijven `blocked-external`.
|
||
|
||
- 2026-07-22: `VR-201` en `VR-205` voltooid.
|
||
- De officiële GeoNames-postcodedataset lost postcode 2400 op naar Mol en levert indicatieve postcodecentrumafstanden; licentie, versie, reviewdatum en twee SHA-256-checksums zijn vastgelegd.
|
||
- Gemeente Mol, Ziekenhuis Geel, lokaal bestuur Geel, Stad Turnhout, Group Renotec, Ravago, Sanofi Geel en DAF Trucks Westerlo zijn na fixtures, negatieve routechecks en twee livecycli actief.
|
||
- Johnson & Johnson Beerse, Nike Laakdal, AZ Turnhout, Cartamundi, Nyrstar, Aurubis, Estée Lauder, Soudal, H.Essers, Cegeka, IOK en Jessa staan als interessante niet-scanbare werkgeverswaaklijst in de applicatie.
|
||
- HTTP, robots en IMAP gebruiken een strikte gepinde CA-bundel; de eerdere lokale Windows-CA-fout bij Gemeente Mol en Ziekenhuis Geel was geen geldige reden voor een bypass.
|
||
- Volgende taak: geen uitvoerbare `ready` taak; alleen `VR-202`, `VR-203` en `VR-204` blijven `blocked-external` voor productiecredentials/-infrastructuur.
|
||
|
||
- 2026-07-22: `VR-126` voltooid.
|
||
- Het actieve lokale profiel bewaart postcode 2400 en een straal van 40 km; gemeente en coördinaten blijven leeg tot de gelicenseerde geodata uit `VR-205` beschikbaar is.
|
||
- De catalogus is herankerd op Mol en uitgebreid met SCK CEN, Cipal Schaubroeck, VanRoey, NTX/Netropolix en Thomas More.
|
||
- Exacte host-, pad-, plaats- en CVWarehouse-GUID-filters weigeren off-domain, andere vestigingen en kandidaat-/sollicitatieroutes.
|
||
- Gemeente Mol en Ziekenhuis Geel zijn niet geactiveerd wegens falende TLS-certificaatvalidatie; er is geen bypass toegepast.
|
||
- Volgende taak: geen uitvoerbare `ready` taak; `VR-205` blijft `blocked-external` voor de gelicenseerde geocodedataset en `VR-202` voor productie-mailboxcredentials.
|
||
|
||
- 2026-07-22: `VR-125` voltooid.
|
||
- De regionale catalogus gebruikt voorlopig Hasselt-Genk als omkeerbaar centrum voor de indicatieve 40-km-selectie omdat het actieve profiel nog geen postcode bevat; de profielafstand wordt exact zodra die postcode is ingevuld.
|
||
- Careerjet, Randstad en Robert Half vervangen de expliciete Brusselse nicheboards in de platformmailboxflow; alle brede jobboards blijven op de directe-fetchdenylist.
|
||
- ACA Group, Xplore Group, Universiteit Hasselt, Hogeschool PXL en Ziekenhuis Oost-Limburg worden via host- en padgebonden publieke lijstparsers ingelezen; alle vijf slaagden tweemaal live zonder warnings.
|
||
- Zeven werkgeversbronnen buiten de regionale scope zijn gedeactiveerd en verborgen, maar hun historische aliassen, documenten en provenance blijven intact.
|
||
- Volgende taak: geen uitvoerbare `ready` taak; `VR-201` en `VR-202` blijven `blocked-external` voor persoonlijke postcode-/bronreview en productiecredentials.
|
||
|
||
- 2026-07-22: `VR-124` voltooid.
|
||
- LinkedIn, ictjob.be, Jobat, StepStone, EuroBrussels en BrusselsJobs zijn toegevoegd aan dezelfde versleutelde platformmailboxflow als VDAB en Indeed.
|
||
- De bronpagina toont per jobboard een actuele officiële alertingang; ieder platform behoudt een eigen mailbox, interval, status, pauze- en syncactie.
|
||
- De mailparser accepteert per koppeling uitsluitend gelabelde HTTPS-links op het gekozen jobboarddomein en verwerpt externe en administratieve links.
|
||
- Alle brede jobboards blijven directe-fetchdenylistbronnen; VacatureRadar logt alleen in op het mailboxaccount en nooit op een jobboard.
|
||
- Volgende taak: `VR-202` blijft `blocked-external` voor productieconfiguratie en live validatie met de gewenste afzonderlijke alertmailboxen.
|
||
|
||
- 2026-07-22: `VR-123` voltooid.
|
||
- Een ingelogde gebruiker kan VDAB en Indeed elk aan een afzonderlijke Gmail-, Outlook- of aangepaste IMAP-mailbox koppelen, wijzigen, pauzeren en direct synchroniseren.
|
||
- Iedere koppeling heeft een eigen interval van 5 minuten tot 6 uur; de scheduler verwerkt alleen verschuldigde mailboxen met leases en foutisolatie.
|
||
- App-wachtwoorden worden nooit teruggetoond en zijn versleuteld met afzonderlijke roteerbare sleutels; mailboxmutaties zijn login-, gebruikersscope- en CSRF-beveiligd.
|
||
- Mailimport bewaart platform- en mailboxprovenance en is idempotent per mailbox en Message-ID; directe platformfetch en platformlogin blijven uitgesloten.
|
||
- Volgende taak: `VR-202` blijft `blocked-external` voor productieconfiguratie en live validatie met de afzonderlijke VDAB- en Indeed-mailboxaccounts.
|
||
|
||
- 2026-07-22: `VR-122` voltooid.
|
||
- Officiële VDAB-jobalerts worden standaard dagelijks om 06:15 Europe/Brussels via de dedicated IMAP-mailbox verwerkt; planning en batchlimieten zijn configureerbaar.
|
||
- De mailadapter bewaart VDAB-provenance, replay blijft idempotent en een oversized of fout bericht stopt de rest van de batch niet.
|
||
- De bronpagina toont mailboxstatus, laatste VDAB-import, een beveiligde handmatige inplanknop en de contractueel afgeschermde officiële VDAB Vacature API als afzonderlijke route.
|
||
- Directe VDAB-scraping, platformlogin en niet-goedgekeurde API-toegang blijven geblokkeerd.
|
||
- Volgende taak: `VR-202` blijft `blocked-external` voor het invullen en live valideren van mailbox-/SMTP-credentials.
|
||
|
||
- 2026-07-22: `VR-121` voltooid.
|
||
- Corda Campus, RPM Europe Logistics, YPTO, adesso Belgium, Monizze, Qover, SFEIR Belgium en ARHS Belgium zijn na actuele review en twee succesvolle cycli geactiveerd.
|
||
- De catalogus omvat nu regionale Hasselt/Genk-dekking en aanvullende Belgische IT-werkgevers in Brussel en Leuven.
|
||
- Bronnen op gedeelde ATS-hosts worden uniek per exacte feed-URL bewaard; per-origin leases en rate limits blijven gezamenlijk gelden.
|
||
- De Corda-adapter bewaart werkgever en titel van publieke jobkaarten en weigert off-domain links.
|
||
- VDAB en Indeed blijven op de directe-fetchdenylist en worden in de UI via officiële e-mailalerts naar de bestaande beveiligde mailboxingress geleid.
|
||
- Volgende taak: `VR-201` blijft `blocked-external` voor verdere persoonlijke bronkeuzes en periodieke menselijke voorwaardenreview.
|
||
|
||
- 2026-07-21: `VR-120` voltooid.
|
||
- Thuislocatie is teruggebracht tot een viercijferige postcode; gemeente en coördinaten worden alleen uit lokale geodata afgeleid.
|
||
- Alle profieltaxonomie gebruikt begeleide checkboxgroepen met dynamisch behoud van bestaande waarden.
|
||
- VITO en Deliverect zijn na actuele policy-/robotsreview en twee livecycli geactiveerd; samen leverden ze 63 actuele vacaturealiases.
|
||
- Recruitee- en Leverresponsevormen, employeridentiteit, direct-employerstatus, 304-inventaristelling en robotsredirectvalidatie zijn functioneel hersteld.
|
||
- De fixturebron is uit het normale bronoverzicht verborgen; browserhandoff staat op de vernieuwde profieleditor.
|
||
- Volgende taak: `VR-201` blijft `blocked-external` voor verdere persoonlijke werkgevers- en overheidsdekking.
|
||
|
||
- 2026-07-21: `VR-119` voltooid.
|
||
- Stitch bepaalt nu de dominante schermcompositie: utilityzoeker, brede matchfeed, vaste radar-/actierails, dichte resultaatkaarten, intelligence-strip, kanban, profielpreview, compacte bronimport en echte systeemtelemetrie.
|
||
- Vacaturelijstscores worden gebruikersgescopeerd uit de laatste `ScoreRun` geannoteerd; er is geen fictieve frontenddata toegevoegd.
|
||
- Nederlandstalige profielvelden, lokale favicon en aanvullende HTML/a11y-regressieasserties zijn toegevoegd.
|
||
- Browserbewijs en exact verificatierapport staan onder `docs/design/validation/` met prefix `vr119-`.
|
||
- Volgende taak: `VR-201` (`blocked-external`).
|
||
|
||
- 2026-07-21: `VR-118` voltooid.
|
||
- Alle kernroutes delen nu één responsive Intelligence Cockpit-shell met lokale SVG-iconen en CSP-veilige assets.
|
||
- Stitch-dark en een volwaardige light variant zijn gekoppeld aan echte Django-data; externe quick apply, nepmetrics en onbewezen intelligence zijn bewust geweerd.
|
||
- Browserflow valideerde vacature → sollicitatiedossier → pipeline, bron-disclosures, themawissel en viewports 1440×900, 1280×800, 1024×768, 768×1024, 390×844 en 360×800 zonder horizontale overflow.
|
||
- Stitch-bronnen, integratieplan en screenshots staan onder `docs/design/` en zijn uit de productiecontainer gesloten.
|
||
- Volgende taak: `VR-201` (`blocked-external`).
|
||
|
||
- 2026-07-21: `VR-117` voltooid.
|
||
- Productiereleasecontrole toegevoegd met `scripts/release_verify.sh`, inclusief smoke, backup/restore-smoke en artifactbundel.
|
||
- Changelog, traceability en Unraid-runbook samengekoppeld aan het releasepad.
|
||
- Volgende taak: `VR-201` (blocked-external).
|
||
|
||
- 2026-07-21: `VR-116` voltooid.
|
||
- Synthetische testset (`fixtures/benchmark/quality_benchmark.json`) en benchmarkspec (`docs/quality/BENCHMARKS.md`) toegevoegd.
|
||
- `tests/benchmark/test_benchmark.py` bevat smokecontrole voor dataset load, helperlogica en rapportschema.
|
||
- Geen UI/UITA-aanpassingen uitgevoerd (expliciet buiten scope, extern met Stitch).
|
||
|
||
- 2026-07-21: `VR-108` voltooid.
|
||
- Resolutie naar oorspronkelijke werkgever geïmplementeerd met deterministische matcher voor recruiter/ATS-bronnen.
|
||
- Titel, locatie, employer-naam, domein en canonical metadata leveren evidence-rijke beslissingen op; conflicten leiden naar review i.p.v. auto-merge.
|
||
- Bij directe resolutie wordt `canonical_url` naar de directe bron gekopieerd terwijl alias/provenance behouden blijft.
|
||
- Unittests en integratietest toegevoegd voor resolvergedrag en pipeline-resolutie.
|
||
- 2026-07-21: `VR-109` voltooid.
|
||
- AI-analyse geïntegreerd als optionele scorecomponent met caching op `content_hash + model + prompt + schema`.
|
||
- Uitgebreide JSON-schema validatie, evidencecontrole en foutstatussen met deterministische fallback.
|
||
- Golden evaluatieset met validatiescenario's (disabled, valid, malformed, timeout, prompt-injection) toegevoegd in `fixtures/ai/evaluation_set.json`.
|
||
- Scoringsmetadata uitgebreid met AI-status, errorcategorie en weging voor uitlegbaarheid.
|
||
- 2026-07-21: `VR-110` voltooid.
|
||
- Feedbackleren standaard uit met opt-in, per-feature sampledrempel en metadata logging.
|
||
- Verbergreasons worden geclassificeerd als niet-learn (titel/afstand/werkvorm) of leerrijp.
|
||
- Positieve feedback groeit alleen na minimale herhaling per feature; negatieve feedback past gewichten terug indien leerrijp.
|
||
- Offline evaluatiescript toegevoegd: `scripts/feedback_learning_report.py`.
|
||
- UI-presentatie/reset weergave staat open voor externe afhandeling (Stitch).
|
||
- Volgende taak: `VR-111`.
|
||
|
||
- 2026-07-21: `VR-111` voltooid.
|
||
- Reminder-outbox toegevoegd voor sluitingsdatum, opvolgdatum en uitzonderlijk sterke nieuwe matches.
|
||
- Topmatchherinnering is per profiel in- of uit te schakelen en vereist score/confidence/drempel.
|
||
- Herinneringen hebben stabiele event keys, respecteren quiet hours en gebruiken profielweekdagen.
|
||
- Integratietests toegevoegd voor idempotentie, stille ontvangers, follow-up werkdagen, DST en rustige uren.
|
||
- Volgende taak: `VR-112`.
|
||
|
||
- 2026-07-21: `VR-112` voltooid.
|
||
- Bronhealth en observability toegevoegd met rolling metrics, parserdriftdetectie en automatische quarantaine.
|
||
- Raw cleanup bewaart gequarantaineerde documenten en kanaryherstel verloopt via trialpad.
|
||
- Dagelijkse taken gepland voor source-health evaluatie, canaryherstel en geautomatiseerde raw cleanup.
|
||
- Integratietests toegevoegd voor tijdelijke fouten, policyfouten, parserdrift, canaryherstel en raw cleanup.
|
||
- Volgende taak: `VR-113`.
|
||
|
||
- 2026-07-21: `VR-113` voltooid.
|
||
- Sollicitatiedossiers bevriezen nu een gesanitiseerde snapshot met bronlinks, status/contact/notities en timeline-events.
|
||
- Export bevat dossier JSON, timeline CSV en printbare HTML zonder externe assets.
|
||
- Dossierexport en dossierverwijdering zijn gebruiker-scoped en idempotent.
|
||
- Integratietests toegevoegd voor snapshot, export, print, timeline en cross-user-afscherming.
|
||
- Volgende taak: `VR-114`.
|
||
|
||
- 2026-07-21: `VR-114` voltooid.
|
||
- Browser-e2e toegevoegd voor login, dashboard, lijst/detailfilter, profielbewerkingen,
|
||
vier feedbackacties, sollicitatiedossierbewerking en handmatige tekstimport.
|
||
- Accessibilitycontrole toegevoegd met Playwrightpad (desktop + 360px viewport) en fallback HTML-a11yprobe
|
||
wanneer browser niet beschikbaar is.
|
||
- Screenshots worden vastgelegd bij falen binnen e2e-run.
|
||
- Volgende taak: `VR-115`.
|
||
|
||
- 2026-07-21: `VR-115` voltooid.
|
||
- Productie-hardening toegevoegd met non-root/read-only containerinstellingen, CI-secret- en kwetsbaarheidsscans,
|
||
production settings validatie, DNS-rebindcontrole in fetcher en rate limiting op login/manual import.
|
||
- Nieuwe tests toegevoegd voor `settings`-validatie, rate limiteren, login-manual-import blokkades
|
||
en DNS-rebinddetectie.
|
||
- Geen UI-wijzigingen toegevoegd (manueel afhandelen bevestigd).
|
||
- Volgende taak: `VR-116`.
|
||
|
||
- 2026-07-21: `VR-107` voltooid.
|
||
- Handmatige URL- en tekstimport toegevoegd met CSRF-beveiligde POST-flow en GET-prefill.
|
||
- URL-import hergebruikt bestaande policy/SSRF-checks en fetchpad; paste-import gebruikt een lokale synthetische HTML-payload zonder extern fetch.
|
||
- Bronlijst bevat bookmarklet, resultaatpanel met created/duplicate/warnings en links naar vacaturedetail.
|
||
- Unit- en integrationtests toegevoegd voor URL-flow, paste-flow, denylist en paste-limiet.
|
||
|
||
- 2026-07-21: `VR-105` voltooid.
|
||
- Haversine-afstand berekent nu op basis van geocoderingscoördinaten met confidencegedrag voor exacte afstand.
|
||
- Reistijdschatting toegevoegd als expliciete, conservatieve offline-schatting en gelabeld als inferentie.
|
||
- Harde afstandsuitsluiting blijft strikt, met optionele harde reistijdbeperking via `hard_rules["max_commute_minutes"]`.
|
||
- Bij geocodecache-import worden getroffen actieve vacatures opnieuw gescoord.
|
||
- Score-evidence verrijkt met afstands- en reistijdmetadata.
|
||
|
||
- 2026-07-21: `VR-103` voltooid.
|
||
- Geïmplementeerd: databaseleaseclaim (`SourceLease` + `SourceOriginState`) voor concurrency- en crash-veiligheid.
|
||
- Per-origin intervalcoördinatie, backoff inclusief 429/Retry-After en jitter op successen.
|
||
- Fetcher stuurt expliciete foutcategorieën voor 429, timeout en andere netwerkfouten.
|
||
|
||
- 2026-07-21: `VR-101` voltooid.
|
||
- Inrichting van bronontdekking vanuit HTML/sitemap/feed/e-mail, inclusief JSON-LD en feedlinkdetectie.
|
||
- Persistente kandidaatservice met provenance in `Source.metadata["discovery"]` en idempotent gedrag.
|
||
- Bulk-safe kandidaatacties `approve_to_trial` en `dismiss` in bronlijst-UI.
|
||
- Management command `discover_sources`.
|
||
- Fixtures toegevoegd voor HTML, sitemap index/urlset, feed en e-mail.
|
||
|
||
Een toekomstige agent moet altijd de actuele waarheid opnieuw bepalen met:
|
||
|
||
```bash
|
||
./scripts/codex_verify.sh
|
||
```
|
||
|
||
## Nog te bouwen
|
||
|
||
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;
|
||
|
||
## Bekende verificatiebeperking van de aangeleverde basis
|
||
|
||
De Pythonapplicatie, Dockerimage en PostgreSQL/Redis/Unraid-stack zijn
|
||
geverifieerd. De verplichte Playwright-gate draait lokaal met Chromium; VR-119 is
|
||
aanvullend met de geïntegreerde browser op alle kernroutes uitgevoerd, VR-120 op
|
||
het begeleide profiel en de live vacaturefeed en VR-124 op de acht
|
||
platformmailboxen en alertkaarten. Publieke HTTPS, proxyheaders en de gastflow
|
||
zijn op 2026-07-29 live geaccepteerd en vastgelegd in
|
||
`docs/audit/FINAL_ACCEPTANCE.md`.
|
||
|
||
## Hervatten
|
||
|
||
```bash
|
||
./scripts/codex_verify.sh
|
||
python scripts/backlog.py next
|
||
```
|
||
|
||
Werk daarna exact volgens `docs/ai/AUTONOMOUS_EXECUTION_PROTOCOL.md`.
|