portfolio-optimiser/tests/fixtures/prepass/README.md
Kjell Tore Guttormsen ad9686517a feat(prepass): payload model, loader, shape gate and the binding to the mounted base [skip-docs]
[skip-docs]: ingen brukervendt flate ennaa -- CLI-flagget kommer i steg 6/7 med
README-blokka, og CLAUDE.md-raden i steg 8. Modulen er ikke naabar utenfra i denne
commiten.

Steg 1 og 2 av planen, committet sammen fordi begge armene bor i samme testfil og
ble skrevet mot samme ekte produsent-payload.

`prepass.py` konsumerer et OKF-konsumkontrakt-SS-8-payload som INPUT-fil (SS 2.4:
transporten er ikke del av kontrakten). po produserer ingen payload og vendrer ingen
produsent -- en subprosess mot produsentens checkout ville bundet pakka til en sti paa
en maskin og doedd i `git archive HEAD`, og en kopi ville vaert kø-(p)-driften.

`check_payload_shape` -- seks nekter, hver ved navn: ukjent revisjon (`==`, aldri
prefiks), nevnere som ikke lukker (SS 5.2, med DEKLARERT og OBSERVERT som to tall),
`len(excerpts)` og `len(withheld)` mot sine tellere (SS 8.1s to halvdeler), `spent >
limit` (SS 7.3) og en kjent-positiv som ikke ble reprodusert (SS 7.4). De to siste er
DEFENSIVE og uvitnet: produsenten nekter dem selv foer den emitterer.

`verify_against_bundle` -- fem sjekker mot den MONTERTE basen: erklaert id (aldri
mountet, S7a-3), joinen gjennom `safe_resolve` med `PathSecurityError` re-reist som
nekt, filas `sha256`, og -- baerende -- at `text` er RE-UTLEDBAR fra det monterte
dokumentet. Den siste lukker injeksjonsflaten: et payload kan ikke levere bytes basen
ikke holder. De to gatene som bodde i det tilbaketrukne `read_file` er reist paa nytt
her paa DOKUMENTET (verdict-laget og SS 4.1a), aldri delegert til produsentens egne
regler.

MAALT foer bygging, ikke antatt:
- Pre-passet nekter ALLE tre av repoets leverte baser ("declares no bundle_id") --
  S7a-3s egen maaling sett fra produsentsiden. `shared/` er pull-only, saa fixturen er
  bygget paa en KOPI med erklaert id, som ogsaa gir S7a-3s slakk-tilfelle gratis.
- `concept_id + ".md"`, `sha256` = HELE fila, og tekst-utledningen (frontmatter delt
  paa `splitlines()`, NFC, per-linje rstrip) holder for alle fire utdrag i et EKTE
  produsent-payload. En naiv `split("\n")` er UENIG med produsenten -- derfor er
  regelen transkribert fra kilden og gatet av fixturen, aldri gjettet.

Fixturen `tests/fixtures/prepass/` er produsentens output ORDRETT (okf `54a0bc2`), saa
ingen arm er groenn mot en form ingen pre-pass emitterer.

TO TEST-FIXTURER VAR FEIL, funnet ved aa kjoere roedt: excerpt/withheld-armene brakk
ogsaa nevnerne, saa lukke-sjekken fyrte foerst; og dimensjons-armen kjoerte mot et
umerket dokument, der `in_dimension` aldri dropper uskopet kunnskap. Begge armene ville
staatt groenne mot en implementasjon uten sjekken de er skrevet for.

1413 passed / 5 skipped (fra 1387/5, +26, 0 fjernet). ruff + mypy rene.

Co-Authored-By: Claude <claude-opus-5>
2026-09-07 10:52:20 +02:00

26 lines
1.5 KiB
Markdown

# A real pre-pass payload, checked in verbatim
`bygg-energi-mikro-fixture.payload.json` is the **unedited output** of the OKF consumption
pre-pass. It is here so that every arm in `tests/test_prepass_payload_loadbearing.py` is gated
against a shape a producer actually emits, rather than against one the test built for itself.
Produced 2026-09-07 with:
python3 ~/repos/llm-ingestion-okf/tools/okf_consume.py <base> \
--question "Hva koster energitiltaket i bygget?" --out <this file>
- Producer: `llm-ingestion-okf`, revision `54a0bc2`, `tools/okf_consume.py`
- Contract: `okf-consumption/1` (`llm-ingestion-okf/docs/consumption-contract.md`, normative)
- `<base>`: a COPY of `shared/examples/bygg-energi-mikro` with `bundle_id:
bygg-energi-mikro-fixture` inserted as the first frontmatter line of `index.md`.
**Why a copy and not the base itself.** Measured 2026-09-07: the pre-pass refuses all three of
this repository's shipped bases with `index.md declares no bundle_id` — which is S7a-3's own
measurement (zero `^bundle_id` anywhere under `shared/`) seen from the producer's side. `shared/`
is a pull-only subtree, so the declaration cannot be added there. The test rebuilds the copy the
same way, which also makes this the S7a-3 slack case: a base whose DECLARED id differs from its
mount.
**Do not regenerate casually.** The digests in this file pin the mounted bytes of four concept
files; regenerating after a `git subtree pull` is a deliberate act, and the arms that verify
`sha256` / `text` / `text_sha256` are what would go red first.