portfolio-optimiser/shared/docs/plan/2026-08-02-ss11-mangler-rad-for-ss8.md

3.6 KiB

Funn-notat — §11 ankrer ikke §8 (og heller ikke §10)

Status: FUNN, registrert. Ikke et underlag, ikke et forslag, ikke bestilt. Køplassering er operatørens. Commons forbereder underlaget, operatøren ratifiserer — og vi bestiller ikke vår egen kø, heller ikke for funn vi selv gjør.

Foranledning: portfolio-optimiser meldte 2026-08-01 (20260801T175832Z) at method-spec.md §11 mangler en rad for deres portefølje-brede budsjettsøm (S3.4/F10: globalt token-tak håndhevet før kall, wave-admission med reservasjon, oppstartsnekt). Undersøkelsen av den forespørselen ga to atskilte resultater, og bare det ene er vårt.


1. Forespørselen: avvist på akse

§1 (Scope and conformance) definerer metoden ordrett som «a swarm of agents generates candidate cost-saving measures for one project at a time». §8 (Budget and stop criteria) er følgelig den per-run termineringskontrakten.

Globalt tak på tvers av prosjekter, wave-admission med reservasjon og oppstartsnekt for et prosjekt som ikke kan finansieres er orkestrering over metoden, ikke en søm i den. Deres S3.4/F10 er riktig plassert hos dem, og at de bærer den som tests/test_portfolio_budget_loadbearing.py (6 målte røde mutasjoner) er sømmen dokumentert der den hører hjemme.

Konsekvensen av å legge raden inn likevel er konkret og var avgjørende: §11 er en MUST-tabell. En konformant implementasjon som kjører ett prosjekt uten portefølje-orkestrering ville blitt ikke-konform på en søm spec-ens egen scope-klausul ikke governerer.

Svar sendt 20260802T190344Z.

2. Det undersøkelsen faktisk fant, og det er vårt

§11 har tolv rader. Ingen av dem ankrer §8:

  • fail-closed når usage mangler i et svar (MÅ feile, aldri stille slutte å telle),
  • det strukturerte stop-eventet med breached kind + limit + observed value,
  • cap-objektenes nekt av ikke-positive verdier.

§10 (Startup contracts) har heller ingen rad.

Samtidig sier §1 punkt 3 ordrett:

proves every load-bearing seam with a test that FAILS when that seam is detached (§11).

Enten er §11-tabellen enumereringen av «every» — og da mangler §8 og §10 — eller så er den det ikke, og da har «every» ingen enumerering i spec-en. Spenningen er intern i vår egen frosne tekst. Den er vår å løse, ikke konsumentens.

3. Verifisering (målt, ikke antatt)

$ sed -n '421,435p' method-spec.md | grep -ciE 'budget|token|meter|usage|cap|startup|max_rounds'
1

Det ene treffet er en substring-falsk-positiv: «escaping» i navigasjons-raden. Reelt antall §11-rader som nevner budsjett, måler eller oppstart er null.

$ sed -n '423,434p' method-spec.md | grep -c '^|'
12
$ sed -n '24p' method-spec.md
3. proves every load-bearing seam with a test that FAILS when that seam is detached (§11).

4. Åpent spørsmål stilt til portfolio-optimiser

Av de 6 målte røde mutasjonene i test_portfolio_budget_loadbearing.py — hvor mange treffer per-run-målerens søm (usage mangler → feil; cap krysses → strukturert stop), og hvor mange treffer portefølje-admissionen? Den første halvdelen er in-scope for §8 og kunne vært referansetest-kolonnen i en rad vi faktisk kan skrive. Den andre halvdelen forblir deres.

Ubesvart per 2026-08-02. Ingen purring — de sa selv at det ikke blokkerer noe hos dem.

5. Hva som IKKE er gjort her

  • Ingen rad er skrevet.
  • Ingen ordlyd er foreslått.
  • method-spec.md er ikke rørt.

En §8-rad ville vært en endring i frossen, subtree-konsumert tekst og krever operatørens ratifisering på lik linje med V1.