Product

Changelog

Wat er wanneer is gebouwd, gemeten en veranderd. Nieuwste eerst.

  1. 0.4.0, 16 oktober 2026 (nacht): beheer zonder .env, meldingen, auditlog, versie en release in een keer

    • Tenants en tokens zonder .env en zonder herstart: <DIAG_DATA_DIR>/tenants.json met alleen sha256-hashes, beheerd via de pagina /admin (eigen rol en cookie, DIAG_ADMIN_TOKEN) of python -m server.admin (tenant add|list, token add|revoke, webhook set); een token wordt een keer getoond; intrekken werkt meteen, ook voor een lopende browsersessie (docs/BEHEER.md 2 en 3). DIAG_TOKENS en DIAG_RUNNER_TOKENS blijven ernaast gelden.
    • /devices toont de agentversie (uit de User-Agent van runner 0.3.x) en de badges online, stil, offline en nooit gezien (DIAG_OFFLINE_MINUTES, standaard 15); meldingenstrook op / met apparaten offline, mislukte zaken en kennisfeedbronnen die langer dan 48 uur falen; webhook per tenant (Teams of Slack) voor offline en weer online, met strikte URL-regels en zonder doorverwijzingen (docs/BEHEER.md 4 en 5).
    • Auditlog per tenant (audit.jsonl) en beheerlog (admin.jsonl), append-only, nooit een token; pagina's /audit en /admin/audit met filters (docs/BEHEER.md 6).
    • VERSION in de projectmap (kopie server/VERSION voor het release-archief); /healthz en de voettekst tonen de versie; deploy/release.ps1 doet tests, agent\build.ps1, deploy\build_site.py, de kopie van VERSION en make_release.ps1 in een keer (docs/BEHEER.md 7).
    • Nieuwe modules server/tenants.py, server/admin.py, server/alerts.py en server/audit.py, sjablonen admin.html, admin_login.html en audit.html; tests tests/test_admin.py en tests/test_alerts_audit.py; de suite telt 567 tests.
    • Zesde ronde van de zaak, in uitvoering op het moment van schrijven: knowledge_refs in de conclusie (gecontroleerd tegen de bekende problemen van de zaak) en verstorende acties die niet als diagnostiek gelden; meting en handleiding volgen in docs/TROUBLESHOOT.md.
    • Nog niet op de pilotserver: https://diagnose.rektpump.com/healthz geeft geen versie en /admin en /audit geven 404 (gecontroleerd in de nacht van 16 op 17 oktober); de server draait de versie van 16 oktober overdag. Uitrollen is aan Fanus (deploy/release.ps1, daarna de scp- en ssh-regels uit docs/DEPLOY_SERVER.md 3.0).
    • Documentatie: docs/BEHEER.md nieuw; docs/INSTALL_KLANT.md herschreven als onboarding van een klant van tenant tot offboarding, met checklist; README.md kreeg de paragraaf "Pakket" met alle onderdelen, versies en vindplaatsen; dit bestand kreeg een regel per dag van 10 tot 16 oktober.
  2. 0.3.2, 16 oktober 2026 (nacht): Diagnose Agent als MSI en de website opnieuw ontworpen

    • Nieuw: agent/ met het WiX-pakket "Diagnose Agent" (Package.wxs, Nederlandse Package.nl-NL.wxl, DiagnoseAgent.wixproj), build.ps1 (bouwt dist/DiagnoseAgent-<versie>.msi met .sha256 en .json, kopieert naar site/downloads/) en verify.ps1 (controle zonder administrator: administratieve installatie, bytevergelijking, tabellen via COM). Per machine, x64, UpgradeCode vast, MajorUpgrade, eigenschappen SERVER, TOKEN (verborgen), POLLSECONDS, NOAUTOUPDATE, UPDATETHUMBPRINT; custom actions deferred zonder impersonatie met HideTarget, rollback bij een mislukte eerste installatie, geen uninstall tijdens een upgrade (docs/AGENT_MSI.md).
    • runner/install-runner-task.ps1: nieuwe opties -RunnerSource (alias van -RunnerPath), -Quiet, -KeepExistingToken en -LogPath; -LogPath volgt geen reparse point; gedrag zonder die opties ongewijzigd.
    • Review van het pakket later die nacht: CA_RollbackAgent draait niet meer tijdens een upgrade (een mislukte upgrade liet anders de teruggezette vorige versie zonder taak en token achter); NOAUTOUPDATE=0 telt als weggelaten; tests/test_agent_msi.py (11 tests) en agent/verify.ps1 (63 controles) bewaken beide condities; het MSI is opnieuw gebouwd (sha256 6d1df58d..., nieuwe ProductCode). Stubsuite: de -RunnerSource-controles draaien nu echt (de alias werd niet herkend), 197 controles.
    • deploy/make_release.ps1: de mappen agent en dist gaan mee in de release (zonder agent/obj en agent/bin); de sha256 van het MSI wordt geprint.
    • Toolchain op de ontwikkel-pc, zonder administrator: .NET SDK 8.0.426 in .tools/dotnet, WiX 5.0.2 als dotnet-tool. WiX 7.0.0 is bewust niet gebruikt: die eist het accepteren van de Open Source Maintenance Fee-EULA.
    • Nog te doen: de eenmalige installatie als administrator (docs/AGENT_MSI.md paragraaf 11) en het signeren van het pakket.
    • Website ai.rektpump.com opnieuw ontworpen (deploy/build_site.py plus deploy/site_assets/): een visueel systeem met tokens, licht en donker met schakelaar, hero met een CSS-nabootsing van de goedkeuringskaart, de flow in zes stappen, nieuwe pagina's agent.html, troubleshooting.html, kennisfeed.html, beveiliging.html en changelog.html (uit dit bestand), tools/diagnose-agent.html met de download en sha256 uit site/downloads, og-afbeelding als PNG gerenderd met Edge; 22 pagina's, geen externe scripts, geen inline styles; mobiel op 375 px zonder overloop, contrast gecontroleerd.
  3. 0.3.2, 16 oktober 2026 (dag): productlaag, runner 0.3.0 tot 0.3.2, troubleshooting in vijf rondes, kennisfeed

    • Productlaag in de viewer: apparaatpagina /devices/<apparaat> met "Nieuwe diagnose" (verzamelopdracht voor de runner, zonder RMM), /devices met runnerstatus, /cases met alle zaken van de tenant, tellers op de startpagina, "Leesstappen automatisch uitvoeren" per zaak en de platte ticketnotitie /ts/<zaak>/notitie.txt (docs/PRODUCT.md, docs/TROUBLESHOOT.md 12).
    • Diagnose-runner 0.3.0: verzamelopdrachten (kind=collect, downloadt collect.ps1 met sha256-controle en laat de collector met het eigen runnertoken uploaden), auto-update vanaf de server, hints mode en ran_as voor de apparaatpagina; collect.ps1 0.3.1 kent -JobId (docs/RUNNER.md 13).
    • Runner 0.3.1 na de adversarial review: nooit een lagere versie, -UpdateThumbprint met vastgepinde Authenticode-vingerafdruk, beide hashes in het log, -SelfTest en terugdraaien naar .bak bij een configuratiefout vlak na een update, RestartCount 99, velden die met een streepje beginnen als -Parameter:"waarde", [0-9] in de job-id-controle; collect.ps1 0.3.2 (docs/RUNNER.md 14).
    • Runner 0.3.2: geplande taak met MultipleInstances IgnoreNew (PowerShell 5.1 weigert StopExisting) en een eigen herstart elke 24 uur met exitcode 3; de server serveert /diagnose-runner.ps1 en /install-runner-task.ps1 met sha256.
    • Reparaties aan de server na de review van de productlaag: koppeling van upload aan opdracht atomair onder de wachtrijlock, een resultaat per opdracht, eigen limiter voor uploads los van /login, tokens uit DIAG_TOKENS, DIAG_RUNNER_TOKENS en TRMM_API_KEY geredigeerd uit elke uitvoer en notitie, meta.uploaded_by (docs/TROUBLESHOOT.md 12).
    • Troubleshooting, eerste en tweede ronde: vragenpoort (hooguit DIAG_TS_MAX_QUESTIONS 3 per zaak, nooit twee achter elkaar, waarom_geen_leesactie verplicht), intakeveld bij de start, klachtgerichte instructies (begin bij de klacht, leeswijzer per soort klacht, geen instructie in een vraag), conclusie-duwtje vanaf stap 8, herhaalpoort op genormaliseerde parameters, vrije logboeknaam in eventlog_recent; gemeten als baseline, nieuw en nieuw2 (docs/TROUBLESHOOT.md 13).
    • Derde ronde: conclusieregel ("onbekend voor <klacht>" met context apart), tegenspraak in de samenvatting, inhoudspoort op vragen (geen instructie, test of toestemmingsvraag), hooguit een vraag na "weet ik niet", schedule_reboot alleen als test van de klacht, leesfamilies en de actie console_user_connections; gemeten als nieuw3 en uitgerold naar de pilot (docs/TROUBLESHOOT_DESIGN.md 12).
    • Vierde ronde: herkansing bij een afgekapt antwoord (DIAG_TS_MAX_OUTPUT_TOKENS 8000, tweede poging met het dubbele), vraag-duplicaatpoort en datumpoort op kernelgebeurtenissen; gemeten als nieuw4, 438 tests (docs/TROUBLESHOOT_DESIGN.md 13).
    • Vijfde ronde: de kennisfeed in de zaak (hooguit vijf bekende problemen bij de start gekoppeld, blok in de context en kaart op de zaakpagina), overlapcoefficient in de duplicaatpoort, onderwerppoort na "weet ik niet", prestatiepoort bij traag, klachtvensterpoort; gemeten als nieuw5 op een verse bundel, 504 tests drie keer groen (docs/TROUBLESHOOT_DESIGN.md 14, docs/KENNISFEED.md 8).
    • Kennisfeed: Windows release health, Microsoft 365 Apps, NCSC-NL en CISA KEV in knowledge/, deterministisch gematcht op KB's, versie, software en klacht; blok <bekende_problemen> in de prompt van de diagnose, kaart op de runpagina, /knowledge/status; eerste vulling 405 items uit 4 bronnen, dagelijks bijgewerkt op de server met knowledge-update.timer (docs/KENNISFEED.md).
    • Lokaal model onderzocht en gemeten als alternatief voor de API: analyze.py --provider openai-compatible, bench_local.py, deploy/llama-server.ps1 (docs/LOKAAL_MODEL.md, docs/BENCHMARK_LOKAAL.md).
    • End-to-end-test van de hele keten op deze pc (runs/product_e2e): verzamelopdracht, upload met het runnertoken, diagnose $0,0142 in 41,5 s, zaak van tien stappen $0,0514, notitie; de runner draaide daarbij als gewone gebruiker, dus de geplande taak als SYSTEM is nog niet bewezen.
  4. 15 oktober 2026: troubleshooting met toezicht, red-team en beveiligingsreview, marktonderzoek

    • Zaken: de AI stelt per beurt een stap voor uit een vaste catalogus van PowerShell-acties, de technicus keurt goed of wijst af met reden, de uitvoer gaat terug; executors manual, local en tactical; een zaak is begrensd in stappen en geld en staat als transcript op schijf (docs/TROUBLESHOOT.md, docs/TROUBLESHOOT_DESIGN.md).
    • Vier lagen in het veiligheidsmodel: alleen de catalogus, validatie door de server, menselijke goedkeuring gebonden aan stapnummer en hash, uitvoer is data (nonce-tags, neutralize).
    • Red-team-sessies op de zaak en de ingest, met reparaties: Tactical agent_id gebonden aan de tenant, auto_ok per actie, kostenplafond met bekende prijs, limieten per run, tenant en dag, deny-list als vangnet, Unicode-aanhalingstekens geweigerd (runs/redteam-20261015*, runs/reviewfix-20261015T212638Z, docs/TROUBLESHOOT_DESIGN.md 11).
    • End-to-end-test met het echte model op deze pc (runs/ts_e2e): printerzaak van acht stappen, $0,041, de voorgestelde herstart van de Spooler bewust afgewezen.
    • One-shot-analyses sturen store=false naar OpenAI, zodat prompt en antwoord niet als opvraagbaar object bij de leverancier blijven staan; nginx.conf.example kreeg client_max_body_size 1m voor /ts/.
    • Marktonderzoek naar RMM-tooling en AI-servicedeskproducten (docs/MARKTONDERZOEK.md); docs/TACTICAL_RMM.md bijgewerkt.
  5. 13 oktober 2026: server live op diagnose.rektpump.com

    • Ingest-server en viewer uitgerold op de eigen VPS met deploy/install.sh (systemd, nginx, Let's Encrypt, firewall), volgens de checklist in docs/MAANDAG.md; uitrolmap runs/deploy-20261013.
    • Eerste pilotdag volgens docs/MAANDAG.md: sleutelrotatie, toestemming, tenanttoken, de wrapper in de scriptbibliotheek en de eerste echte run via de RMM.
  6. 11 oktober 2026: website, serverkeuze en Tactical RMM

    • Eerste versie van ai.rektpump.com: 16 pagina's uit een generator (deploy/build_site.py), Nederlands, licht en donker, zonder externe scripts; uitrol met deploy/install_site.sh.
    • Besluit om de server zelf te hosten op de eigen VPS (37.97.173.172) in plaats van een tunnel vanaf de eigen pc; deploy/install.sh en deploy/make_release.ps1 voor een byte-exacte release.
    • Tactical RMM gekozen als eigen RMM voor de pilot: runbook docs/TACTICAL_RMM.md en de API-koppeling deploy/tactical/run_diagnose.py met tests/test_run_diagnose.py.
  7. 10 oktober 2026: de keten en de metingen (collector 0.3.0)

    • Collector collect.ps1, condensatie condense.py en analyse analyze.py: een klacht, een tijdstip en vijf dagen logboeken worden een rapport met oorzaken en bewijs per event; redactie van gebruikersnamen, hostnaam, domein, e-mail en publieke IP's.
    • RMM-wrapper collect-rmm.ps1 0.3.0 voor de scriptbibliotheek van een RMM: eist https, controleert de sha256 van de collector, voert hem in het geheugen uit en uploadt met een tenanttoken.
    • Ingest-server met viewer en feedbackformulier (server/app.py): tenant-isolatie, server-side sessies, CSRF, rate limiting, strikte CSP; de eerste 34 tests.
    • Modelvergelijking op een echte bundel: gpt-5-mini one-shot vindt de kernbewijzen voor 1,6 cent in 43 s; gpt-5 met tools vindt twee extra sporen voor 35 cent.
    • RMM-landschap: 34 RMM's, Microsoft-routes en ticketsystemen vergeleken op scriptuitvoering, run-context, parameters, output en API (docs/RMM_LANDSCHAP.md).

Bron: CHANGELOG.md in de projectmap; elke regel is herleidbaar naar de documentatie of een runmap.

Meedoen met de pilot

Een pilot is vijf tickets met eerlijke feedback per run, gratis voor de eerste deelnemers. U heeft een Windows-werkplek nodig waarop u de agent als administrator mag installeren, of een RMM die een PowerShell-script als SYSTEM kan draaien.