Files
VacatureRadar/docs/ai/PROJECT_STATE.md
T
Jens f36af616a1
deploy / deploy (push) Canceled after 0s
docs: record visual audit deployment evidence
2026-07-26 05:06:05 +02:00

43 KiB
Raw Blame History

Projectstatus

  • Laatst bijgewerkt: 2026-07-26
  • Repositoryversie: 0.3.0 volledige Stitch Intelligence Cockpit
  • 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 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-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-209213-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 1014 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 http://192.168.10.150: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.
  • De self-hosted Gitea Actions-runner is niet actief. Deze sessie gebruikte daarom een directe, commitgebonden SSH-deploy; push-to-deploy vereist nog runnerherstel/registratie.
  • De huidige uitrol is alleen geschikt voor het beheerde LAN. Publieke productie vereist eerst een gekozen domein, reverse proxy/TLS en DJANGO_DEBUG=0 met secure cookies.

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:

./scripts/codex_verify.sh

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.

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;
  • Unraid-domein, DNS, TLS en reverse proxy;
  • containerregistry en credentials;
  • actieve/voor deze repository geregistreerde Gitea Actions-runner;

Bekende verificatiebeperking van de aangeleverde basis

De Pythonapplicatie, Dockerimage en PostgreSQL/Redis/Unraid-stack zijn geverifieerd. De optionele pytest-Playwrightvarianten vallen lokaal terug op de HTML/a11y-probe; 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. Een publieke HTTPS-smoke blijft afhankelijk van domein-, DNS- en reverse-proxyconfiguratie.

Hervatten

./scripts/codex_verify.sh
python scripts/backlog.py next

Werk daarna exact volgens docs/ai/AUTONOMOUS_EXECUTION_PROTOCOL.md.