docs(P4.5): §0s tag-felt var sirkulært, og begge utveier gjorde torsdagen rød

§0s tag-rad hentet verdien fra `git tag -l v1.0.0` ETTER push (§5 punkt 10),
mens §5 punkt 6 krever at utfyllings-gaten er TOM — altså FØR. Punkt 6 var
gatet på informasjon som først finnes etter punkt 10.

Ingen utvei holdt. Fylt ærlig krever den en commit ETTER taggen: HEAD forlater
Z, og torsdagens §6 steg 2 — identitets-ankeret økt 10 vant — blir rødt på
demo-morgenen. Ufylt bryter den gaten i punkt 6. Sekvensen modellerer heller
ingen tredje commit (X → Y → Z → tag). Lokal tag før utfylling hjelper ikke
(taggen står fortsatt på Z); --amend etter taggen flytter Zs sha ut under den.

Tvillingen: §5s haker settes i selve fila, og punkt 7-10 skjer ETTER
runbook-commiten Y. Målt: en redigert runbook gir « M docs/plan/…», altså rød
§6 steg 1 — eller en commit etter taggen, altså rød §6 steg 2. Samme
motsigelse, samme to gater.

Løsningen bevarer identiteten: §0 mistet tag-raden med begrunnelsen skrevet
inn, §5 fikk et ellevte punkt som bekrefter taggen der den settes (git tag -l ·
git ls-remote --tags origin · git describe --tags --exact-match HEAD — det
siste er torsdagens anker kjørt et døgn tidlig), og §5s ingress sier at hakene
aldri settes i fila. Ingenting skrives etter taggen.

En åttende defekt falt ut av gjennomlesningen, og den er økt 11s egen bom: §5
punkt 9 sa «Steg 2 målte en tilstand som ikke lenger finnes», mens første
frys-gate-kjøring er punkt 5. Verifisert mot 818b55a: da linja ble skrevet var
frysen TO kommandoer og gaten var nr. 2. Økt 11 gjorde den til tre, men
grep-passen lette etter strengen «to kommandoer», så «Steg 2» slapp forbi —
og økt 11 konkluderte eksplisitt at ingen kryssreferanse pekte på den gamle
nummereringen. Nå forankret i §5s egen nummerering.

Målt: utfyllings-gaten 3 → 2 · §5 ti → elleve punkter · §0-tabell 4 pipes per
rad · §1 og §2 byte-urørt (shasum likt før/etter — økt 9s 67 målinger er gjort
mot de bytene) · fire diff-hunks, alle i §0/§5 · alle 20 numeriske
kryssreferanser sveipet · frys-gaten d0e8bb0..HEAD TOM · ingen test leser
dokumentene.

Propagert til fem levende steder i planen og STATE; GJORT-blokkenes «3» står
som historikk.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfdfrMcEtkmZXPkzt7APQU
This commit is contained in:
Kjell Tore Guttormsen 2026-08-11 14:11:47 +02:00
commit 4b9e5d9520
2 changed files with 63 additions and 11 deletions

View file

@ -416,7 +416,8 @@ bevisst to-trinns:
det pinnede transkriptet), ærlighets-avsnittet i JA-varianten, abortstien, forventede spørsmål — det pinnede transkriptet), ærlighets-avsnittet i JA-varianten, abortstien, forventede spørsmål —
og **mandat-setningen, som fantes ingen steder som tekst** (Spor 2 sa bare «én muntlig setning»; og **mandat-setningen, som fantes ingen steder som tekst** (Spor 2 sa bare «én muntlig setning»;
en udraftet setning til en live demo er ikke en beslutning som er tatt). en udraftet setning til en live demo er ikke en beslutning som er tatt).
- **Fylles onsdag:** tre målte felt (X, tag-bekreftelse, prøve-tidspunkt) + sjekklista i §5. - **Fylles onsdag:** **to** målte felt (X, prøve-tidspunkt) — se §5-amendementet tir 11. økt 12 for
hvorfor tag-bekreftelsen IKKE er et tredje felt.
- **Tilføyd tirsdag 11. (økt 10) — §6, torsdagens pre-flight.** Runbooken hadde ingen sjekk - **Tilføyd tirsdag 11. (økt 10) — §6, torsdagens pre-flight.** Runbooken hadde ingen sjekk
operatøren kjører **før** han går på. Mekanismen fantes allerede: golden-transkriptet ble sjekket operatøren kjører **før** han går på. Mekanismen fantes allerede: golden-transkriptet ble sjekket
inn nettopp for å fange *«regresjon mellom onsdag og torsdag»* (pkt. 3 over). Men i runbooken sto inn nettopp for å fange *«regresjon mellom onsdag og torsdag»* (pkt. 3 over). Men i runbooken sto
@ -438,9 +439,39 @@ bevisst to-trinns:
Kommandoen for selve outputen står fortsatt kun ÉN gang i dokumentet (§6 peker på §1-blokka), så Kommandoen for selve outputen står fortsatt kun ÉN gang i dokumentet (§6 peker på §1-blokka), så
det er ikke laget en andre kopi å drifte fra. Ingen ny placeholder: utfyllings-gaten står uendret det er ikke laget en andre kopi å drifte fra. Ingen ny placeholder: utfyllings-gaten står uendret
på 3. Tatt tirsdag med vilje — onsdagen skal måle og utføre, ikke avgjøre. på 3. Tatt tirsdag med vilje — onsdagen skal måle og utføre, ikke avgjøre.
**Utfyllingen er gjort til et SJEKKET steg, ikke et husket:** tre greppbare placeholders, og grep-en - **Amendert tirsdag 11. (økt 12) — §0s tag-felt og §5s haker var SIRKULÆRE, og begge landet på
er **selv-sikker** — mønsteret `'<<[A-ZÆØÅ-]*>>'` matcher ikke sin egen tekst (målt: 3 treff, ingen torsdag.** Tag-feltet i §0 hentet sin verdi fra `git tag -l v1.0.0` **etter push**, altså etter
av dem kommandolinjene i dokumentet). Et uutfylt felt er samme drift-klasse som plan-radene økt 4, §5s siste punkt — mens §5s punkt 6 krever at utfyllings-gaten er **tom**, altså før. Punkt 6 var
dermed gatet på informasjon som først finnes etter punkt 10, og ingen av utveiene holdt: fylt
ærlig krever den en commit **etter** taggen (da står HEAD ikke lenger på `Z`, og torsdagens §6
steg 2 — `git describe --tags --exact-match HEAD``v1.0.0` — er **rød på demo-morgenen**), og
ufylt bryter den gaten i punkt 6. Sekvensen modellerer heller ikke en tredje commit: STATE og
frys-blokka sier `X → Y → Z → tag`. **Tvillingen ble funnet ved å lese videre:** §5s haker settes
i selve fila, og punkt 710 skjer *etter* runbook-commiten `Y` — målt gir det
` M docs/plan/2026-08-12-demo-runbook.md`, altså rød §6 steg 1, eller en commit etter taggen,
altså rød §6 steg 2. Samme motsigelse, samme to gater. **Løsningen bevarer identiteten** (§6 steg
2 var dyr å vinne — den er den eneste gaten som fanger bevegelse over natta): §0 mistet
tag-raden, §5 fikk et ellevte punkt som **bekrefter taggen der den settes** (`git tag -l` ·
`git ls-remote --tags origin` · `git describe --tags --exact-match HEAD`, det siste = torsdagens
anker kjørt et døgn tidlig), og §5s ingress sier at hakene aldri settes i fila. Ingenting skrives
etter taggen. **Målt:** utfyllings-gaten **3 → 2** (begge gjenværende felt er kjennbare før `Y`) ·
§5 ti → **elleve** punkter · §0-tabellen 4 pipes per rad · **§1 og §2 byte-urørt** (`shasum` likt
før/etter — økt 9s 67 målinger er gjort mot de bytene, og §6 peker på §1 nettopp for å slippe en
andre kopi). Sjuende defekt i denne dokumentfamilien på sju økter, og fjerde gang klassen er
*«kommandoen var riktig, tidspunktet var det ikke»*.
- **En ÅTTENDE falt ut av gjennomlesningen, og den er økt 11s egen bom:** §5 punkt 9 sa «**Steg 2**
målte en tilstand som ikke lenger finnes», mens første frys-gate-kjøring er **punkt 5**.
Verifisert mot `818b55a`: da linja ble skrevet var frysen **TO** kommandoer og gaten var nr. 2 —
økt 11 gjorde den til tre, men grep-passen den økta lette etter strengen «to kommandoer», så en
referanse formulert som «Steg 2» slapp forbi. Økt 11 konkluderte eksplisitt at *«ingen
kryssreferanse pekte på frys-blokkas gamle nummerering»*; **det var én.** Nå forankret i §5s EGEN
nummerering, som ikke kan drifte med frys-blokkas telling. **Alle 20 numeriske kryssreferanser i
runbooken deretter sveipet** (§5s punkt 6/10/11 · §6s steg 1/2/3 · §2s «punkt 2 i åpningen» ·
planens «pkt. 3» = golden-transkriptet) — ingen flere.
**Utfyllingen er gjort til et SJEKKET steg, ikke et husket:** **to** greppbare placeholders (tre til
og med tir 11. økt 11 — se amendementet over), og grep-en er **selv-sikker** — mønsteret
`'<<[A-ZÆØÅ-]*>>'` matcher ikke sin egen tekst (målt: 2 treff, ingen av dem kommandolinjene i
dokumentet). Et uutfylt felt er samme drift-klasse som plan-radene økt 4,
5 og 6 hver for seg fant. `docs/` er unntatt frys-gaten, så utfyllingen tripper ingenting. 5 og 6 hver for seg fant. `docs/` er unntatt frys-gaten, så utfyllingen tripper ingenting.
**Vedlegget feller tre STATE-premisser:** de tre «scene-kosmetiske» punktene er målt mot det **Vedlegget feller tre STATE-premisser:** de tre «scene-kosmetiske» punktene er målt mot det
pinnede transkriptet og **ingen er synlige**`23700 NOK/aar` klippes bort (rationale 389 tegn, pinnede transkriptet og **ingen er synlige**`23700 NOK/aar` klippes bort (rationale 389 tegn,
@ -521,9 +552,9 @@ og risikoen ligger tidlig med slakk bak seg.
|---|---| |---|---|
| fre 7. | **Planrevisjonen (I1I6)** ✔ + **P1/S1.a**: Steg 7-innboksen inn i demoløpet (økt 1) | | fre 7. | **Planrevisjonen (I1I6)** ✔ + **P1/S1.a**: Steg 7-innboksen inn i demoløpet (økt 1) |
| lør 8.søn 9. | **P2/S1.b**: innholdsgaten (økt 2, evt. 3) + **P4-forskuddet UTVIDET** (0,751,25 økt), i denne rekkefølgen: forankret prøvekjøring + 10 %-prøven (pkt. 0, I1) **✔ 08-09** → `[project.scripts]` (pkt. 5, I3) → stderr-demping FØR pinning (pkt. 2, I2) → fresh-clone (pkt. 1) → golden-transkript-mekanikk (pkt. 3) → de to ærlighets-setningene (pkt. 4) — alt bygges og måles mot den FORANKREDE mikro-reserven NÅ | | lør 8.søn 9. | **P2/S1.b**: innholdsgaten (økt 2, evt. 3) + **P4-forskuddet UTVIDET** (0,751,25 økt), i denne rekkefølgen: forankret prøvekjøring + 10 %-prøven (pkt. 0, I1) **✔ 08-09** → `[project.scripts]` (pkt. 5, I3) → stderr-demping FØR pinning (pkt. 2, I2) → fresh-clone (pkt. 1) → golden-transkript-mekanikk (pkt. 3) → de to ærlighets-setningene (pkt. 4) — alt bygges og måles mot den FORANKREDE mikro-reserven NÅ |
| man 10. | **SYV ØKTER, alle ✔.** (1) **Generalprøve nr. 0** — kjørt mot **LEVERT VEGLYS-FV-SOER, ikke reserven**: P3 falt to døgn før fristen, så prøven målte demoinnholdet selv. Se UTFØRT-blokka under tabellen. (2) **S1.c synk + CHANGELOG** (`a41272d`) — forskuttert fra ons kveld; TAGGEN gjenstår, frys-gatet. (3) **`open/`-beslutningen TATT** — taggen til `origin` ALENE; speilet til P5-vinduet (se S1.c-raden i §0). (4) **Planen gjort sann** (`c9787cf`) — to `open/`-instrukser felt, P2 lukket, kalenderen rettet. (5) **Frysedagens to udefinerte steg lukket****P4 ✔** (fersk klon re-målt på `c9787cf`, elleve commits etter forrige måling) og **FRYS gjort kjørbar** (frys-blokka under). (6) **Persona-pullen landet** (`71b7b66`+`d0e8bb0`) — commons svarte to døgn før fristen, så tirsdagens eneste punkt ble tatt mandag; fasiten re-målt mot en prediksjon skrevet FØR pullen. **Ingenting kodemessig gjenstår før onsdag, og tirsdagen er tom.** (7) **P4.5-runbooken SKREVET** (`c7a57d8`) — beslutnings-innholdet forskuttert fra onsdag (gaten dekker målingene, ikke forfatterskapet), inkludert **mandat-setningen som aldri fantes som tekst**; onsdag fyller tre målte felt. Vedlegget felte tre «scene-kosmetiske» STATE-premisser: ingen av dem er synlige på skjermen (målt). **Frysen ble VURDERT flyttet fram og bevisst IKKE flyttet** — onsdag er en dato-beslutning på en enveis-handling, og risikoen den ville hedget er retirert av økt 6 (samme kjøresti målt grønn; `d0e8bb0..HEAD` er dokumenter alene). | | man 10. | **SYV ØKTER, alle ✔.** (1) **Generalprøve nr. 0** — kjørt mot **LEVERT VEGLYS-FV-SOER, ikke reserven**: P3 falt to døgn før fristen, så prøven målte demoinnholdet selv. Se UTFØRT-blokka under tabellen. (2) **S1.c synk + CHANGELOG** (`a41272d`) — forskuttert fra ons kveld; TAGGEN gjenstår, frys-gatet. (3) **`open/`-beslutningen TATT** — taggen til `origin` ALENE; speilet til P5-vinduet (se S1.c-raden i §0). (4) **Planen gjort sann** (`c9787cf`) — to `open/`-instrukser felt, P2 lukket, kalenderen rettet. (5) **Frysedagens to udefinerte steg lukket****P4 ✔** (fersk klon re-målt på `c9787cf`, elleve commits etter forrige måling) og **FRYS gjort kjørbar** (frys-blokka under). (6) **Persona-pullen landet** (`71b7b66`+`d0e8bb0`) — commons svarte to døgn før fristen, så tirsdagens eneste punkt ble tatt mandag; fasiten re-målt mot en prediksjon skrevet FØR pullen. **Ingenting kodemessig gjenstår før onsdag, og tirsdagen er tom.** (7) **P4.5-runbooken SKREVET** (`c7a57d8`) — beslutnings-innholdet forskuttert fra onsdag (gaten dekker målingene, ikke forfatterskapet), inkludert **mandat-setningen som aldri fantes som tekst**; onsdag fyller ~~tre~~ **to** målte felt (tag-feltet felt tir 11. økt 12 — det var sirkulært). Vedlegget felte tre «scene-kosmetiske» STATE-premisser: ingen av dem er synlige på skjermen (målt). **Frysen ble VURDERT flyttet fram og bevisst IKKE flyttet** — onsdag er en dato-beslutning på en enveis-handling, og risikoen den ville hedget er retirert av økt 6 (samme kjøresti målt grønn; `d0e8bb0..HEAD` er dokumenter alene). |
| tir 11. | **IKKE TOM — FIRE ØKTER (8, 9, 10, 11), alle måling/dokument, null kodeendring.** Frysen ble VURDERT flyttet fram og bevisst IKKE flyttet: **et frysevindu er en forpliktelse, ikke slakk** — å tagge tirsdag ville forbudt kjørestien et døgn lenger og gjort ethvert onsdagsfunn til en `v1.0.1`-beslutning på demo-aften. Tirsdagen er verdt mer som **lovlig-fiks-dag**. (8) generalprøve som PRØVE, alt grønt på `818b55a`; X bevisst IKKE notert; pre-flight mot stale tag ren. (9) runbookens §2 målt mot fasiten — 67 påstander + hver kommando kjørt, null feil; §1s stderr felte én defekt (`/tmp/po-sim-…` kan aldri vises, `TMPDIR` = `/var/folders/…/T/`). (10) **runbookens §6 — torsdagens pre-flight — tilføyd** (se P4.5). (11) **to en-linjes herdinger av onsdagen/torsdagen:** §5 manglet en **arbeidstre-sjekk ved X** (frys-gaten er commit-til-commit, prøven leser treet — en ucommittet `src/`-endring ville gjort X til en beskrivelse av noe som aldri ble prøvd, usynlig for BEGGE gate-kjøringene), og **§3s abortsti brukte relativ sti** til fasit-fila, altså feilet av nøyaktig den «feil katalog»-årsaken prosaen selv navngir (målt). Frysen er nå **tre** kommandoer. *(Raden sa «TOM — GÅ RETT PÅ ONSDAG»; det var sant da den ble skrevet man 10. og sluttet å være det samme uke. Samme drift-klasse som radene økt 4, 5 og 6 hver for seg fant.)* *(Amendert man 10. økt 6: tirsdagens ENESTE åpne punkt var commons-svaret på persona-formuleringen — «i kontorbygg» på et veglys-prosjekt, printet ordrett i Steg 7. Svaret kom **to døgn før fristen** og ble tatt samme dag: subtree pull av commons `73136eb` → «i tilsvarende anlegg», `marker` byte-uendret (`71b7b66`), fasiten re-målt (`d0e8bb0`). Abortstien I4 ble aldri utløst — men den ble verifisert KJØRBAR først: `git reset --hard` blokkeres av hooken, **`--keep` slipper**. Rød-settet etter pullen var NØYAKTIG én test, det pinnede transkriptet; goldenene (kriterium 8) uendret; `pyproject.toml`/`uv.lock` urørt. Denne raden instruerte om arbeid som var utført — samme drift-klasse som økt 4 felte.)* | | tir 11. | **IKKE TOM — FEM ØKTER (8, 9, 10, 11, 12), alle måling/dokument, null kodeendring.** Frysen ble VURDERT flyttet fram og bevisst IKKE flyttet: **et frysevindu er en forpliktelse, ikke slakk** — å tagge tirsdag ville forbudt kjørestien et døgn lenger og gjort ethvert onsdagsfunn til en `v1.0.1`-beslutning på demo-aften. Tirsdagen er verdt mer som **lovlig-fiks-dag**. (8) generalprøve som PRØVE, alt grønt på `818b55a`; X bevisst IKKE notert; pre-flight mot stale tag ren. (9) runbookens §2 målt mot fasiten — 67 påstander + hver kommando kjørt, null feil; §1s stderr felte én defekt (`/tmp/po-sim-…` kan aldri vises, `TMPDIR` = `/var/folders/…/T/`). (10) **runbookens §6 — torsdagens pre-flight — tilføyd** (se P4.5). (11) **to en-linjes herdinger av onsdagen/torsdagen:** §5 manglet en **arbeidstre-sjekk ved X** (frys-gaten er commit-til-commit, prøven leser treet — en ucommittet `src/`-endring ville gjort X til en beskrivelse av noe som aldri ble prøvd, usynlig for BEGGE gate-kjøringene), og **§3s abortsti brukte relativ sti** til fasit-fila, altså feilet av nøyaktig den «feil katalog»-årsaken prosaen selv navngir (målt). Frysen er nå **tre** kommandoer. (12) **§0s tag-felt var SIRKULÆRT og §5s haker var tvillingen** — feltet kunne først fylles etter §5s siste punkt, mens punkt 6 krever at gaten er tom; hakene settes i fila, og punkt 710 skjer etter runbook-commiten `Y`. Begge utveier gjorde en av **torsdagens** to gater rød (ucommittet → §6 steg 1; commit etter taggen → §6 steg 2s identitet). Tag-raden fjernet, ellevte §5-punkt bekrefter taggen der den settes, hakene forlot fila. Se P4.5-amendementet. *(Raden sa «TOM — GÅ RETT PÅ ONSDAG»; det var sant da den ble skrevet man 10. og sluttet å være det samme uke. Samme drift-klasse som radene økt 4, 5 og 6 hver for seg fant.)* *(Amendert man 10. økt 6: tirsdagens ENESTE åpne punkt var commons-svaret på persona-formuleringen — «i kontorbygg» på et veglys-prosjekt, printet ordrett i Steg 7. Svaret kom **to døgn før fristen** og ble tatt samme dag: subtree pull av commons `73136eb` → «i tilsvarende anlegg», `marker` byte-uendret (`71b7b66`), fasiten re-målt (`d0e8bb0`). Abortstien I4 ble aldri utløst — men den ble verifisert KJØRBAR først: `git reset --hard` blokkeres av hooken, **`--keep` slipper**. Rød-settet etter pullen var NØYAKTIG én test, det pinnede transkriptet; goldenene (kriterium 8) uendret; `pyproject.toml`/`uv.lock` urørt. Denne raden instruerte om arbeid som var utført — samme drift-klasse som økt 4 felte.)* |
| ons 12. | **FRYSESEKVENSEN, i denne rekkefølgen. P4 ER LUKKET (man 10., økt 5 — fersk-klon-målingen var det eneste som gjensto, og den er kjørt på `c9787cf`), så sekvensen starter på prøven, ikke på en udefinert re-måling:** **generalprøve ×2** (bruk **distinkt**-tellingen `grep -oE "^ *Steg [1-8]" \| tr -d ' ' \| sort -u \| wc -l`**8**; linje-tellingen gir 9, se avviket under tabellen) → **FRYS****P4.5: FYLL UT demo-runbooken** (`docs/plan/2026-08-12-demo-runbook.md` — den er SKREVET man 10. økt 7, `c7a57d8`; onsdag setter inn tre målte felt og krysser av sjekklista i §5. Utfyllings-gaten: `grep -n '<<[A-ZÆØÅ-]*>>' docs/plan/2026-08-12-demo-runbook.md` → TOMT) → **S1.c-TAGGEN sist** (CHANGELOG-stempel + `git tag v1.0.0` + push til **`origin` ALENE** — synk + CHANGELOG-innhold er alt gjort man 10.; `[project.scripts]` lå i helgen, I3). **Alle beslutninger er tatt på forhånd — onsdag skal MÅLE og UTFØRE, ikke avgjøre.** **FRYSEN ER TRE KOMMANDOER, ikke en holdning — se frys-blokka under tabellen** (rent tre → noter X → gaten; arbeidstre-sjekken tilføyd tir 11. økt 11, fordi gaten er commit-til-commit og prøven leser treet). | | ons 12. | **FRYSESEKVENSEN, i denne rekkefølgen. P4 ER LUKKET (man 10., økt 5 — fersk-klon-målingen var det eneste som gjensto, og den er kjørt på `c9787cf`), så sekvensen starter på prøven, ikke på en udefinert re-måling:** **generalprøve ×2** (bruk **distinkt**-tellingen `grep -oE "^ *Steg [1-8]" \| tr -d ' ' \| sort -u \| wc -l`**8**; linje-tellingen gir 9, se avviket under tabellen) → **FRYS****P4.5: FYLL UT demo-runbooken** (`docs/plan/2026-08-12-demo-runbook.md` — den er SKREVET man 10. økt 7, `c7a57d8`; onsdag setter inn **to** målte felt (X + prøve-tidspunkt) og følger §5s **elleve** punkter i terminalen — **hakene settes ALDRI i fila**, og taggen bekreftes i punkt 11, ikke som et felt i §0; begge deler ville krevd en skriving etter taggen og gjort torsdagens identitets-anker rødt (tir 11. økt 12). Utfyllings-gaten: `grep -n '<<[A-ZÆØÅ-]*>>' docs/plan/2026-08-12-demo-runbook.md` → TOMT) → **S1.c-TAGGEN sist** (CHANGELOG-stempel + `git tag v1.0.0` + push til **`origin` ALENE** — synk + CHANGELOG-innhold er alt gjort man 10.; `[project.scripts]` lå i helgen, I3). **Alle beslutninger er tatt på forhånd — onsdag skal MÅLE og UTFØRE, ikke avgjøre.** **FRYSEN ER TRE KOMMANDOER, ikke en holdning — se frys-blokka under tabellen** (rent tre → noter X → gaten; arbeidstre-sjekken tilføyd tir 11. økt 11, fordi gaten er commit-til-commit og prøven leser treet). |
| tor 13. | **DEMO = v1 vises** (runbooken i hånda). **FØRST runbookens §6 — pre-flighten, før noen er i rommet:** rent tre (`git status --short --untracked-files=no` → TOMT) · tag-ankeret `git describe --tags --exact-match HEAD`**`v1.0.0`** (IDENTITET, ikke frys-gatens diff-med-unntak — de unntakene er onsdagens, og arvet hit ville de vært fail-open mot den parallelle `docs/`-sesjonen) · golden-diffen TOM. Feiler ankeret: les `git diff --stat v1.0.0..HEAD` UTEN unntak — kjøresti-filer = §3, kun `docs/` = upåvirket men vitende. Golden-diff ikke tom = §3, vis fasit-fila; aldri debugging på scenen. *(Tilføyd tir 11. — goldenen ble bygget for å fange regresjon onsdag→torsdag, men kommandoen sto som et show-element UNDER demoen; kjørt der oppdager den regresjonen samtidig med publikum.)* | | tor 13. | **DEMO = v1 vises** (runbooken i hånda). **FØRST runbookens §6 — pre-flighten, før noen er i rommet:** rent tre (`git status --short --untracked-files=no` → TOMT) · tag-ankeret `git describe --tags --exact-match HEAD`**`v1.0.0`** (IDENTITET, ikke frys-gatens diff-med-unntak — de unntakene er onsdagens, og arvet hit ville de vært fail-open mot den parallelle `docs/`-sesjonen) · golden-diffen TOM. Feiler ankeret: les `git diff --stat v1.0.0..HEAD` UTEN unntak — kjøresti-filer = §3, kun `docs/` = upåvirket men vitende. Golden-diff ikke tom = §3, vis fasit-fila; aldri debugging på scenen. *(Tilføyd tir 11. — goldenen ble bygget for å fange regresjon onsdag→torsdag, men kommandoen sto som et show-element UNDER demoen; kjørt der oppdager den regresjonen samtidig med publikum.)* |
| fre 14.lør 15. | **P5**: README (O4) | | fre 14.lør 15. | **P5**: README (O4) |
| deretter | **P6 → P7 → P8 → P9**, ett punkt per økt; STATE.md peker på øverste åpne | | deretter | **P6 → P7 → P8 → P9**, ett punkt per økt; STATE.md peker på øverste åpne |

View file

@ -21,9 +21,17 @@
| Felt | Verdi | Hvor det kommer fra | | Felt | Verdi | Hvor det kommer fra |
|---|---|---| |---|---|---|
| Frosset commit **X** | `<<X-HASH>>` | `git rev-parse HEAD` rett etter grønn generalprøve ×2 | | Frosset commit **X** | `<<X-HASH>>` | `git rev-parse HEAD` rett etter grønn generalprøve ×2 |
| Tag | `<<TAG-BEKREFTET>>` | `git tag -l v1.0.0` etter push til `origin` |
| Generalprøve ×2 | `<<PROEVE-DATO-TID>>` | tidspunktet begge kjøringene var grønne | | Generalprøve ×2 | `<<PROEVE-DATO-TID>>` | tidspunktet begge kjøringene var grønne |
**Det finnes med vilje ingen rad for taggen, og fraværet er bærende.** Et tag-felt kunne først
fylles ut *etter* §5s punkt 10 (push) — men §5s punkt 6 krever at utfyllings-gaten er **tom**, altså
før. Å fylle det ærlig ville krevd en commit **etter** taggen, og da står HEAD på den commiten mens
taggen står på `Z`: torsdagens §6 steg 2 (`git describe --tags --exact-match HEAD``v1.0.0`)
ville vært **rød på demo-morgenen**, av den ene gaten som måler identitet. Å la feltet stå ufylt
bryter gaten i stedet. Taggen bekreftes derfor **der den settes** (§5 punkt 11, tre kommandoer i
terminalen) og måles på nytt torsdag av §6 steg 2 — den er en handling som verifiseres, aldri et
tall som avskrives hit.
Alt annet i dette dokumentet er målt mandag 10. august mot det pinnede transkriptet Alt annet i dette dokumentet er målt mandag 10. august mot det pinnede transkriptet
(`tests/golden/demo-transcript.stdout`, 61 linjer) og står uendret. (`tests/golden/demo-transcript.stdout`, 61 linjer) og står uendret.
@ -200,7 +208,14 @@ og feilsøking på scenen koster mer enn fila.
--- ---
## 5. Krysses av onsdag 12. (etter generalprøve ×2) ## 5. Onsdag 12. — elleve punkter i rekkefølge (etter generalprøve ×2)
**Følges i terminalen. Hakene settes ALDRI i denne fila.** Punkt 6 er runbook-commiten `Y`, og alt
fra punkt 7 og ut skjer *etter* den. Et hake satt der havner enten ucommittet i treet — målt:
`git status --short --untracked-files=no` svarer da ` M docs/plan/2026-08-12-demo-runbook.md`, så
torsdagens §6 steg 1 blir rød — eller i en commit **etter** taggen, som gjør §6 steg 2s identitet
rød. Samme motsigelse som §0s manglende tag-rad, samme to gater. **Fila skrives ÉN gang onsdag
(punkt 6) og røres ikke etterpå.** Bruk papir, en annen skjerm eller hukommelsen.
- [ ] Generalprøve ×2 grønn — golden-diff tom begge ganger - [ ] Generalprøve ×2 grønn — golden-diff tom begge ganger
- [ ] K1: `grep -oE "^ *Steg [1-8]" <stdout> | tr -d ' ' | sort -u | wc -l` → **8** - [ ] K1: `grep -oE "^ *Steg [1-8]" <stdout> | tr -d ' ' | sort -u | wc -l` → **8**
@ -226,10 +241,16 @@ og feilsøking på scenen koster mer enn fila.
du gårsdagens dato inn i commiten som faktisk tagges. Avvik = `git commit --amend` du gårsdagens dato inn i commiten som faktisk tagges. Avvik = `git commit --amend`
overskriften, les på nytt, ikke tag før de er like. *(Sklir HELE sekvensen til torsdag morgen, overskriften, les på nytt, ikke tag før de er like. *(Sklir HELE sekvensen til torsdag morgen,
er alt i orden — Y og Z er da samme dag. Det er bare midnatt MELLOM dem som brekker enigheten.)* er alt i orden — Y og Z er da samme dag. Det er bare midnatt MELLOM dem som brekker enigheten.)*
- [ ] **Frys-gaten kjøres ÉN GANG TIL, rett før taggen** — samme kommando som over. Steg 2 målte en - [ ] **Frys-gaten kjøres ÉN GANG TIL, rett før taggen** — samme kommando som over. **Punkt 5** målte
tilstand som ikke lenger finnes: runbook-commiten (Y) og CHANGELOG-stempelet (Z) kom etterpå. en tilstand som ikke lenger finnes: runbook-commiten (Y) og CHANGELOG-stempelet (Z) kom etterpå.
Tom her = **det taggede treet er beviselig det prøvde treet**. Ikke tomt = IKKE tag. Tom her = **det taggede treet er beviselig det prøvde treet**. Ikke tomt = IKKE tag.
- [ ] `git tag v1.0.0` + `git push origin v1.0.0` (**`origin` alene** — `open/` er P5-vinduet) - [ ] `git tag v1.0.0` + `git push origin v1.0.0` (**`origin` alene** — `open/` er P5-vinduet)
- [ ] **Taggen bekreftet der den ble satt**`git tag -l v1.0.0``v1.0.0` · `git ls-remote --tags
origin v1.0.0` → **én linje** · `git describe --tags --exact-match HEAD` → `v1.0.0`.
Dette **er** tag-bekreftelsen; den skrives ikke inn i §0 (begrunnelsen står der). Den tredje
kommandoen er nøyaktig ankeret torsdagens §6 steg 2 leser — kjørt her koster den sekunder, og
en tag som landet på feil commit oppdages på **frysedagen** i stedet for på demo-morgenen.
Samme grunn som at §6 selv ble flyttet fra «under demoen» til «før rommet fylles».
--- ---