feat(ms-ai-architect): skjerm Fri kontekst mot overflow-kuttet [skip-docs]
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.
This commit is contained in:
parent
a7098e0fdf
commit
5a46818dd6
2 changed files with 41 additions and 2 deletions
|
|
@ -353,3 +353,25 @@ test('orderOrgFiles — non-.md entries and garbage input are dropped', () => {
|
|||
assert.deepEqual(orderOrgFiles(['notater.txt', '.DS_Store', 'alfa.md']), ['alfa.md']);
|
||||
assert.deepEqual(orderOrgFiles(null), []);
|
||||
});
|
||||
|
||||
test('buildOrgSummary — Fri kontekst survives the overflow cut (it is added last, not least)', () => {
|
||||
const many = Array.from({ length: 40 }, (_, i) => `## Felt${i}\nverdi${i}`).join('\n\n');
|
||||
const s = buildOrgSummary({
|
||||
'organization-profile.md': many,
|
||||
'free-context.md': 'Den ene sloten der brukeren skriver fritt.',
|
||||
});
|
||||
const lines = s.split('\n');
|
||||
assert.ok(lines.length <= 25, `line budget still binds, got ${lines.length}`);
|
||||
assert.match(s, /Fri kontekst: Den ene sloten/, 'free-context must not be the first field dropped');
|
||||
assert.match(lines[lines.length - 1], /flere felt/, 'marker still last');
|
||||
assert.match(lines[lines.length - 2], /^Fri kontekst:/, 'free-context kept as the last field');
|
||||
});
|
||||
|
||||
test('buildOrgSummary — overflow without free-context is unchanged (back-compat)', () => {
|
||||
const many = Array.from({ length: 40 }, (_, i) => `## Felt${i}\nverdi${i}`).join('\n\n');
|
||||
const lines = buildOrgSummary({ 'organization-profile.md': many }, { cap: 10 }).split('\n');
|
||||
assert.equal(lines.length, 10);
|
||||
assert.equal(lines[0], 'Felt0: verdi0');
|
||||
assert.equal(lines[8], 'Felt8: verdi8');
|
||||
assert.match(lines[9], /flere felt/);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue