docs(P4.5): taggens FORM var onsdagens siste ufattede beslutning
Punkt 10 sa `git tag v1.0.0` — lettvekts. Repoets eneste andre tag er
ANNOTERT (målt: `git cat-file -t v0.1.0` → `tag`, melding
`v0.1.0 — first tagged release`), så hovedreleasen ville blitt den eneste
taggen uten forfatter, dato eller melding. Ingen gate ville stoppet det:
`describe --tags` og `tag -l` svarer likt for begge former (målt).
Onsdagen skal MÅLE og UTFØRE, ikke avgjøre. Slik den sto, måtte dagen
enten tagge lettvekts uten å se avviket, eller oppdage det og improvisere
en `-m`-melding på en enveis-dag. Meldingen står nå literalt i §5 punkt 10
— og KUN der; planens to rader peker dit, så det finnes ingen andre kopi
å drifte fra. Utfyllings-gaten står derfor fortsatt på 2: en placeholder
ville gjort meldingen til et tredje felt onsdag måtte fylle.
Formen er tørrkjørt i et engangs-repo, ikke resonnert: `-a` med em-dash gir
`tag -l` → v1.0.0, `describe --tags --exact-match HEAD` → v1.0.0, filtrert
`ls-remote` → 1 linje, og em-dashen overlevde skallet.
MIN FØRSTE HYPOTESE VAR FEIL, OG MÅLINGEN FELTE DEN: jeg trodde punkt 11s
«én linje» brakk for annoterte tagger, siden `ls-remote --tags origin` viser
den peelede `^{}`-refen. Målt mot EKTE origin: MED refspec-filter gir den
annoterte v0.1.0 én linje — `^{}` matcher ikke pattern-et. Punkt 11 var
robust hele tiden. Presisert i teksten, fordi neste leser vil ha samme tvil.
EN ANDRE DEFEKT FALT UT AV Å MÅLE MOT EKTE REMOTE: origin rate-limiter SSH
på burst. Målt: de to første ls-remote gikk igjennom, de fire neste ga
`Connection refused`, porten svarte igjen etter en pause, og Forgejo-weben
var oppe hele tiden (HTTP 303) — serveren var aldri nede. Punkt 11 kjører
to SSH-kall rett etter en push, altså nøyaktig et burst.
Alvorligheten ligger i at BEGGE utfall gir null linjer på stdout (målt):
taggen mangler = exit 0 + tom stderr; kom ikke fram = exit 128 + melding.
Et `| wc -l` kan ikke skille dem — så en rate-limitet bekreftelse leses som
«taggen landet ikke» dagen etter at push-en faktisk lyktes, på enveis-dagen.
Diskriminatoren er exit-koden; retteslen er vent-og-kjør-på-nytt, aldri
re-push eller re-tag. Samme klasse som §5 punkt 5s arm: en gate må kunne
feile på riktig grunn, og de to måtene den svikter på må se ulike ut.
Ingen nye punkter, ingen renummerering: begge endringene sitter PÅ punkt 10
og 11. Målt: §5 fortsatt elleve punkter · utfyllings-gaten 2 · CHANGELOG
urørt ([Unreleased] = 1, null link-refs) · kun to diff-hunks, begge i §5, så
§0/§1/§2/§3/§4/§6 er byte-urørt og økt 9s 67 målinger av §2 står · planens
to rader uendret i linjeantall og pipe-struktur (5/0 og 6/3, før = etter) ·
frys-gaten mot HEAD TOM og diskriminerende (c255662 = 6 filer).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019nZQkAJytbaUAYxMAU2wk7
This commit is contained in:
parent
1d30a47e68
commit
2319f04420
2 changed files with 26 additions and 3 deletions
|
|
@ -278,13 +278,36 @@ til **hakene** — de er det eneste som ellers ville havnet i fila etter `Y`.
|
|||
konstruksjon* (X var HEAD da); her har runbook-commiten (Y) og CHANGELOG-stempelet (Z) flyttet
|
||||
HEAD forbi X, så en `src/`-endring imellom ville dukket opp. 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 -a v1.0.0 -m "v1.0.0 — first complete eight-step loop"` + `git push origin v1.0.0`
|
||||
(**`origin` alene** — `open/` er P5-vinduet).
|
||||
**Annotert (`-a`), ikke lettvekts.** Repoets eneste andre tag er annotert — målt:
|
||||
`git cat-file -t v0.1.0` → `tag`, med tagger-header og meldingen `v0.1.0 — first tagged release`.
|
||||
En lettvekts `v1.0.0` ville gjort hovedreleasen til den eneste taggen uten forfatter, dato eller
|
||||
melding. **Meldingen står literalt her nettopp for at den ikke skal improviseres på en enveis-dag**
|
||||
— den er *ikke* et felt i §0, og utfyllings-gaten forblir derfor på **2**.
|
||||
Formen er tørrkjørt 08-11 (eget engangs-repo, ikke dette treet): `-a` med em-dash gir
|
||||
`git tag -l` → `v1.0.0`, `git describe --tags --exact-match HEAD` → `v1.0.0`, filtrert
|
||||
`ls-remote` → **1 linje**, og em-dashen overlevde skallet.
|
||||
- [ ] **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».
|
||||
**«Én linje» gjelder BEGGE tag-former**, så punkt 10s `-a` endrer ikke forventningen her.
|
||||
Målt mot ekte `origin` 08-11: den annoterte `v0.1.0` gir **to** linjer *uten* filter
|
||||
(`refs/tags/v0.1.0` + den peelede `refs/tags/v0.1.0^{}`), men **én** med `v0.1.0` som refspec —
|
||||
`^{}` matcher ikke pattern-et. Kjør den derfor **med** taggnavnet, som over.
|
||||
**⚠️ TOM UTSKRIFT ER TVETYDIG — LES EXIT-KODEN.** `origin` rate-limiter SSH på burst. Målt
|
||||
08-11: de to første `ls-remote` gikk igjennom, de fire neste ga `Connection refused`, og porten
|
||||
svarte igjen etter en pause — Forgejo-weben var oppe hele tiden (HTTP 303), så serveren var
|
||||
aldri nede. Punkt 11 kjører to SSH-kall rett etter en push, altså nøyaktig et burst.
|
||||
**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.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue