F3 and F4, the two findings the S7 acid test (session 98) reported and left. The order required both descriptions to be treated as PREMISES. One held; the other was felled before anything was built on it. F3 -- premise FELLED, asymmetry real. The order read arm C's two refused calls as "the path names a document that EXISTS". Measured against the base that ran: its root holds 27 directories named del-ii-bilag-N-... and 12 documents named inbox-del-ii-bilag-N-....md, and the requested path matches NEITHER -- it is the directory naming convention applied to a document whose real name carries an inbox- prefix. So the two live rounds were the UNKNOWN-path class, and this delivery does NOT recover them (gated). What IS real: read_file on a directory has named read_dir since session 95, while read_dir on a document named neither the rung nor the path. okf.DocumentPathRefused closes that one direction -- a ValueError, a SIBLING of BundlePathNotFound rather than a subclass, built from context_files (never files) and through the same in_dimension predicate the listing uses, quoting the document's REAL name so what it hands back resolves. F4 -- premise HELD, option (c) felled by measurement. All four live artefacts stamped cost_baseline_anchored: False and each arm invented its cost codes. derive_cost_baseline refuses against the delivered base: K2's price schedule is a pandoc SIMPLE table with ONE column header, so making --derive-cost-baseline reachable there would mean inventing a rule for an unmeasured form -- MAJOR-4's own honesty limit. Chose (b) over (a): --require-cost-baseline / run_project(require_cost_baseline=...), OPT-IN and never default, so every bundle without a cost-baseline.json runs unchanged. The gate sits where both branches have bound baseline and ABOVE the dry-run cut, so it fires on the free trip too and, on the paid one, before the first model call. Three CLI refusals by name, each with an rc-0 control. 12 mutations, all red against the WHOLE suite. Green control 1493/5 -> 1511/5 (+18 node-ids, 0 removed); golden demo-transcript.stdout BYTE-UNCHANGED (shasum -a 1 of the CONTENT = ea8c534773acdbe41ae68f2c55724d69aaf8be4f). No paid run: both findings measured offline. Measurement: docs/2026-09-08-f3-f4-nekten-og-forankringen.md Order: 20260908T020419Z-5837110336-from-portfolio-optimiser Co-Authored-By: Claude <Opus 5>
5.2 KiB
F3 og F4 — måling før bygging (økt 100, 08.09.2026)
Ordre 20260908T020419Z-5837110336. De to funnene S7-syretesten (økt 98) rapporterte og ikke
fikset. Ordren krevde at begge beskrivelser ble behandlet som premisser, ikke fakta. Det ene
holdt; det andre ble felt.
1. F3 — premisset er FELT, asymmetrien er ekte
Ordrens premiss: «når stien navngir et dokument som FINNES (med eller uten .md)» — altså at
de to nektede kallene i arm C var feil rung, ikke ukjent sti.
Målt mot basen som faktisk kjørte (scratchpad/s7-prepass/k2-bundle-s7, den samme
{run_id}-debate.json § 4 siterer):
read_dir(del-ii-bilag-6-teknisk-oppsett) NEKTET
read_dir(del-ii-bilag-6-teknisk-oppsett.md) NEKTET
Basens rotnivå holder 27 kataloger navngitt del-ii-bilag-N-… og 12 rotdokumenter
navngitt inbox-del-ii-bilag-N-….md. Det eneste dokumentet i nærheten heter
inbox-del-ii-bilag-6-teknisk-oppsett.md. Stien modellen ba om matcher verken en katalog
eller et dokument — den er katalog-navnekonvensjonen anvendt på et dokument hvis ekte navn
bærer et inbox--prefiks.
Følgen: de to live-rundene var UKJENT-sti-klassen, ikke feil-rung-klassen. Ingenting i denne
leveransen ville reddet dem, og det står gatet i test_the_measured_live_path_is_still_the_unknown_class
så ingen senere leser kan lese dette som en fiks av den målte kostnaden. Å resolvere den ville
vært å gjette hvilket dokument en kaller MENTE — invensjon, ikke validering.
Det som ER ekte: symmetrien ordren pekte på finnes i koden i nøyaktig ÉN retning.
read_file på en katalog → explore.DirectoryPathRefused, som navngir read_dir. read_dir på
et dokument → den generiske «has no directory», som navngir verken rungen som leser det eller
stien den ville tatt. Det gapet er lukket (okf.DocumentPathRefused).
2. F4 — premisset HOLDER, og (c) er felt av måling
Målt på nytt mot de fire artefaktene den betalte kjøringen etterlot:
| arm | cost_baseline_anchored |
kostkoder i forslaget |
|---|---|---|
| A | False |
ENGRAVE_MARK |
| B | False |
RITB-HOURS, SYSINT-HOURS |
| B1 | False |
RITB-consultancy, system-integrator |
| C | False |
Material_Cost_Concrete, Material_Cost_Steel, Construction_Heating_Fuel |
Stage 0 hoppes over når baseline is None (validator.validate_proposal), og ingen av linjene er
knyttet til K2.
Opsjon (c) er felt, med måling. okf.derive_cost_baseline mot den leverte basen:
REFUSED: no cost table found in bundle '…/k2-bundle-s7': no concept file carries a markdown table
whose header names all three of ['code', 'quantity', 'unit_cost']
K2s leverte prisskjema (del-ii-bilag-7-prisskjema/prissammenstilling-sheet-1.md) er en pandoc
simple table med ÉN kolonneoverskrift (Prisskjema) og hver verdi kollapset i den. Å gjøre
--derive-cost-baseline nåbart der ville krevd en regel for en form ingen har målt — nøyaktig den
ærlighets-grensen MAJOR-4 skrev ned for seg selv.
Valgt: (b), og hvorfor ikke (a). Synligheten (cost_baseline_notice) finnes og er ærlig; det
den ikke kan er å stoppe et maskinlesbart artefakt som sier validator_decision: validated over
linjer ingenting forankret. Et opt-in-flagg lar hver base uten cost-baseline.json — hver
commons-eid golden — kjøre nøyaktig som før, som er dét (a) beskyttet, mens en kaller som trenger
garantien ber om den ved navn. Målt: mutasjonen som lar gaten fyre uten flagget gir 171 røde.
3. Battteriet
Grønn kontroll 1493/5 ved øktstart → 1511/5 etter (+18 node-ider, 0 fjernet), golden
demo-transcript.stdout BYTE-UENDRET (shasum -a 1 av INNHOLDET =
ea8c534773acdbe41ae68f2c55724d69aaf8be4f). 12 mutasjoner, alle røde mot HELE suiten:
| # | mutasjon | røde |
|---|---|---|
| M1 | detach dokument-grenen | 4 |
| M2 | bygg oppslaget fra files |
1 |
| M3 | ignorer dimensjonen i oppslaget | 1 |
| M4 | navngi read_file i ukjent-sti-meldingen òg |
4 |
| M5 | ekko kallerens sti i stedet for det ekte navnet | 2 |
| M6 | detach forankrings-gaten | 3 |
| M7 | flytt gaten UNDER dry-run-kuttet | 1 |
| M8 | dropp fra report_forbidden |
1 |
| M9 | dropp fra portefølje-partisjonen | 1 |
| M10 | detach --bundle-dir-kravet |
1 |
| M11 | detach fullkjørings-wiringen | 1 |
| M12 | gaten fyrer uansett flagg | 171 |
M9s signatur er egen: uten nekten ved navn STARTER mutanten et porteføljepass og når modellen
(ChatClientException) — altså er nekten dét som holder en argv fra å koste noe.
Ingen betalt kjøring. Begge funn er målt offline mot artefaktene og basen økt 98 etterlot.
4. Ærlighets-grenser, uttalt
- F3 gjenoppretter ikke de to målte rundene (§ 1); den lukker asymmetrien.
- Ingen LEVENDE modell har lest den nye nekten — at den faktisk endrer neste trekk er ikke bevist (structured-output-grensens klasse).
- Den hostede flaten er bevisst urørt for
--require-cost-baseline(feltet er i ingen av hostings tre sett, så den generiske 400-en svarer og Fase 4es to halvdeler står) — MAJOR-4s eget valg, gjentatt. - Stempelet sier fortsatt AT en kjøring var forankret, aldri HVILKEN projeksjon som forankret den.