portfolio-optimiser/docs
Kjell Tore Guttormsen 455d611660 feat(run,generate): a run says what its delivered input can ground, before it spends an attempt [skip-docs]
P7 is right and landed, but re-measuring it exposed a consequence no row stated: with the gate
live, 29 of 29 cost codes in 13 of 13 delivered proposals fall across the three free recordings
(PM's denominator; 14 of 14 in 8 proposals on the PARSEABLE one -- the five blobs that separate
the numbers are refused by pydantic's `claimed <= total` and never reach stage 0b). All 29 were
invented, so the gate is right; but a gate that always refuses is as useless as one that never
does.

The cause is that the PROMPT asks for something the input cannot supply. `_build_messages`
requires each affected_item to "restate a cost line as the project's price schedule already
carries it", while K2's delivered input carries 9 occurrences / 2 distinct code-shaped tokens --
`SHA-01`/`SHA-10`, both document numbers off a page footer -- and `derive_cost_baseline` refuses
the base outright. There is no cost line in it to restate.

`GroundingOffer(chars, identifiers, cost_lines)` reports it. The PAIR is the diagnosis: "50
identifiers, 0 cost lines" says what neither number says alone. A REPORT, never a gate -- it
blocks nothing, because a blocking requirement IS `--require-cost-baseline` (F4/D-3, opt-in,
untouched), and `_ground_against_input` is untouched.

The callsite is MEASURED, not chosen: `generate.py` composes the grounding per attempt, after
`await _fetch_parsed`, so a report there could only speak once an attempt had been paid for;
`run.py` binds both halves above the `--live-dry-run` cut and before the first `debate.run`, so
the FREE trip says it. `delivered` is bound ONCE and the same variable feeds the report and
`_evaluate`; the report composes THROUGH `_grounding_text`, the gate's own composer.

A pattern is admissible here and not in the gate, and that is the difference between a report and
a falsifier: an unknown form is a token left uncounted -- an under-count, never a false rejection.
The forms are transcribed from the measurement; bare numbers are excluded with the number
(46 394 / 2 117 in K2). `grounding_offer_notice` is the ONE renderer and is silent when the run
CAN anchor -- omission, never an empty row.

Load-bearing MEASURED (tests/test_grounding_offer_loadbearing.py, 12 arms), nine mutations all
red against the WHOLE suite + green control 1570/5 (from 1558/5, strict superset, 0 removed) and
the golden byte-unchanged (shasum -a 1 of the CONTENT = ea8c534773acdbe41ae68f2c55724d69aaf8be4f).

Measurement: docs/2026-09-09-p8-forankringstilbudet.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 17:50:02 +02:00
..
fase1-spikes fix(fase1): spike B fan-out measures real conversation bleed, not a counter 2026-06-24 11:09:55 +02:00
plan fix(maf): en vakt som gikk inert i STILLHET, funnet ved aa loefte pinnen (F15, ORDRE 20260829T155150Z) 2026-09-02 19:35:49 +02:00
rapport docs: fjern brukernavn, hjemmekatalog-stier og privat namespace fra publisert flate 2026-08-18 13:20:23 +02:00
research docs(research): MAF 1.9.0 capability map — feature-utilization for Fase 2 [skip-docs] 2026-06-24 11:36:26 +02:00
2026-06-24-two-approaches-brief.md docs: plain-text brief — goal + two approaches (MAF vs Claude Agent SDK) + learning goal 2026-06-24 09:21:31 +02:00
2026-06-26-fot-i-bakken.md docs(fot-i-bakken): ground-truth-verifisert levert-vs-lovet — agentiske lag inerte 2026-06-26 15:25:03 +02:00
2026-07-15-foundry-auth-recipe.md docs(1b): Claude på Foundry er en TREDJE klientflate — FoundryChatClient kan ikke binde den 2026-08-13 20:31:36 +02:00
2026-08-13-demo-presentasjon.html docs(deck): begge deck bærer det MÅLTE 1b-utfallet — ærlighet, ikke seier 2026-08-14 20:28:35 +02:00
2026-08-13-fase1a-lokal-ende-til-ende.md docs(fase1a): «uansett modell» hvilte på en måling jeg aldri leste ferdig 2026-08-13 20:19:31 +02:00
2026-08-13-fase4-azure-yaml-valg.md feat(4b): AZURE-profilen leser miljøet sitt, ikke operatørens laptop 2026-08-13 22:27:21 +02:00
2026-08-13-fase4-research-spike.md docs(4·): containeren er bygget — og wheelen er ikke installerbar alene 2026-08-13 21:57:40 +02:00
2026-08-13-presentasjon-ledelse.html docs(deck): tredje deck bærer samme MÅLTE 1b-utfall som de to andre 2026-08-18 09:37:14 +02:00
2026-08-14-fase1b-forste-levende-kjoring.md docs(1b): koordinatene byttet mot plassholdere - vei A, redigert framover 2026-08-18 13:03:11 +02:00
2026-08-18-vurdering-azure-omdoeping.md feat(gate): pakke-gaten leser INNHOLDET, ikke bare filnavn + vurdering av Azure-omdøping 2026-08-18 13:42:02 +02:00
2026-08-25-fable-misjonsreview.md docs: Fable 5 misjons-review — nærmer systemet seg faktisk målet? (ORDRE 20260825T104711Z) 2026-08-25 14:12:23 +02:00
2026-08-25-syretest-vei-ab.md feat(explore): katalogkallet koster O(baser), ikke O(korpus) (ORDRE 20260825T213645Z) 2026-08-26 14:45:16 +02:00
2026-08-26-katalogkostnaden.md feat(explore): katalogkallet koster O(baser), ikke O(korpus) (ORDRE 20260825T213645Z) 2026-08-26 14:45:16 +02:00
2026-08-29-maf-gjelden-omfang.md docs: MAF-gjeldens omfang malt, ikke bygget (F3/F15/F16/U16-17-19, ORDRE 20260825T214801Z) 2026-08-29 09:30:01 +02:00
2026-09-02-f15-maf-pinnen.md docs(f15): nevner-disiplin anvendt paa mitt EGET instrument - 17/16/2, ikke 16/16/2 2026-09-02 19:47:11 +02:00
2026-09-02-misjonsreview-v2.md docs: misjonsreview v2 mot bruksscenarioet — målt, ikke bygget (S2, ORDRE 20260902T113744Z-1245330375) 2026-09-02 17:17:39 +02:00
2026-09-02-read-bundle-kontekstkostnad.md docs: name the mechanism behind the untouched-debate proof, and re-measure all three bases 2026-09-03 01:30:09 +02:00
2026-09-03-forslag-fra-mandat.md docs(s7b): maaledokumentet baerer funnet CLAUDE.md-raden peker paa 2026-09-03 22:40:56 +02:00
2026-09-03-hierarkisk-navigasjon-k2.md docs(s7a-3): ordrens ANDRE binding maalt paa alle 478 K2-nivaaer, og to prosa-hull lukket 2026-09-03 08:09:53 +02:00
2026-09-03-syretest-s7a-k2.md docs(s7a): SS 5s "deler aarsak" var en paastand, ikke en maaling - og maalingen felte tallet 2026-09-03 03:42:18 +02:00
2026-09-03-syretest-s7a2-k2.md fix(docs): rediger vekk absolutt hjemmesti i S7a-2-rapporten - handover-gaten var roed paa HEAD 2026-09-03 06:02:17 +02:00
2026-09-04-major2-proposal-review-k2.md docs(major2): steg 9 fullfoert - M38..M40 roede, K2-omkjoeringen maalt, last_ruling-paastanden rettet 2026-09-05 20:39:52 +02:00
2026-09-04-s2c-debatt-k2.md docs(verdict-gate): maaleavsnittet og invariantraden - fem mutasjoner, fire tall verifisert 2026-09-04 20:41:32 +02:00
2026-09-04-syretest-s7b-k2.md docs(s7b): syretesten paa K2 - maaledokumentet med de fire tallene og tretten roede 2026-09-04 09:04:51 +02:00
2026-09-05-major2-trekreview.md docs(major2): remedieringsfoot under den sporede trekreview-kopien 2026-09-05 22:31:06 +02:00
2026-09-06-major2-levende-k2.md docs(major2): funn (b) re-maalt live - loekka konvergerer paa foerste reviderte forsoek 2026-09-07 00:52:39 +02:00
2026-09-07-okf-prepass-i-debatten.md docs(prepass): before/after on K2, the mutation battery and the invariant row 2026-09-07 14:39:50 +02:00
2026-09-07-prepass-mater-q5b-k2.md feat(prepass): --prepass-seed makes the cut a starting point, and K2 says it costs 2026-09-08 04:02:09 +02:00
2026-09-07-syretest-s7-prepass-k2.md docs(s7): a live model reads a declared cut -- three premises felled, four findings [skip-docs] 2026-09-07 16:07:29 +02:00
2026-09-08-f3-f4-nekten-og-forankringen.md feat(navigation,validator): read_dir names the rung that reads a document, and a run can require its anchoring 2026-09-08 05:32:46 +02:00
2026-09-08-funn-4-5-og-read-nekt.md feat(prepass,explore): padding dies at the prompt; a refusal the model can act on is a return value [skip-docs] 2026-09-08 23:36:54 +02:00
2026-09-08-funn-99-chatclient-refusal.md fix(cli): a provider failure leaves the CLI as one line, and a guessed base id is correctable 2026-09-08 21:03:18 +02:00
2026-09-08-n-bundlene-hypoteseform.md docs(n-bundlene): P4 -- one free N100 run after the P3 fix, (b') is now yes 2026-09-08 17:31:07 +02:00
2026-09-08-n-bundlene-konsum.md docs(n-bundlene): use ~-form for two absolute home paths -- handover gate was red on HEAD [skip-docs] 2026-09-08 15:23:55 +02:00
2026-09-08-syretest-s7c-begge-laaser-k2.md docs(s7c): both locks open, the price is delivered -- and the live model still did not read it [skip-docs] 2026-09-08 07:00:47 +02:00
2026-09-09-p6-betalt-k2-etter-kollaps.md docs(p6): one paid K2 run says the collapse bought legibility, not use 2026-09-09 13:14:55 +02:00
2026-09-09-p7-forankrede-identifikatorer.md feat(validator,generate,run): an identifier a proposal builds on must be in the input, or the verdict falls [skip-docs] 2026-09-09 16:04:01 +02:00
2026-09-09-p8-forankringstilbudet.md feat(run,generate): a run says what its delivered input can ground, before it spends an attempt [skip-docs] 2026-09-09 17:50:02 +02:00
bestille-en-kjoring.md feat(provenance): a run records which external service it actually called 2026-08-05 21:37:29 +02:00
ekspert-svar.md feat(hitl): ekspertdommen kan ikke oppstaa av stillhet (F2, ORDRE 20260825T214801Z) 2026-08-27 01:22:07 +02:00
extending.md docs: llms.txt + sikkerhetskontakt til security@ (ORDRE 20260821T041218Z) 2026-08-21 11:29:54 +02:00
knowledge-base-recipe.md docs: kunnskapsbase for ÉN konkret kjøring — kategorier, innholdstyper, veiprosjekt-eksempel (ORDRE 20260821T083046Z) 2026-08-21 11:10:59 +02:00
kort-presentasjon.html docs(deck): begge deck bærer det MÅLTE 1b-utfallet — ærlighet, ikke seier 2026-08-14 20:28:35 +02:00
kunnskapsbase-for-en-kjoring.md feat(visibility): en lenke som ikke ble fulgt sier det - spor + betinget linje (ORDRE 20260821T142704Z) 2026-08-21 17:18:18 +02:00
okf-konsum-kontrakter.md docs(s7a-3): ordrens ANDRE binding maalt paa alle 478 K2-nivaaer, og to prosa-hull lukket 2026-09-03 08:09:53 +02:00
presentasjon-bygge-kunnskapsbase.html feat(visibility): en lenke som ikke ble fulgt sier det - spor + betinget linje (ORDRE 20260821T142704Z) 2026-08-21 17:18:18 +02:00
presentasjon-fagpersonens-bidrag.html docs: fagpersonens bidrag - spørsmål/sjekkliste til fagperson (ORDRE 20260824T092912Z) [skip-docs] 2026-08-24 15:24:51 +02:00
review-2026-07.md docs(review): kryssmodell-review 2026-07 (14 funn, 11 detach-bevis) + revidert roadmap + sesjonsplan Fase 2-6 2026-07-10 06:28:11 +02:00