docs(P4.5): min egen komprimering gjorde tag-kommandoen ukjørbar

Advisor felte en defekt DENNE ØKTA innførte. Forrige commit skrev
`git tag -a v1.0.0` i STATE og planens to rader — uten `-m`. Jeg fjernet
den for én-kopi-prinsippets skyld, men prinsippet gjelder MELDINGSTEKSTEN;
`-m` er ikke innhold, det er flagget som gjør `-a` ikke-interaktiv. Før
økta bar STATE en komplett kjørbar kommando. Etter bar den en ufullstendig.

Failure-moden er MÅLT, ikke arvet fra reviewet (som antok at den henger):
`GIT_EDITOR=true` er satt i sesjonsmiljøet, så kommandoen henger IKKE — den
gir `fatal: no tag message?`, exit 128, og INGEN tag. I et skall uten
`GIT_EDITOR` åpner den en editor. Begge veier: ukjørbar som skrevet, på
enveis-dagen, etter at frys-gaten alt har passert. Runbookens punkt 10 var
korrekt hele tiden — feilen satt kun i de to sammendragene.

Rettet til `-m "<ordrett fra runbookens §5 punkt 10>"`: `-m` er synlig og
obligatorisk, meldingsteksten bor fortsatt ett sted, og utfyllings-gaten
står på 2 (vinkelparentesene er enkle og små — de matcher ikke `<<[A-ZÆØÅ-]*>>`).

PUNKT 10 ER NÅ KJØRT EKSTRAHERT FRA FILA, ikke håndskrevet (økt 13s
presedens: en kommando som ser riktig ut kan lyve, og repoet har en
bash-3.2-multibyte-historie). Hentet ut av linje 281 via generert skript
(`eval` er hook-blokkert), kjørt mot engangs-repoet: exit 0, og
`git cat-file -p v1.0.0` gir meldingen byte-identisk med em-dash intakt.

TO PÅSTANDER FRA FORRIGE COMMIT VAR UMÅLTE, OG ER NÅ ERSTATTET AV MÅLINGER:

1. «vent et halvminutt» var et tall jeg aldri målte — jeg målte at porten
   svarte igjen, ikke hvor lenge den var stengt. Samme klasse som §1s
   `/tmp/po-sim-…`-sti økt 9 drepte. Erstattet av proben som FAKTISK ble
   observert virke: `ssh -T git@git.fromaitochitta.com` → `Hi there, ktg!`.
   En probe kan ikke bli foreldet slik et gjettet intervall kan.

2. «aldri re-push» var for absolutt. Målt: `git push` av en uendret tag gir
   `Everything up-to-date`, exit 0 — og hvis det var PUSH-en (punkt 10) som
   ble rate-limitet, ER retry den påkrevde utveien. Forbudet er nå snevret
   til det som faktisk er farlig: `git tag -f` + force. Uten force er selv
   det fail-closed — målt: `! [rejected] … already exists`.

Målt etter rettelsen: utfyllings-gaten 2 · §5 fortsatt elleve punkter ·
punkt 10 fortsatt på linje 281 og kjørbar · CHANGELOG urørt · planens to
rader uendret i linjeantall (705) og pipe-struktur (5/0 og 6/3) · frys-gaten
mot HEAD TOM.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019nZQkAJytbaUAYxMAU2wk7
This commit is contained in:
Kjell Tore Guttormsen 2026-08-11 22:33:58 +02:00
commit 777b9f7225
2 changed files with 11 additions and 5 deletions

View file

@ -305,9 +305,15 @@ til **hakene** — de er det eneste som ellers ville havnet i fila etter `Y`.
**Begge tilfellene gir null linjer på stdout** (målt): taggen mangler = **exit 0** og tom
stderr · kom ikke fram = **exit 128** og `ssh: connect to host … Connection refused` på stderr.
Et `| wc -l` alene kan altså ikke skille dem, og lest som «taggen landet ikke» er det en abort
på feil grunnlag — dagen etter at push-en faktisk lyktes. **Exit 128: vent et halvminutt og
kjør kommandoen på nytt. Ikke re-push, og ikke re-tag.** `git tag -l` er lokal og svarer
uansett; den skiller «tagget lokalt» fra «nådde origin» uten å røre nettverket.
på feil grunnlag — dagen etter at push-en faktisk lyktes. **Exit 128: vent til porten svarer
igjen, og bruk en probe — ikke en klokke:** `ssh -T git@git.fromaitochitta.com` → `Hi there,
ktg!`. Det er dette som kom tilbake da forbindelsen løsnet 08-11; **ingen fast ventetid er
målt**, så et tall her ville vært gjettet. Kjør så kommandoen på nytt. `git tag -l` er lokal og
svarer uansett; den skiller «tagget lokalt» fra «nådde origin» uten å røre nettverket.
**Ble PUSH-en selv rate-limitet (punkt 10), er retry både riktig og trygt** — målt: `git push`
av en uendret tag gir `Everything up-to-date`, exit 0. **Det som ALDRI skal gjøres er å FLYTTE
taggen** (`git tag -f` + force-push). Uten force er selv det fail-closed — målt: remote svarer
`! [rejected] … already exists`.
---