Den lange forklaringen.
For den som vil ha det tekniske dypet — her er hva hver fase faktisk produserer, hvorfor den finnes, og hvordan den henger sammen med den neste. Overordnet: pipelinen er en kjede av artefakter der hver fase tar inn et dokument fra forrige fase og produserer et nytt dokument som neste fase kan lese. Ingen muntlige overleveringer. Ingen "jeg tror vi snakket om dette på onsdagsmøtet".
Allium — drift som datapunkt.
Allium er et avhørsspråk: du skriver en spesifikasjon, så kjøres en elicitering som finner huller, tvetydigheter og inkonsistenser. Den produserer åpne spørsmål som må besvares før vi går videre. Senere kjøres en destillering som sammenligner den ferdige koden mot specen — drift vises som tre kategorier: spesifisert-men-ikke-implementert, implementert-men-ikke-spesifisert, og atferdsdrift. Hver post får en individuell beslutning: fiks nå, defer (spor i spec) eller dismiss med begrunnelse. Ingen gruppebeslutninger om at "vi tar det senere" — hvert funn har en eier og en dato.
TLA+ — bevis, ikke tester.
En test som består viser at én eksekvering virket. Den sier ingenting om de eksekveringene du ikke testet. TLA+ modellerer systemet som et tilstandsrom og kjører en uttømmende gjennomgang — TLC-modellcheckeren prøver hver mulig sekvens av hendelser og finner de tilstandene der invarianter brytes. For saksbehandling: kan en sak være både stengt og pågående samtidig? For SSE: hva skjer hvis klienten reconnecter midt i en oppdatering? For idempotens: hva skjer hvis samme idempotency-key sees i to requests samtidig? TLC svarer matematisk, ikke sannsynlighetsbasert.
Destruktive tester — seks kategorier.
Funksjonelle tester verifiserer at lykkesmønsteret virker. Destruktive tester verifiserer at systemet ikke faller når noen prøver å bryte det. Vi kjører minst åtte destruktive scenarier per flate, fordelt over seks kategorier.
Input-validering bombarderer felt med for lange strenger, ugyldige tegn, null og tomme verdier. Autorisering prøver å lese og skrive ressurser som brukeren ikke eier. Injection-kategorien mater XSS i tekstfelt og SQL-injection i søkeparametre. Race conditions tvinger to klienter til å endre samme ressurs i samme sekund. Grenseverdier tester maksimumslengder, maksantall og paginering på siste side. Tilstandskorrupsjon sender endringer i feil rekkefølge eller mot allerede slettede ressurser.
Ingenting av dette er teoretisk. Hver kategori har fanget reelle bugs i produksjonssystemer vi har bygget — før de ble sluppet.
AI-augmentert utvikling — uten AI-religion.
Claude Code brukes som verktøy, ikke som erstatning. Pipelinen over er ikke AI-generert — den er dokumentert, versjonert og enforced via deterministiske hooks. Hookene blokkerer feature-arbeid uten spec, krever avklaring før plan, kjører Allium-elicitering før implementasjon, og nekter å slippe en feature uten både Playwright- og TLA+-validering. AI-en følger metoden — den oppfinner den ikke. Resultatet: AI-fart med menneskelig gjennomgang av arkitekturbeslutninger.
Denne metoden tar lengre tid den første uken. Den sparer måneder når systemet er ett år gammelt.