Del prosessen · kapittel 9
Utviklingsprosess og autonomi
Fra spesifikasjon til plan til test til kodegjennomgang til dokumentasjon som skriver seg selv - og hvor langt mot autonom utvikling det går an å strekke det.
Spesifikasjonen kommer først
Portalen er bygget av én person med AI som medarbeider i alle roller. Det gjør prosessen viktigere, ikke mindre viktig. Uten et team som stiller spørsmål underveis, må spørsmålene stilles på forhånd - og skrives ned.
Derfor starter alt arbeid med en spesifikasjon og en plan som godkjennes før noe bygges. Det høres tungvint ut for et prosjekt med én utvikler. Det motsatte er tilfellet: en AI-medarbeider bygger nøyaktig det som står beskrevet, raskt, også når beskrivelsen er feil. Kostnaden ved en uklar spesifikasjon er høyere her enn i et vanlig prosjekt, ikke lavere.
1. Spesifikasjon
Oppgaven beskrives før noe bygges: hva som skal løses, hvorfor, og hva som må være sant for at det er ferdig.
2. Plan
Planen skrives ut og godkjennes før første kodelinje. Er den tvetydig, avklares det nå framfor halvveis.
3. Test først
Testen skrives før koden og skal feile først. En test som består med én gang, har som regel ikke testet noe.
4. Bygging
Arbeidet skjer på en egen gren, aldri direkte i det som er publisert.
5. Kontroll
Stilkontroll, typesjekk, hele testsettet og de egne reglene må være grønne før noe går videre.
6. Kodegjennomgang
Endringen leses gjennom kritisk før den tas inn. Alltid, uansett hvor liten den er.
Til nå er 431 oppgaver ført gjennom denne kjeden, fordelt på 2 934 endringer i koden siden 2025-11-21.
Testen før koden
Prosjektet har 135 testfiler. En god del av dem tester ikke en beregning, men vokter en regel. Forskjellen er verdt å forklare, for det er den mest nyttige lærdommen herfra.
En vanlig test
Sjekker at en funksjon gir riktig svar for gitte inndata. Nyttig, og det de fleste tenker på.
En vokter
Sjekker at en regel fortsatt holder. At hver side er registrert alle stedene den må være. At ingen farge har havnet under kravet til lesbar kontrast. At norske tegn ikke har blitt til erstatninger. At intern sporingsinformasjon ikke har lekket ut i tekst folk leser.
Vokterne er der fordi en skreven regel ikke holder av seg selv. En regel som står i et dokument, blir brutt. En regel som gjør testen rød, blir ikke det. Hver eneste vokter i dette prosjektet er skrevet etter at feilen den vokter mot, faktisk ble gjort.
Kodegjennomgang er obligatorisk
Ingen endring tas inn uten at den er lest gjennom kritisk først. Regelen har ett unntak, og det krever at man sier det med rene ord - «ser bra ut» holder ikke.
Kravet ble skjerpet etter en periode der en rekke endringer gikk inn uten gjennomgang. Ingen av dem var ondsinnede eller store. Regelen fantes, men den var plassert et sted i prosessen der den var lett å hoppe over, og da ble den hoppet over. Rettelsen var ikke å skrive regelen tydeligere, men å flytte kontrollpunktet til det siste steget som ikke kan angres.
Det er også et poeng i seg selv at en AI-assistent leser gjennom sitt eget arbeid med nye øyne. Den finner reelle feil - men den finner ikke alltid de samme feilene to ganger. Mer om det i siste kapittel.
Dokumentasjon som holder seg selv oppdatert
Dokumentasjon som må vedlikeholdes ved siden av koden, blir feil. Ikke fordi noen er slurvete, men fordi det andre stedet alltid taper mot det første. Prosjektet forsøker derfor å la dokumentasjonen skrive seg selv der det går an.
| Dokumentasjon | Hvor den kommer fra |
|---|---|
| Datamodellene | Leses ut av datamodellene selv, med beskrivelse, kolonner og testdekning. |
| Kjøreplanen for jobbene | Leses ut av jobbene selv. Se forrige kapittel. |
| Tallene på disse sidene | Telles fra registrene ved hver oppdatering, aldri skrevet inn. |
| Endringsloggen | Hver leveranse legger igjen sitt eget notat, som samles automatisk. |
| Oppdateringshistorikken | Utledes av når datafilene faktisk endret seg. |
| Det som gikk galt | Dagboka føres for hånd, men det systemet selv har fanget, skrives tilbake ved siden av den. |
Det som ikke kan utledes, må skrives. Prosjektet har 75 dokumentasjonssider ut over disse. En egen regel krever at dokumentasjonen oppdateres i samme slengen som endringen den beskriver, ikke etterpå - «etterpå» kommer aldri.
Køsystemet og målet om autonomi
Flaskehalsen i et soloprosjekt er ikke å skrive kode. Det er å ta avgjørelser. En AI-medarbeider kan bygge raskere enn én person rekker å bestemme hva som skal bygges.
Køsystemet er svaret på det. Flere oppgaver kan planlegges i én økt, godkjennes, og legges i kø. Senere kjøres køen gjennom: hver oppgave hentes fram, bygges etter sin egen plan, og stopper før den tas inn. Ingenting går inn i det som er publisert uten at et menneske har lest gjennom det.
Det er den grensen autonomien har i dag, og den er valgt bevisst. Retningen videre er å flytte den ett hakk om gangen framfor å hoppe:
I dag
Planer godkjennes på forhånd, bygges automatisk, gjennomleses av et menneske før de tas inn.
Nå
Flere oppgaver bygges parallelt, i hvert sitt isolerte miljø, mens ingen sitter og ser på.
Deretter
Innhold som er blitt utdatert oppdages og skrives om automatisk - men fortsatt bare til utkast.
Grensen
Publisering og faglige valg blir værende hos et menneske. Det er ikke en teknisk begrensning, men en redaksjonell.
Hvor autonomien står nå
Det andre trinnet er ikke lenger en plan. Oppgaver kan nå settes i kø om kvelden, bygges parallelt i hvert sitt isolerte miljø gjennom natten, og ligge klare til gjennomlesing neste morgen. Ingenting tas inn i hovedgrenen underveis.
Kjeden har ni ledd. Om kvelden merker du en oppgave, kandidatene hentes, konflikter avgjør hvilke som kan gå samtidig, og én kjøring settes i gang per oppgave. Gjennom natten implementeres planen, den verifiseres, arbeidet legges fram, og den gjennomleses og drives til grønn automatisk kontroll. Neste morgen ligger rapporten klar, og du leser gjennom.
Køen er menneskekurert, og det er et valg
Ingenting legger seg selv i køen. En oppgave kjøres bare fordi et menneske har merket den for det. Å la systemet opprette oppgaver selv, fra signaler om utdatert innhold, ble vurdert og forkastet: kontroll over hva som kjøres veier tyngre enn de minuttene det sparer å slippe å opprette oppgaven.
Hva som hindrer at parallelt arbeid kolliderer
Planen må si hva den rører
En plan uten en liste over hvilke filer den endrer, avvises. Uten den listen kan ikke risikoen vurderes, og da er det ærligere å si nei enn å håpe.
To planer mot samme fil kjører etter tur
Overlapper to oppgaver, venter den ene på den andre framfor å kollidere. Enkelte filer må dessuten oppdateres samlet når en ny side legges til, så høyst én oppgave per natt får røre dem.
Grensene er absolutte
Aldri ta noe inn i hovedgrenen. Aldri skrive til den direkte. Aldri endre det som styrer kjøreplanen. Aldri gjette ved tvil - stopp og spør i stedet.
Stillhet regnes ikke som suksess
Morgenrapporten skiller tre utfall: klar for gjennomlesing, krever en avgjørelse, og ingen spor. Det siste er det viktigste designvalget - en oppgave som mangler i statusdataene rapporteres aldri som stille suksess.
Rekkefølge og hvor mange om gangen
Rekkefølgen er prioriteringen din
Køen leses i den rekkefølgen oppgavene er rangert. Står to i konflikt om samme fil, kjøres den øverste, og den andre venter til neste natt med en forklaring på oppgaven. Vurderingen gjøres hver natt når kjøringen starter, ikke når oppgaven merkes.
En oppgave som bygger på en annen, venter
Er en oppgave merket som blokkert av en annen, kjøres den ikke før den andre er tatt inn i hovedgrenen. Levert er ikke nok. Dermed kan en hel kjede merkes på én gang, og den går ett ledd per natt.
2 om gangen, 3 som tak
Begrunnelsen er morgenen etter, ikke natta: hver leveranse skal leses gjennom og tas inn, og omarbeid oppstår når leveranse nummer to tas inn mot en hovedgren nummer én nettopp endret. Budsjettvinduet deles dessuten av alle kjøringer som går samtidig.
Én forbudt fil feller hele planen
Planer som vil endre det som styrer kjøreplanen, eller hemmeligheter, avvises i sin helhet - ikke bare den ene filen. Slike endringer gjøres for hånd etterpå.
Status på 7 deler av oppsettet
| Del | Status | Hva den gjør |
|---|---|---|
| Konflikt-deteksjon | på plass | Hindrer at to oppgaver rører de samme filene samtidig. |
| Avhengigheter mellom oppgaver | på plass | En oppgave som bygger på en annen, venter til den andre er tatt inn i hovedgrenen. |
| Kvalitetssjekker | halvveis | To av fire konvensjonssjekker er flyttet fra hukommelse til skript. To gjenstår. |
| Kjøring og fordeling | på plass | Prøvd ende til ende mot ekte kjøringer, ikke simulert. |
| Isolerte arbeidskopier | på plass | Hver oppgave bygger i sin egen kopi, så de ikke kan tråkke på hverandre. |
| Morgenrapport | på plass | Tre utfall, der «ingen spor» er et eget utfall og ikke stillhet. |
| Automatisk oppstart | gjenstår | I dag startes en kjøring for hånd. Det siste steget er å la den gå av seg selv. |
Det mest lærerike funnet
Den første ekte nattkjøringen leverte oppgaven sin riktig. Men den uavhengige gjennomlesingen den selv kjørte, fant fem reelle feil i infrastrukturen som kjørte den - blant annet at en rapport aldri leste om en leveranse allerede var tatt inn, og derfor kunne meldt en ferdig oppgave som «klar til gjennomlesing». Alle fem ble bekreftet før de ble rettet, og alle fikk en test som hindrer at de kommer tilbake.
Poenget er ikke at systemet var dårlig bygget. Det er at et system som skal jobbe uten tilsyn, må testes av noe som ser på det utenfra - og at den beste gjennomlesingen ofte kommer fra den som nettopp har brukt tingen til noe ekte.
Slik brukes det i praksis
Alt over beskriver hva systemet gjør. Sett fra den som bruker det, er det tre handlinger - og ingen av dem krever at maskinen din står på.
Én markering inn, to spor ut
Systemet fører tre markeringer på tre ulike steder, men bare den ene settes av et menneske. De to andre skriver det selv: en oversikt over hva natten forsøkte seg på, og et spor tilbake til hver enkelt kjøring. De finnes for at en kjøring som stoppet halvveis skal kunne finnes igjen i ettertid, ikke for at noen skal vedlikeholde dem.
Å skru det av er den billigste handlingen i systemet
Fjern markeringen fra alle oppgaver, så er køen tom. Systemet gjør ingenting, uten at noe må rulles tilbake og uten at noen innstilling må endres. Det er et bevisst valg, og det er verdt å si høyt: et system som er dyrt å stoppe, blir stående lenger enn det burde. Når stoppknappen er én handling, koster det ingenting å ombestemme seg.
«Ingenting å gjøre» er ikke en feil
En tom kø og «dette krever deg» er to forskjellige utfall, og ingen av dem er en feiltilstand. Systemet skiller på dem med vilje, av samme grunn som rapporten skiller «ingen spor» fra suksess: den dagen alt uvanlig ser likt ut, slutter du å lese meldingene.
Hvor ideene kommer fra
En portal med mange temaer har alltid noe som kunne vært dekket bedre. Å holde oversikt over det for hånd er håpløst, så to agenter gjør hver sin del av jobben.
Hva mangler?
Ser ukentlig etter hull i dekningen: temaer som er nevnt, men ikke dekket, sider som ikke er oppdatert på lenge, datasett som finnes uten at noe bruker dem.
Hva har ingen tenkt på?
Leter daglig etter temaer portalen burde dekket, med utgangspunkt i nyhetsbildet og i hvilke data som faktisk finnes tilgjengelig.
Den ukentlige gjennomgangen leverer ikke en liste over problemer, men ferdige forslag. Hvert av dem sier hvilken adresse siden ville fått, hvilken vinkel den har, hvilke datasett som allerede finnes for temaet, og hvorfor det ble foreslått akkurat nå.
Det siste er ikke pynt. Et forslag som må utredes før du kan si nei til det, blir liggende - og en liste som bare vokser, slutter du å åpne. Forslaget må være ferdig nok til å kunne avvises på et halvminutt.
Begge skriver til en idébank et menneske plukker fra. Ingen av dem oppretter oppgaver selv. Og de har en hard grense: de kan bare skrive i sin egen, avgrensede del av dokumentet. Alt et menneske har skrevet, er utenfor rekkevidde. Uten den grensen ville en agent som misforsto formatet, kunnet overskrive tenkearbeid ingen hadde sikkerhetskopi av.
Se det i portalen
Nytt på portalen
Omsorgsbehovet i din kommune mot 2050 →
Alle 357 kommuner har til sammen 285 000 innbyggere over 80 i dag. SSBs framskriving gir 591 000 i 2050. Sida lar deg velge kommune og bytte mellom hovedalternativet, sterk aldring og svak aldring, regner om til brukere av institusjon, omsorgsbolig og hjemmetjenester, og viser hvordan kommunen løser oppgaven i dag mot resten av landet. Kommuneøkonomien er koblet på: dagens netto driftsutgifter per innbygger over 80, ganget med hvor mange over 80 kommunen får.
Oslo mot 2050: bydelene der antall over 80 mer enn dobles →
Oslo kommunes egen framskriving gir 55 000 personer over 80 i 2050, mot 24 000 i dag. Veksten er skjevest i indre by og sør: Gamle Oslo, Søndre Nordstrand og Grünerløkka mer enn tredobler antallet, mens Stovner og Grorud vokser minst. Sida regner om til brukere av institusjon, omsorgsbolig og hjemmetjenester per bydel med samme regnestykke som landssida, viser Oslo mot landet i dag fra SSB 12003, og setter det opp mot NAVs tall for hvor mange i hver bydel som står utenfor arbeid.
Omsorgsbehovet mot 2060: hva skjer når antall eldre nesten dobles →
Norge har 938 000 personer over 67. I 2060 venter SSB 1,59 millioner. Bruker de eldre omsorgstjenestene som i dag, går antall eldre brukere av institusjon, omsorgsbolig og hjemmetjenester fra 171 000 til 391 000, og årsverkene fra 94 000 til 215 000. Sida tegner regnestykket år for år, i tre framskrivingsalternativer og med en test på friskere aldring, og sammenligner tall for tall med Ulf Andersen i NAV, som regnestykket er inspirert av.
Historikken sier hva som kom inn og hva som ble revidert, for alle datasett →
Hver gang pipelinen henter tall på nytt, sammenligner den med forrige versjon: hvilke måneder, kvartaler eller år som kom til, og hvilke tall tilbake i tid kilden har revidert. Det står i historikk-knappen, på oppdateringshistorikken og på kildesida for hver datafil, og er rekonstruert bakover fra git for alle femti datasett. På prissida, AAP, uføre, befolkning, valuta og konkurser står det også som en chip ved siden av kildehenvisningen på hver graf.
Kryptoandelen i datasentrene: en lesers regnestykke gir 48 til 60 prosent →
Regjeringen oppgir 20 prosent, vi har regnet 38 med bare de to Bitdeer-anleggene. En leser har gått gjennom anleggene ett for ett og kommer til 48 prosent som gulv, og 60 når anlegget i Mo i Rana som ikke er meldt inn til Nkom, tas med. Regnestykket står i egen boks, anlegg for anlegg, merket som leserens.
Mest lest siste 7 dager
- 1Datasentre og kraftforbruk74 visninger
- 2Datasentrene brukte 3,3 TWh i 2025, og kryptodelen er alt på vei ned31 visninger
- 3Slik er portalen bygget25 visninger
- 4Alderspensjon 2025 - gjennomsnittlig utbetaling og avgangsalder17 visninger
- 5Oppdateringshistorikk17 visninger
- 6Kilder og datagrunnlag16 visninger
- 7Blogg16 visninger
- 8Energiomstilling11 visninger
- 945 milliarder til Tydal: hva E24-saken ikke fortalte11 visninger
- 10Befolkning11 visninger