Linje-cappen på 25 var ikke en reduksjon, men en seleksjon etter fast
rekkefølge. Målt 2026-08-26 (bake-off arm A2b, flatt org/, 55 korpusdokumenter):
61 filer og 183 felt inn, 24 felt ut — alle fra 8 filer — mens 1 013 av de 4 000
verditegnene sto ubrukt. 53 filer var usynlige, og usynligheten var stille:
brukeren tror pluginen er onboardet mens rådet er generisk.
Sammendraget bygges ambient ved sesjonsstart, FØR det finnes et spørsmål, så det
finnes ingen relevans å rangere mot. Når man ikke kan rangere, er det ærlige
alternativet å dekke:
- linjebudsjettet utledes fra filantallet (én linje per fil) i stedet for å være
konstant, begrenset av MIN_COVERAGE_VALUE_LEN = 60 tegn per linje — forankret
i den designede onboardingens egne feltlengder (median 34, snitt 75, maks 278)
- seleksjonen er bredde-først på tvers av filer: hver fil gir fra seg sitt første
felt før noen fil gir fra seg sitt andre. Emisjonsrekkefølgen er fortsatt
filrekkefølgen, så leserekkefølgen er uendret
- overflow-markøren oppgir hvor mange FILER som er utelatt, ikke bare felt
Målt mot bake-off-harnesset (forhåndsregistrert gullsett, 40 spørsmål x 4
frikontekst-lengder), kontrollmålt mot git stash:
n=55 A2b 10/160 -> 160/160 (kostnad 4 443 -> 4 923 tegn)
n=25 A2b 10/160 -> 68/160
n=10 A2b 10/160 -> 24/160
A2b treffer nå last-alt-taket (identisk på alle fire korpusstørrelser) til 4 923
tegn mot 33 127. Ved den designede onboardingen (6 filer, 19 felt) er hookens
output byte-identisk med før — kostnaden øker kun der den gamle koden skjulte
dokumenter. Lesesiden verifisert ende-til-ende: hooken emitterer 62 linjer mot
25, med markøren "0 av 61 filer helt utelatt".
Reach-metrikken sier at dokumentet er representert, ikke at svaret er riktig;
hver fil bæres av ~65 tegn av sitt første felt. Den harde faktum-metrikken er
ugyldig — dens egen kjent-positiv (last-alt) treffer bare 4/40.
Tester: 7 nye i test-user-data.test.mjs (3 røde mot HEAD, verifisert med git
stash). Sporet suite 1070/1070.
[skip-docs]: intern reduksjonsmekanikk. Ingen kommando, agent, skill eller hook
endrer grensesnitt; README/CLAUDE.md beskriver ingen av disse konstantene.
Operatoerbeslutning: naar linje-cappen (25) sprekker, skal fri kontekst
overleve i stedet for aa vaere det foerste feltet som forsvinner.
Fri kontekst legges SIST fordi den skal LESES sist. Under et rent head-slice
gjorde nettopp det den til den foerste som falt ut - og det er den ene sloten
brukeren skriver fritt i, som onboarding-agent.md:125 selv kaller den
enkeltkategorien som gjoer raadene mest treffsikre. Posisjon i sammendraget er
en lese-rekkefoelge, ikke en prioritetsrekkefoelge; kuttet blandet de to.
Ved overflow beholdes naa (cap-2) strukturerte felt + fri kontekst + markoer,
altsaa fortsatt noeyaktig cap linjer. Uten fri kontekst er kuttet uendret.
Dette ble den bindende grensen foerst etter a7098e0: med readdir aapnet kan
brukeren legge til filer fritt, saa terskelen paa 26 felt naas naa av
brukerhandling og ikke bare av design.
Verifisert paa den ekte hooken: 40 felt + fri kontekst gir 25 linjer, med
"Fri kontekst" som siste felt og markoeren "(+22 flere felt)" til slutt.
TDD: 2 nye tester, skjermingstesten roed foerst mot forrige commit. Den andre
pinner at overflow UTEN fri kontekst er uendret (back-compat). Suite 1064/1064.
[skip-docs]: ren intern mekanikk - ingen endring i utoverrettet flate.
To maalte defekter i lastesiden for brukerkontekst (underlag: designnotatets
paragraf 3.1-3.3, maalt ved aa kjoere den ekte mekanismen):
1. DEFAULT_MAX_VALUE_LEN = 160 kappet hvert felt uavhengig av hvor mye av
budsjettet som sto ubrukt. Maalt: et 300-tegns svar tapte 47 prosent, et
2000-tegns svar 92 prosent - ogsaa free-context.md, gjennom sin egen
kodevei. Erstattet av DEFAULT_MAX_TOTAL_LEN = 4000: et totalbudsjett fordelt
max-min-rettferdig over feltene som overlever linje-cappen.
Hvorfor 4000: det er noeyaktig hva den gamle formen alt tillot i verste fall
(cap 25 linjer x 160 tegn), saa endringen er kostnadsnoeytral mot dagens tak
og strengt bedre under det. Fordi budsjettet deles kun over de hoeyst 25
feltene som faktisk skrives ut, faar intet felt mindre enn 4000/25 = 160:
den gamle cappen er blitt gulvet. Begrunnelsen staar der konstanten
defineres.
Per-felt-cap var feil FORM, ikke bare feil tall: den kan ikke uttrykke at ett
langt, viktig svar overlever fordi fem korte ikke trengte sin andel.
2. readOrgFiles itererte den frosne ORG_FILES-lista uten readdir, saa en fil
brukeren la til i org/ naadde aldri modellen. Begge sider er endret - hooken
leser katalogen, og buildOrgSummary ignorerer ikke lenger filnavn utenfor
ORG_FILES - ellers ville endringen vaert en no-op som ser ut som en fiks.
Bare de fem kanoniske teller fortsatt mot onboarding-fullfoerthet.
Ny ren, delt hjelper orderOrgFiles(names) gir begge sider samme deterministiske
rekkefoelge: ORG_FILES foerst, saa oevrige .md sortert, free-context sist.
Verifisert paa den ekte hooken mot en fixture-org-katalog, med kontrollmaaling
mot HEAD: den syvende fila var usynlig foer og gir 43 tegn naa; en 1198-tegns
fri kontekst ble kappet til 160 foer og overlever hel naa.
TDD: 10 nye tester i tests/kb-update/test-user-data.test.mjs, alle roede foerst
(7 assertion-feil mot gammel kode, 3 paa manglende eksport). Suite 1062/1062.
[skip-docs]: ren intern mekanikk - ingen ny kommando, agent, skill eller hook,
og ingen endring i utoverrettet flate.