docs(plan): frys-gaten snudd til eksklusjonsform — den feilte OPEN

Første form listet kjørestien positivt (src/ tests/ shared/ pyproject.toml
uv.lock). En slik gate er blind for alt den ikke rakk å regne opp: målt på
1522e2a^..1522e2a rapporterer den to filer og slipper README.md OG CLAUDE.md
rett igjennom, mens eksklusjonsformen tar alle fire. På en enveis-dag skal en
gate feile lukket — en ny fil skal trippe den, ikke passere fordi ingen forutså
den.

Unntakene er nøyaktig det onsdagen skal skrive: docs/ (runbooken) og
CHANGELOG.md (stemples i samme trekk som taggen, så en gate som dekket den kunne
aldri blitt grønn). STATE.md er gitignorert og kan ikke dukke opp i en diff.

Begge de opprinnelige målingene re-kjørt på begge former med samme svar —
c255662..HEAD gir fire filer, a41272d..HEAD tomt. Funnet i advisor-review.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVmQfqWWEVTQnv7PkuLE9U
This commit is contained in:
Kjell Tore Guttormsen 2026-08-10 14:59:28 +02:00
commit 5135f099e3

View file

@ -484,17 +484,25 @@ er dokumenter er sant i dag, men sto ingen steder som noe onsdagen SJEKKER. To k
runbooken (P4.5). **X er ikke mandagens HEAD:** lander tirsdagens persona-pull, flytter X seg.
2. **Før taggen, kjør frys-gaten:**
```
git diff --stat <X>..HEAD -- src/ tests/ shared/ pyproject.toml uv.lock # → TOMT
git diff --stat <X>..HEAD -- . ':(exclude)docs/' ':(exclude)CHANGELOG.md' # → TOMT
```
Tomt = alt mellom prøven og taggen er dokumenter, altså **er det prøvde treet det taggede treet**.
**Ikke tomt = IKKE tag** — kjør generalprøven om igjen på en ny X.
**Gaten LISTER HVA SOM ER UNNTATT, ikke hva den vokter — den feiler LUKKET.** Første form listet
kjørestien positivt (`src/ tests/ shared/ pyproject.toml uv.lock`), og en slik gate er blind for alt
den ikke rakk å regne opp: **målt på `1522e2a^..1522e2a` rapporterer inklusjonsformen to filer og
slipper `README.md` OG `CLAUDE.md` rett igjennom, mens eksklusjonsformen tar alle fire.** På en
enveis-dag er det feil vei å feile — en ny fil skal trippe gaten, ikke passere den fordi ingen
forutså den. De to unntakene er nøyaktig det onsdagen SKAL skrive: runbooken (`docs/`) og
**`CHANGELOG.md`, som stemples i samme trekk som taggen** — en gate som dekket den kunne aldri blitt
grønn. (`STATE.md` er gitignorert og kan ikke dukke opp i en diff.)
**Gaten er MÅLT at den diskriminerer (08-10), ikke antatt** — en gate som bare kan bli grønn beviser
ingenting: `c255662..HEAD` (treet generalprøve nr. 0 faktisk kjørte på → HEAD) gir **fire filer**
(`pyproject.toml` · `__init__.py` · `test_smoke.py` · `uv.lock`) — versjonssynken som landet ETTER
prøven, altså akkurat den klassen gaten finnes for — mens `a41272d..HEAD` gir tomt.
**`CHANGELOG.md` står bevisst UTENFOR gaten:** den stemples i samme trekk som taggen, så en gate som
dekket den kunne aldri blitt grønn.
prøven, altså akkurat den klassen gaten finnes for — mens `a41272d..HEAD` gir tomt. Begge målt på
BEGGE former, med samme svar; det er kun README/CLAUDE-vinduet over som skiller dem.
**UTFØRT — GENERALPRØVE NR. 0 (2026-08-10). BESTÅTT, ingen kodeendring.** Ingen fil i repoet ble
rørt av prøven; den er ren måling. Planen forutsatte at prøven kjørte mot den forankrede reserven —