Foto: Umberto / Unsplash

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. 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. 2. Plan

    Planen skrives ut og godkjennes før første kodelinje. Er den tvetydig, avklares det nå framfor halvveis.

  3. 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. 4. Bygging

    Arbeidet skjer på en egen gren, aldri direkte i det som er publisert.

  5. 5. Kontroll

    Stilkontroll, typesjekk, hele testsettet og de egne reglene må være grønne før noe går videre.

  6. 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.

Hva som dokumenteres automatisk
DokumentasjonHvor den kommer fra
DatamodelleneLeses ut av datamodellene selv, med beskrivelse, kolonner og testdekning.
Kjøreplanen for jobbeneLeses ut av jobbene selv. Se forrige kapittel.
Tallene på disse sideneTelles fra registrene ved hver oppdatering, aldri skrevet inn.
EndringsloggenHver leveranse legger igjen sitt eget notat, som samles automatisk.
OppdateringshistorikkenUtledes av når datafilene faktisk endret seg.
Det som gikk galtDagboka 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:

  1. I dag

    Planer godkjennes på forhånd, bygges automatisk, gjennomleses av et menneske før de tas inn.

  2. Flere oppgaver bygges parallelt, i hvert sitt isolerte miljø, mens ingen sitter og ser på.

  3. Deretter

    Innhold som er blitt utdatert oppdages og skrives om automatisk - men fortsatt bare til utkast.

  4. 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.

KVELDENdu setter i gangDu merker enoppgaveKandidatene hentesKonflikter avgjørrekkefølgenÉn kjøring peroppgaveNATTEN OG MORGENENgår uten tilsynPlanenimplementeresVerifiseringArbeidet leggesframGjennomlesing oggrønne kontrollerDu leser gjennom
De uthevede leddene er de to menneskevalgene: du merker oppgaven, og du leser gjennom det som kom ut. Alt imellom går uten tilsyn - og ingenting tas inn i hovedgrenen.

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

Status for hver del av det autonome oppsettet
DelStatusHva den gjør
Konflikt-deteksjonpå plassHindrer at to oppgaver rører de samme filene samtidig.
Avhengigheter mellom oppgaverpå plassEn oppgave som bygger på en annen, venter til den andre er tatt inn i hovedgrenen.
KvalitetssjekkerhalvveisTo av fire konvensjonssjekker er flyttet fra hukommelse til skript. To gjenstår.
Kjøring og fordelingpå plassPrøvd ende til ende mot ekte kjøringer, ikke simulert.
Isolerte arbeidskopierpå plassHver oppgave bygger i sin egen kopi, så de ikke kan tråkke på hverandre.
Morgenrapportpå plassTre utfall, der «ingen spor» er et eget utfall og ikke stillhet.
Automatisk oppstartgjenstårI 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å.

KVELDMerk oppgavenÉn markering på enoppgave som alt har enplan.KVELDStart kjøringenSett i gang, og lukk.Den venter ikke på deg.MORGENLes rapportenHva er klart, hva kreverdeg, hva mangler spor.
Tre handlinger fra deg. Ingen av dem krever at maskinen din står på - markeringen settes like gjerne fra en telefon, og rapporten leses på samme sted neste morgen.

É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.

Markeringen du setterditt eneste grensesnittNatten kjørerén kjøring per oppgaveOversikt over nattenskrives av systemetSpor til hver kjøringskrives av systemet
Bare den ene er din. De to andre skriver systemet selv, for at natten skal kunne finnes igjen i ettertid - ikke noe du vedlikeholder.

Å 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

Se hvordan denne siden henger sammen med restenNabolagskartet viser sidene, begrepene og kildene den er koblet til

Nytt på portalen

Vis:
HelseNytt

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.

HelseNytt

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.

HelseNytt

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.

KilderOppdatert

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.

EnergiOppdatert

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.