Operatør-ratifisert 2026-08-03. G7 var gapet for korreksjoner som er RIKTIGE
men større enn O2-konvolutten (én lokator + kun-sletting). Uten eier falt de
stille ut: O2-triagen avviser dem, O3 dekker dem ikke, og review-sporet hadde
ingen inngangskø.
Formvalget ble tatt på §9.6-målingen, ikke på preferanse:
- 2 av 4 anvendte subtraksjoner etterlot en rest -> rester er delete-only-
konvoluttens NORMALE biprodukt, ikke et unntak.
- 2 av 5 medlemmer (idx 17, 33) er ERSTATNINGER, ikke fler-lokator. En
delete-orientert O4-klasse med egen retur-kontrakt ville ikke fikset dem —
altså feil dimensjonert mot evidensen. Køen absorberer begge klasser.
Artefakter (TDD, test-først):
- data/g7-review-queue.json — 6 entries, tracked
- lib/g7-queue.mjs — validateQueue, lukkede vokabular
- check-g7-queue.mjs — exit 1 ved drift eller skjemafeil
- tests/kb-eval/test-g7-queue.test.mjs — 15 tester
Kontrakten: ankere er ORDRETTE strenger, aldri linjenummer (line != real_line
i 9 av 17 R11-records). En åpen entry hvis anker slutter å matche gir
anchor_drift og exit 1 — den kan ikke falle stille ut, som er hele hensikten.
En resolved entry MÅ føre resolution, ellers er "resolved" ikke til å skille
fra "stille droppet". Ingenting i køen er maskin-anvendbart per definisjon.
Innhold: 5 åpne (26, 27, 33, 36, 18), 1 lukket (17). idx 27 kom hit ved å
falle ut av O2 på cond 3; idx 26 ved operatørens avvisning av delvis fiks.
Suite 1047/1047. [skip-docs]
Operatør-ratifisert 2026-08-03. Sletter udokumenterte påstander fra tre
KB-filer: score-threshold-båndene og 'Automatic indexing av vectors'
(rag-caching-optimization), to ikke-støttede AISPM-attribusjoner
(ai-threat-modeling-stride), og SharePoint som feedback-lagring
(feedback-loops). idx 14 er den REDUSERTE subtraksjonen — 'Automatically'
beholdes, siden linje 566 hevder automatikk.
Ikke ratifisert og ikke anvendt: idx 26, 27, 36, 18.
Driver ankrer på file_text_verbatim, aldri linjenummer, og avbryter uten
å skrive ved tvetydig anker, ikke-sletting eller ny ordform. 11 tester.
Suite 1032/1032. [skip-docs]
Måleresultatets sentrale påstand — at forslagene er tekstlig ærlige — hvilte på
et sesjons-lokalt skript ingen kunne etterprøve. Flyttet inn som bibliotek + CLI
med tester, så tallet kan reproduseres fra fersk klon:
node scripts/kb-eval/check-o2-returns.mjs
Sjekkene avgjør IKKE O2 — betingelse 2 og 3 er fortsatt menneskelige. De
avgrenser de to feilmodusene et menneske ikke fanger billig over 46 forslag:
- V1: sitert filtekst må finnes ordrett i fila (fanger oppdiktet tekst og stille
æøå-transliterering). Gjelder HVER rad, også O3 — en O3 basert på oppdiktet
tekst er like feil, bare feil i trygg retning.
- V2: forslaget må kunne oppnås ved kun å slette tegn.
- V2b: V2 alene er for svak — 'Automatically add' -> 'Add' passerer fordi den
store A-en fantes inne i det slettede ordet. Ordnivå-sjekk, case-sensitiv.
- V3: skjema- og verdikt-koherens.
Suite 996 -> 1021.
Fire subagenter til (idx 25-46), samme rammer: read-only, ingen writes/commits,
ingen web-oppslag, evidence_quote som eneste kilde. To presiseringer i prompten
etter bølge 1: forslaget må være oppnåelig ved kun sletting (behov for
omskriving er i seg selv O3-bevis), og eksplisitt leveringsplikt.
Totalt 46/46: 17 O2-kandidater, 29 O3, 0 locator-bom.
Maskin-verifikasjon: 46/46 passerer V1 (ordrett filtekst), 16 av 17 O2-forslag
passerer V2+V2b; ett flagget (idx 14, rekapitalisering).
Alle 29 O3-er felles av betingelse 3 — kilden leverer en korrigert verdi.
Fire subagenter (Opus, read-only, ingen writes/commits, ingen web-oppslag)
klassifiserte idx 1-24 mot §5s tre O2-betingelser. Returene er evidens, ikke
regenererbare, og lagres derfor tracked etter samme mønster som fase0-returns.
Maskin-verifikasjon av returene (V1/V2/V2b):
- V1: alle 24 file_text_verbatim finnes ordrett i de faktiske filene (æøå og
markup intakt) — oppfunnet tekst ville ryket her.
- V2: alle O2-forslag er deletion-only mot den teksten.
- V2b: ett flagg (idx 14) — 'Automatically add' -> 'Add' er en rekapitalisering,
altså en tekstendring og ikke ren fjerning. Går til menneskelig review.
Bølge 1: 7 O2-kandidater, 17 O3, 0 locator-bom.
Implementerer den ratifiserte §4b-tabellen i lib/fix-op.mjs (19 nye tester,
suite 996/996). Alle tre skrankene har egne tester: tabellen er LUKKET, fil-
tokenet må være en KOMPLETT livssyklus-etikett, og verdien som skrives er den
korpus-side ekvivalenten med filas egen markup bevart.
To implementasjonsvalg den ratifiserte teksten lot stå åpne, begge løst mot
fail-closed: status-lokatoren er LINJE-scopet (livssyklus-vokabular gjentas
nedover hver kolonne i en statustabell, så et blokkvindu er tvetydig ved
konstruksjon), og et sitat som hevder to rader aborterer.
MÅLT: 15 pilot / 54 korpus-brede flagg -> 5 og 8 provbare. Alle 8 hånd-dømt
mot kilden (r11-pilot-results.md appendiks B): 5 korrekte, 1 ubevist, 2 GALE.
De tre defektene er én familie: §4b binder tabellen, etikettens fullstendighet
og verdien som skrives — og INGENTING om hvorvidt kilde-frasen refererer til
radens eget subjekt. Samme proveniens-uten-referent-defekt som falsifiserte §4.
Klassen er derfor REVIEW-grade, ikke apply-grade: `status` står bevisst utenfor
o1_recommended, ingen driver applikerer den.
To kandidatvilkår er kostnadsberegnet over de åtte (begge dreper gale forslag
og null korrekte) men IKKE implementert — å utvide en tabell operatøren
ratifiserte som lukket er en operatørbeslutning, slik vilkår 5 var i §4a.
Rettet samtidig 2 NUL-bytes i testfila (pre-eksisterende, fra en tidligere
økt) som gjorde at git behandlet hele fila som binær og blokkerte diff-
gjennomgang før commit.
§10-målingen er gjennomført mot live ledger (243 records). Ingen KB-fil er
redigert og ingen ledger-record er skrevet — §8s single-writer-state er urørt.
Instrumentet ER O1-driveren med writes av (scripts/kb-eval/lib/fix-op.mjs, 30
tester). Måling #1 og #3 kommer dermed ut av mekanismen som senere skal ta på
korpuset, ikke ut av en proxy-heuristikk.
HOVEDFUNN — §4 som skrevet er utilstrekkelig, målt:
Kjørt eksakt som spesifisert slapp den gjennom 6 swaps på piloten, hvorav 4 er
GALE editer (presisjon 2/6):
- 30-dagers → 24-dagers (enhets-kryssing: kilden sier 24 HOURS)
- 3000 req/sek → 50 (metrikk-kryssing: query-throttle vs indexing-rate)
- Microsoft Agent 365 → 7 (identifikator lemlestet, «7» høstet fra «E7»)
- text-embedding-ada-002 → ada-2 (identifikator lemlestet)
§4 binder proveniensen til verdien og formen på editen — ingenting om at de to
tokenene betegner SAMME STØRRELSE. Påstanden om at invarianten er «deliberately
stronger than human review at scale» holder ikke.
TILLEGG: contextCorresponds() krever samme label eller samme enhet på begge
sider. Bevisst leksikalsk, UTEN oversettelsestabell — «dokumenter» læres ikke å
være «documents», fordi en synonymtabell innfører en ny faktakilde og er en
operatørbeslutning. Konsekvensen er målt: swap er provbar praktisk talt bare der
konteksten er språknøytral (URL, kodeeksempel, parameternøkkel).
TALLENE:
- Pilot (≥7): 24 filer / 202 flagg → O1 = 2 (1,0 %), O3 = 200 (99,0 %)
- Hele korpuset: 218 filer / 776 flagg → 15 sluppet gjennom, 9 korrekte
- Kun iso_date (api-version-bump) overlever hånd-verifisering: 9/9.
number/version lemlester identifikatorer (AI-900 → AI-901, gpt-4o → gpt-5.1o
×2, Java-agent 3.7.5 → 3.4.0 = nedgradering) og skal IKKE påføres.
- Kun 7 av 200 aborter (3,5 %) er en fiksbar engineering-gap. Mer locator-
arbeid kan ikke flytte O1-tallet vesentlig.
Måling #2 (R8 → O2) er IKKE besvart og kan ikke besvares maskinelt: R8 gir null
O1, og hvilke av de 46 enumerasjonene som subtraherer rent avhenger av dommerens
PROSA-reason. Måling #4 (review-throughput) er ikke målt — det krever
menneskelige review-økter som ikke har skjedd. Begge står som ikke-målt, ikke
som antatt.
VIDERE FUNN: subtraksjon kan etterlate en misvisende rest (§5 sier den «cannot
introduce a new error» — sant om setningen, usant om leserens slutning), og kan
ødelegge sann informasjon (prebuilt-check → finnes, heter prebuilt-check.us).
`disposition` er `outdated` på 202/202 og bærer null informasjon, i strid med
flagg-formatspesifikasjonen. `claim` matcher fillinjen ordrett i 0 av 202.
Full oppskrift og åpne operatørbeslutninger: docs/r11-pilot-results.md
De siste 21 R7.5-filene (payload-31..51) dømt i to parallelle arbeider-tabber,
integrert serielt her.
- 375 claims, 82 flagg (64 not_grounded + 18 source_silent)
- Ledger 222 → 243 records (229 flagged / 14 pass), flagg 902 → 984
- R7.5-batch 30 → 51 = full-pass-worklisten dømt ferdig
Verifisering før ingest:
- Egen telling per fil mot dry-run: 21/21 eksakt match
- ID-fidelitet mot r75-claims-manifest.json: 21/21 eksakt, riktig rekkefølge
- Fold-grep begge dialekter over 375 reason-felt: 0 treff
- Mot HEAD: 0 records tapt, 0 eksisterende records endret
result-38 (async-processing-patterns.md) var eneste pass-record. Re-judge-gate
kjørt før stempling med blind dommer (forbud mot å lese results/ og manifestet):
15/15 grounded, per-claim enighet med originalen, flere dommer nådd via andre
kildesider. ENIGHET → born-verified stempel påført.
Suite: 947/947.
Ti dommere (R75J-11..20) kjørt parallelt med live MS Learn-fetch per claim.
Alle ti returnerte, validerte 10/10 mot slot + claim-id-sett, og ingen
foldet ASCII — verifisert mot BEGGE dialektene (ae/oe og enkelt-vokal a/o),
0 treff. Mot 2/10 foldet i bølge 1 med samme modell og effort; forskjellen
er den skjerpede prompten med eksempler på begge foldemønstre.
Ingen pass-record i bølgen, så ingen re-judge-gate og ingen stempling —
manifestet er eneste endrede fil.
- 11 model-fingerprinting-watermarking.md ......... 21 claims, 7 flagg
- 12 norwegian-content-safety.md .................. 23 claims, 5 flagg
- 13 output-validation-grounding-verification.md .. 19 claims, 3 flagg
- 14 owasp-llm-top10-azure-mitigations.md ......... 18 claims, 2 flagg
- 15 pii-detection-norwegian-context.md ........... 19 claims, 4 flagg
- 16 prompt-injection-defense-patterns.md ......... 14 claims, 3 flagg
- 17 security-copilot-integration.md .............. 34 claims, 9 flagg
- 18 security-scoring-rubrics-6x5.md .............. 21 claims, 4 flagg
- 19 supply-chain-security-ai-models.md ........... 17 claims, 9 flagg
- 20 ai-builder-credits-transition.md ............. 23 claims, 5 flagg
Ingest dry-run kryssjekket mot egen telling fil for fil før ekte ingest.
Judge-dato 2026-08-01 (reell dato, ÅS#1) lagt inn for slot 11-20.
Ledger 202→212 records (199 flagged + 13 pass), 803→854 flagg.
R7.5: 20/51 dømt. Suite 947/947.
Re-judge-gate for disconnected-ai-scenarios.md (eneste pass i bølge 1):
blind dommer R75G-01 (forbud mot å lese r75/results/ og manifestet) ga
19/19 grounded — identisk med originalen på hver claim-id, 0 uenigheter.
ENIGHET → apply-verified-stamp.mjs dry-run bekreftet «would stamp: 1»,
deretter --write (1 stamped, 12 already stamped, 0 failed). KB-diffen er
kun de to stempel-linjene, kroppen byte-identisk.
Dommer 03 og 08 re-kjørt med nye agentnavn (R75J-03b, R75J-08b) etter at
begge foldet ASCII i bølge 1. Begge returnerte æøå intakt — verifisert mot
BEGGE folde-dialektene (ae/oe og enkelt-vokal a/o), 0 treff.
- result-03 ai-incident-response-procedures.md: 21 claims, 12 flagg
- result-08 data-leakage-prevention-ai.md: 27 claims, 9 flagg
Judge-dato satt til reell dato 2026-08-01 for begge (ÅS#1), ikke
batch-identitetsdatoen 2026-07-31 de arvet fra bølge 1.
Ledger 200→202 records (189 flagged + 13 pass), 782→803 flagg.
R7.5: 10/51 dømt. Suite 947/947.
Bølge 5 avslutter ms-ai-infrastructure/bcdr/ og dermed hele R7.4-batchen.
Ingen pass-record i bølgen, så re-judge-gaten utløses ikke og
apply-verified-stamp.mjs er ikke kjørt (verified uendret på 12).
Dekningskontroll: alle 49 filer i r74-batch.json finnes i ledgeren som
R7.4-records — ingen manglende, ingen ekstra. validate-result.mjs 10/10 OK.
Suite 947/947 grønn.
Pending etter R7.4: 51 filer (R7.5). Flagg totalt 712 → 748.
Avslutter responsible-ai/ (slot 30-33) og starter ms-ai-infrastructure/bcdr/
(slot 34-39). Ingen pass-record, så re-judge-gaten utløses ikke og
apply-verified-stamp.mjs er ikke kjørt (verified uendret på 12).
validate-result.mjs: falsk positiv rettet — «opplyser» sto i
folding-heuristikkens ordliste, men er ordinært norsk uten foldet vokal
(ae/oe/aa) og blokkerte et korrekt result-32. Oppføringen er fjernet med
begrunnelse i koden. Regresjon: alle 39 resultater validerer, og
kontrolltest bekrefter at ekte folding (paa/staar/noeyaktig/loesning/
maaned/ogsaa/naar/aapen/stoette/tjenesteomraade) fortsatt fanges.
Suite 947/947 grønn. R7.4: 39/49 dømt. Flagg totalt 657 → 712.
Alle 10 filene i responsible-ai/ dømt av separate Opus-agenter med live
MS Learn-fetch. Ingen pass-record, så re-judge-gaten utløses ikke og
apply-verified-stamp.mjs er ikke kjørt (verified står uendret på 12).
validate-result.mjs: 10/10 OK (slot-binding, claim-id-mengde, lukket
verdikt-sett, folding-heuristikk). Suite 947/947 grønn.
R7.4: 29/49 dømt. Flagg totalt 585 → 657.
Ekstraksjon komplett for hele R7.3-batchen (neste 49 av 149 pending, worklist-
rekkefølge): 1008 claims over 49 filer, null valideringsfeil. Manifest og 49
v3.1-payloads bygget deterministisk.
Judge-pass startet: 5 filer dømt blindt mot live MS Learn (alle flagged, 33 nye
flagg) og ingestet serielt etter dry-run. Ingen pass-records → verken re-judge-
gate eller stempling utløst.
Ledger: 99 records (R7.1 45 + R7.2 49 + R7.3 5), 88 flagged / 11 pass, 287 flagg.
Suite 947/947.
Premiss-verifisering mot ground truth (simulert R7-stempler insertVerifiedFields
over 327 non-advisor-filer): RX-HDR-populasjonen kollapser fra påstått 10 til 2.
De 9 'base-felt forbi 500B'-filene er falske positiver — stempleren setter Verified
øverst, uavhengig av hvor Status/Category ligger. Kun 2 filer er ekte ustempelbare
(gpt5-gpt41-pricing-models, entra-agent-id-zero-trust): headere med fete **Status:**-
prosahaler (175B/199B) der begge stempler (Verified + Verified by, judge-v3.1) ikke
får plass i 500B. Feltomstokking løser dem ikke — verdi-slanking kreves (utenfor
RX-HDRs scope), så de folder inn i R7s eksisterende 'header-slanking kreves'-flagg-sti.
audit-corpus-headers.mjs: ny ren isStampable() kjører R7s ekte stempler med fast
representativ probe (dato + judge-v3.1); per-fil 'stampable' + aggregat 'unstampable'
+ FLAG-liste. Gjør populasjonen permanent så den ikke stille kan vokse (gap-disiplin).
+2 tester (dense→ustempelbar, clean→stampable). Suite 924→926 exit 0.
Løser dual-header der filer bærer BÅDE **Dato:** (opprettelse) OG **Last updated:**
(endring). Ground truth 2026-07-16 + git first-commit-map (2026-04-08 for alle 5):
- 4 distinkte (**Dato:** 2026-02-04, FØR git first-commit → ekte opprettelsesdato):
relabel **Dato:** → **Created:**, verdi byte-bevart (norsk→engelsk label-rename).
- 1 identisk (mlops-security-access-control: **Dato:**=**Last updated:**=2026-06-19,
ETTER git first-commit → metadata-artefakt, ikke ekte opprettelsesdato): drop redundant
**Dato:**. Relabel ville påstått falsk opprettelsesdato — drop er sannferdig.
Ny ren primitiv dropRedundantBoldField (kaster uten identisk-verdi bevis-felt),
gjenbrukt relabelHeaderDialect m/ CREATED_MAP. Manifest-drevet dedup-dato.mjs med
hard per-fil-invariant FØR skriv (relabel: 1 linje, kun label-token; drop: net -1,
Last updated bevart), atomicWriteSync, idempotent. Ingen validator håndhever lukket
feltliste → **Created:** er additiv/konform.
+15 tester (dropRedundantBoldField, CREATED_MAP-relabel, applyOp, manifest, 2 corpus-
guards) + oppdatert stale Enhet-2 carve-out-guard til post-3b-sannhet. Suite 910/910
exit 0. validate-plugin 250 PASS/0 FAIL. Datoløse dual-**Dato:**-filer 5→0.
De 87 referansefilene bar en plain-text `| Verified: <dato>`-hale på **Last updated:**-linjen
i 500B-header-vinduet — usynlig for den bold-only kontrakt-stacken (kb-headers.mjs / audit
RE_VERIFIED), og claimet en verifisering judgen aldri gjorde (samme poison-klasse som de 14
bold **Verified:** MCP Spor 1 fjernet). Uhåndtert springer den også dual-Verified-fellen: R7s
insertVerifiedFields ville stemplet en bold-verdi ved siden av den plain → to motstridende
provenance-claims per fil.
- ny driver strip-stale-verified-pipe.mjs: frosset 87-manifest (18 advisor + 45 eng + 8 gov +
16 sec), pure verdi-bevarende strip (kun ` | Verified: …`-halen; **Last updated:**-dato
byte-eksakt), hard per-fil-invariant (linjeantall uendret, body byte-identisk, dato bevart),
idempotent, atomicWriteSync (RX-OPS2 recovery-kontrakt).
- audit-corpus-headers.mjs: ny plain-Verified-deteksjon (RE_PLAIN_VERIFIED + plainVerifiedPipe)
— gjør M4-blindheten synlig så en stale plain-hale ikke kan gjenoppstå stille (non-advisor scope).
- 87 filer strippet; plain Verified i vinduet 0/389; live-audit plainVerifiedPipe 0.
Mekanisme: +15 tester (12 strip + 3 audit). Suite 875→890 exit 0. validate-plugin.sh 250/0.
Utsatt → RX-KB1b: footer-dato-avvik + label-whitelist (annen dialekt, flag-to-human).
Rotårsak-mekanisme: scripts/kb-update/data/ai-act-deadlines.json er nå eneste
kilde for AI Act-frister; CLAUDE.md-tabellen, assessor-malen og begge hooks
synk-testes mot den (tests/kb-update/test-ai-act-deadlines-sync.test.mjs, 9
tester, TDD rød→grønn). Suite 815/815.
- B2: «Kommisjonen kan fremskynde»/«ytre grense» fjernet (trigger droppet i
endelig Omnibus-tekst)
- B3: status oppdatert i alle 3 lag — formelt vedtatt (EP 2026-06-16, Rådet
2026-06-29), trer i kraft ved OJ-publisering (ikke publisert per 2026-07-15,
verifisert mot EUR-Lex 32024R1689)
- B4: Art. 50-raden «Gjeldende» → «Fra 2026-08-02»
- B5: stop-hooken feilmerket 2026-08-02 som «GPAI-frist» — begge hooks leser
nå kilden, 0 hardkodede frist-literals
- R3-5: 2026-12-02-raden (Art. 50(2)) inn i assessor-malen
- M10: Nkom navngitt som koordinerende markedstilsynsmyndighet + nasjonalt
kontaktpunkt (kilde: nkom.no/ki/regulering/hvem-handhever)
- pending_oj-markører i kilden for RX-REG² (nudifiserings-forbud, Art. 111)
- .gitignore: whitelist for den kuraterte frist-kilden
To operasjoner, én økt (⊥ R7), begge ren metadata-normalisering (verdi aldri fabrikkert).
Premiss-korreksjon (ground truth 2026-07-07): roadmap sa «27 none + 4 ai-act».
Målt: 29 mangler bold **Status:** = 25 rene none + 4 ai-act (plain Status: GA).
De «27» inkluderte 2 for mye — 2 filer (custom-dashboards-ai-operations,
zero-trust-ai-services) har bold **Status:** KUN forbi byte 500 (present for
full-fil-audit, usynlig for 500B header-parser) → egen header-slanking-residual
(§8-register), utenfor Enhet 3.
Op A — Status-backfill 25 rene none: utvidet backfill-status.mjs MANIFEST 14→39
(samme statusForFile + insertMetaField + hard per-fil-invariant, idempotent skip
på de 14 R21-gjorte). Alle 25 → **Status:** Established Practice (ingen matcher
template|matrix|benchmarks|register). Diff +25/-0.
Op B — ai-act dual-header-dedup (4 filer): ny driver dedup-plain-header.mjs + 2
rene primitiver i transform.mjs — boldifyPlainField (plain→bold, verdi bevart
byte-eksakt, header-scoped, idempotent) + dropRedundantPlainField (sletter plain
KUN når bold m/ identisk verdi beviser redundans; kaster ved avvik/manglende bold).
Per fil: plain Last updated: + Status: GA → bold (2026-06-18/2026-02, GA bevart),
redundant plain Category: fjernet. Hard per-fil-invariant (net -1 linje, begge
felt bold m/ bevart verdi, ingen plain-header igjen, body byte-identisk). Diff -12/+8.
Verifisering: test-backfill-status 8/8 + test-dedup-plain-header 13/13; audit
Missing Status 29→0, Missing English Last updated 4→0; skills-diff 29 filer
+33/-12 (kun **Status:** + 8 bold-swaps), diff-kontekst inspisert per fil; begge
drivere idempotent (re-run 0 writes); suite 806/806 exit 0; none=8 uendret (Enhet 4).
Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/
infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk
(fra første ## seksjon), advisor urørt (0 endringer).
To applier-fixes oppdaget under kjøring (TDD, RED→GREEN):
- insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer
500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor
scan-vinduet, applierens post-write-assertion fanget + restaurerte).
- normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i
500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var
ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent
utvidelse av carve-out; kun stray metadata-linjer, aldri prosa.
test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet
(fila bærer nå Source). Suite 728/728 grønn.