Bewijs
Iedereen kan beweren dat een bug is opgelost. Deze pagina toont de fix, de test die hem bewaakt en het bewijs dat de test faalt als de bug terugkomt.
Gegenereerd op 2026-10-03 uit tools/prove_regressions.py · 4 van 4 regressietests aantoonbaar niet-vacuüm.
Hoe elk bewijs tot stand komt
- Draai de regressietest tegen de gefixte code: hij moet slagen.
- Pas de broncode aan om de oorspronkelijke bug terug te zetten.
- Draai dezelfde test opnieuw: hij moet falen, met een echte assertion failure. Een collection error telt niet: dat betekent dat de test nooit is gedraaid.
- Zet het bestand terug, controleer dat de SHA-256 overeenkomt met het origineel en voer opnieuw uit: het moet weer slagen.
De assistent vertelde bezoekers dat de webhook hun gesprek meestuurt. Er gaat niets van mee.
commit e027e6b · bewaakt door apps/gateway/tests/test_webhook_content_claim.py
Webhook-payloads bevatten bewust alleen de VORM van een beurt (eventnaam, tijdstempel, aantal stappen, credits) en nooit de inhoud. De assistent, gevraagd of webhooks het gesprek bevatten, antwoordde: 'Ja, elke webhook-payload bevat de volledige gespreksgeschiedenis voor die beurt.' Dat is precies het tegenovergestelde van de garantie waartegen de allow-list wordt getest. Gemeten op 2 verzinsels in 6 runs vóór de fix.
| Gerepareerde code, testruns |
GESLAAGD |
21 passed in 1.15s |
| Bug teruggezet, dezelfde test |
ONDERSCHEPT |
8 failed, 13 passed in 1.20s |
| Bestand teruggezet, test draait |
GESLAAGD |
sha256 a8d4cb0b10787eff… |
De test is niet vacuüm: hij faalt als de bug terugkomt.
We vertelden eigenaren op een dashboardkaart te klikken die niet bestaat.
commit b4a203a · bewaakt door apps/gateway/tests/test_card_names.py
De kennisbank, de docs en een starttegel vertelden eigenaren allemaal een kaart te zoeken met de naam 'Send turns to a webhook'. De echte dashboardkaart heet 'Send events to your own system'. De naam werd verzonnen toen de kennissectie werd geschreven en verspreidde zich ongecontroleerd naar drie plekken. Gemeten: 2 van 2 installatieantwoorden noemden een bedieningselement dat nooit heeft bestaan.
| Gerepareerde code, testruns |
GESLAAGD |
5 passed in 1.12s |
| Bug teruggezet, dezelfde test |
ONDERSCHEPT |
3 failed, 2 passed in 1.23s |
| Bestand teruggezet, test draait |
GESLAAGD |
sha256 f6348e1a5bbae209… |
De test is niet vacuüm: hij faalt als de bug terugkomt.
De begroeting in dark mode werd weergegeven met een contrast van 1.73:1, in feite onzichtbaar, en de controle had dit niet kunnen opvangen.
commit ca47f41 · bewaakt door apps/studio/test/themeContrast.test.mjs
Gevonden via een screenshot op een echte iPhone, niet via een test. De welkomstgroet was hardcoded op #3a3a3c, wat tegen het dark-mode-paneel uitkomt op 1.73:1, ver onder het minimum van 4.5:1 en nauwelijks leesbaar. Elke nieuwe bezoeker in dark mode zag het. De fix leidt de kleur via de themavariabele --pw-mist zodat die het paneel volgt; de guard berekent nu de werkelijke contrastverhouding voor elk thema-paar in plaats van erop te vertrouwen dat er een kleur was ingesteld.
| Gerepareerde code, testruns |
GESLAAGD |
pass 5, fail 0 |
| Bug teruggezet, dezelfde test |
ONDERSCHEPT |
pass 3, fail 2 |
| Bestand teruggezet, test draait |
GESLAAGD |
sha256 54f8802b444b6194… |
De test is niet vacuüm: hij faalt als de bug terugkomt.
Een mislukte beurt liet de bezoeker eindeloos wachten op een dode stream.
commit 4bcc691 · bewaakt door apps/studio/test/streamError.test.mjs
Toen de modelaanroep mislukte, stuurde de server correct een error-frame, maar de widget schreef het bericht in een element dat de governance-trace-tak al had verborgen, en klapte de trace nooit in. De bezoeker zag 'Reading your message' eindeloos pulseren bij een beurt die al mislukt was: geen foutmelding, geen herstel, geen manier om het te weten. De fouttekst werd correct toegewezen en nergens weergegeven. Gevonden tijdens een echte storing, toen het API-account geen tegoed meer had.
| Gerepareerde code, testruns |
GESLAAGD |
pass 4, fail 0 |
| Bug teruggezet, dezelfde test |
ONDERSCHEPT |
pass 2, fail 2 |
| Bestand teruggezet, test draait |
GESLAAGD |
sha256 54f8802b444b6194… |
De test is niet vacuüm: hij faalt als de bug terugkomt.
Operationeel verslag
Wat er achter het platform bestaat, en wat niet getest is. Alleen wat een script of een log kan aantonen.
- Back-ups: nachtelijk om 03:17 UTC, pg_dump --clean --if-exists, gzip; na elke run gepusht naar een privé git-remote; laatste
20261003T031701Z; 29 dumps bewaard.
- Hersteloefening 2026-10-03: dump
20261003T031701Z in 2 s hersteld in een wegwerpcontainer pgvector/pgvector:pg16 op dezelfde host: 34 tenants, 270 kennisrijen, 47 tabellen. De dump is van 03:17 UTC; om 13:26 UTC verwijderde de geplande demo-opschoning één verlaten demo-tenant ouder dan 30 dagen (gateway-log), dus de herstelde versie toont één tenant meer dan live ten tijde van de oefening.
- Rollback: site: tools/deploy-site.sh --rollback (een tweede symlink-omzetting naar de vorige release); Studio: tools/deploy-studio.sh --rollback (vorige image, met health check).
- Hersteldoelen: geen beloofd. De nachtelijke dump beperkt dataverlies tot één dag; geen opgegeven hersteltijd.
- Niet getest: belasting boven één instantie; multi-region failover; herstel op een andere host.
Uit docs/ops-record.json, geschreven door de hersteloefening (docs/runbooks/db-backup.md).
Wat dit niet bewijst
Dit zijn checks die ik zelf op mijn eigen code draai. Ze laten zien dat specifieke tests specifieke bugs vangen: niet dat het systeem vrij is van andere, niet dat de audits volledig waren, en niet dat iemand onafhankelijk het heeft beoordeeld. De harness staat in de repository; de claim is te controleren door hem te draaien.
PANTHEON · Bewijs het, val het live systeem aan · Auditlog · Walkthroughs · Werk · CV
Vraag naar elk defect hier en hoe de bijbehorende test de fix bewijst.
- Laat me een echte bug zien die hij heeft gevonden en opgelost
- Hoe weet je dat een test kan falen?
- Wat staat er nog open?