Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.

10 changed files with 9 additions and 281 deletions

2
.gitignore vendored
View file

@ -4,5 +4,5 @@
# a public mirror). The guard roll-up greps STATE.md locally, so local-only is sufficient.
/STATE.md
# Local-scoped notes/overrides convention: never mirrored.
# Local-scoped notes/overrides convention (KTG global): never mirrored.
*.local.md

View file

@ -37,23 +37,7 @@ specifications alone, without reverse-engineering the reference code.
- [`examples/bygg-energi-mikro/`](examples/bygg-energi-mikro/) — the first example knowledge
bundle (OKF / LLM-wiki): one office building, one LED-retrofit measure, with a seed expert
verdict encoding the realization gap and a golden-suite of expected validator outcomes. A small
**dev fixture** for exercising the agentic loop; the two full-scale bundles below
([`veglys-fv-soer`](examples/veglys-fv-soer/), [`tunnel-hauglia`](examples/tunnel-hauglia/))
are the realistic ones.
- [`examples/veglys-fv-soer/`](examples/veglys-fv-soer/) — an example knowledge bundle at realistic
scale: a county-road street-lighting portfolio with two candidate measures (LED replacement of
2 500 of 9 500 HPS luminaires, and adaptive control), a seed expert verdict, the IR projection
the deterministic validator reads, and the project's cost baseline. The realization gap is a
parameter error — burn hours overestimated — on a Norwegian evidence base where many
installations have no metering at all. Project layer fictional, literature layer real and cited.
Written in Norwegian.
- [`examples/tunnel-hauglia/`](examples/tunnel-hauglia/) — an example knowledge bundle at realistic
scale, same file layout as the veglys bundle: a two-tube road tunnel with two candidate measures
(3-step to 13-step dimming of the entrance and transition zones, and passive portal screening).
Its realization gap arises in operation rather than in the parameters, so the seed verdict carries
`gap_source: control-tracking-overestimation` where both bygg-energi-mikro and veglys-fv-soer
carry `hours-of-use-overestimation` — a second gap class, so a learning loop exercised here has seen
more than one cause. Project layer fictional, literature layer real and cited. Written in Norwegian.
**dev fixture** for exercising the agentic loop; a realistic full-scale example comes later.
- [`examples/nav-golden-hierarchy/`](examples/nav-golden-hierarchy/) and
[`examples/nav-golden-escape/`](examples/nav-golden-escape/) — the **nav-golden** fixture class:
`bundle/` in, `expected-read-context.md` out, exercising the navigation contract (method-spec §3

View file

@ -8,7 +8,7 @@ If you discover a security issue, please report it responsibly.
### How to Report
Email: security@fromaitochitta.com
Email: hello@fromaitochitta.com
Include:
- Description of the issue

View file

@ -1,10 +1,5 @@
# Amendment-underlag — hva frossen tekst sier i dag, per køpunkt
> **Status: KØPLASSERT 2026-08-25** (ordre `20260825T081254Z-179095031-from-.claude`).
> Underlaget under (§0§9) sto ferdig fra korreksjonene 2026-07-26/08-01; denne oppføringen
> flytter saken fra «ligger her» til «står for tur», ikke fra åpen til avgjort — ingen
> normativ spec-tekst er skrevet. Hva køen forplikter til: **§10**.
**Status:** underlag. Spec-en er IKKE endret, og dette dokumentet foreslår INGEN ny tekst.
Ny tekst er pakken operatøren ratifiserer, og den eies oppstrøms (`portfolio-optimiser`,
sammen med `portfolio-optimiser-claude`s tekstforslag). Dette dokumentet svarer bare på
@ -550,65 +545,3 @@ endres ikke uten den ratifiseringen.
| §8 logger tre felter | `ingest-spec.md:230` | «which source, when, row count» |
| `connection_ref` er env-var-NAVN | `ingest-spec.md:109`, `:117` | «the NAME of a runtime-resolved …», secret resolved at run time |
| Begge konsumenter står på `7aa53fc` | coord fra begge, uavhengig | po: `git log --grep=git-subtree-split``ef1a2c5`; po-claude: egen måling |
---
## 10. Køplassering (operatørbeslutning 2026-08-25)
Operatøren har køplassert denne saken. Ordre `20260825T081254Z-179095031-from-.claude` sier det
eksplisitt: *«KØPLASSER commons-spec-amendments (D-A 1/2/4 + D-F) — docs-only, IKKE skriv
normativ spec-tekst.»* Denne seksjonen er derfor køoppføringen, ikke utførelsen. Formanalysen
(§1, §2, §4, §5 over) står allerede ferdig; det som gjenstår er selve normeringen, og den er
IKKE gjort her.
**Premissene re-målt før denne oppføringen (2026-08-25):**
- `grep -c 'cost-baseline' method-spec.md ingest-spec.md` → fortsatt **0 / 0** (kjent-negativ,
uendret siden §4).
- `nominal_feasible` → fortsatt til stede i §12s kryssjekk-tabell, `` | `nominal_feasible`,
`p10`, `p50`, `p90` | golden (validator) | §7.2 | `` (kjent-positiv, uendret siden §1).
- Linjeankere i `method-spec.md`/`ingest-spec.md` er forskjøvet siden underlaget ble skrevet:
fire commits i `a67a243..HEAD` rørte de to filene (`54e0ec7`, `838a4b1`, `22048ea`, `0f88324`).
Målt `git diff --numstat`: `method-spec.md` **+13/0**, `ingest-spec.md` **+15/10** (netto
**+5**, ikke ordreteksten premiss om «+3»). Avviket meldes her uten å endre handlingen —
§1§7 over siterer allerede seksjon + ordrett tekst, aldri linjenummer, så skiftet berører
ingen av sitatene.
- Coord-meldingen `20260803T152040Z-416406299-from-portfolio-optimiser` (i `archive/`) lest på
nytt: 22 dager gammel per 25.08, ingen nyere melding fra dem overskriver den, og den beskriver
fortsatt deres HEAD-tilstand slik den ble ført.
**Premiss-skiftet siden underlaget ble skrevet — S4.0 er lukket LOKALT hos
`portfolio-optimiser`, ordrett fra kilden:** *«S4.0 (validator-forankring mot kostbaseline, F3/F8)
er lukket i portfolio-optimiser uten at commons-amendmentet D-A pkt. 2 kom. Vi bestemte formatet
og semantikken lokalt … `cost-baseline.json` i bundle-rota …
Validatoren avstemmer hvert `affected_item` mot baselinen som STAGE 0 … Toleranse: relativ mot
BASELINE-verdien, default 5 % … Validering, ALDRI reparasjon … Baseline-argumentet er VALGFRITT
(None = gammel oppførsel). Bundle-stien forankrer KUN når bundelen shipper fila … Vil commons
normere noe av dette i spec-teksten, er det fritt fram — vi har ikke låst noe på deres vegne,
men koden vår kjører på det som står over.»* Dette gjør §4s premiss («ubetinget baseline
kolliderer med §7:332-333») foreldet i sin opprinnelige form — deres lukking er **betinget**
(bundle-sti forankrer kun når fila finnes; road-sti forankrer alltid), ikke ubetinget som
underlaget antok da det ble skrevet 2026-07-25. §4s operatør-spørsmål («obligatorisk … eller
opsjonell med fail-fast-semantikk kun når den finnes») har dermed fått ett av sine to svar
demonstrert i produksjonskode hos en konsument, uten at det er en beslutning commons har tatt.
**D7-speiling står ÅPEN hos `portfolio-optimiser-claude` for TRE punkter SAMTIDIG:** S2.7, S3.2
og S4.0 (samme kilde som over). Dette er en reell blokkering — de venter på at spec-teksten skal
eksistere før de kan speile den. Deres egen prioritering, gjengitt som DERES vurdering, ikke som
en anbefaling commons gjør: **D-F lavest** — S3.5 er kuttet hos dem denne uka.
**Ute av pakken, med grunn (uendret fra §3 og §6, gjentatt så den ikke gjenåpnes):**
- **D-A#3** (ledende `/`) er allerede normativt i commons HEAD siden `9801d35` — drift over
pull-grensen hos konsumentene, ikke et spec-hull. Se §3.
- **D-A#5** (hovedbok-projeksjoner) har ingen eksisterende tekst å endre og mangler
story-etikett oppstrøms — egen kategori (ny seksjon, ikke amendment), ikke del av denne
pakken. Se §6.
- **S2.3** (`doc`-konnektor) ble avslått hos `portfolio-optimiser` 2026-08-03 (scope-sak) —
gater ingenting i denne pakken. Se §7.
**Hva køplasseringen IKKE utløser:** ingen normativ spec-tekst i `method-spec.md` eller
`ingest-spec.md`, ingen versjonsbump, ingen tag, ingen coord-melding sendt. Løsningen for hvert
av de fire punktene (D-A#1/#2/#4 + D-F) er fortsatt operatørens å velge blant de opsjonene §1,
§2, §4 og §5 over allerede lister — denne oppføringen legger ikke noe nytt forslag fram, den
plasserer saken i køen.

View file

@ -11,12 +11,6 @@
> anbefaling. Utløst av `llm-ingestion-okf` (coord, 2026-07-26) som spør fordi authorship er
> vår: deres DEFAULT-profil staterer ingest-spec §5, og «ingen lokale spec-endringer» er deres
> stående non-goal.
>
> **§6.2-funnet («the shared golden extractions» har ingen referent) er KØPLASSERT 2026-08-25**
> (ordre `20260825T081254Z-1793231864-from-.claude`). §6.2 selv kaller det «et selvstendig
> punkt, ikke en del av V1, ikke i køen» — den setningen er nå avløst av denne banneren, ikke
> av seksjonen under den. Fortsatt ikke et vedtak: bare flyttet fra «ligger her» til «står for
> tur». Hva køen forplikter til: **§11**.
Beslektet: `2026-07-25-amendment-underlag.md` (køen av ratifiserbare punkter — V1 hører hjemme
der hvis den ratifiseres), `2026-07-25-b1-nav-golden-normative-status.md` (samme form).
@ -611,7 +605,7 @@ V1s valg i noen retning.
Én målt ting som støtter (a)s gjennomførbarhet, gjort av okf mot guard 0.2.0 og referert som
**deres** måling: `verified` som blokkliste går allerede gjennom persist-gaten
(`verified:\n - human:<aktør>` parses som `['human:<aktør>']`), mens en `generated`-**mapping** ikke gjør
(`verified:\n - human:ktg` parses som `['human:ktg']`), mens en `generated`-**mapping** ikke gjør
det i noen form (flow feiler på `{`, blokk på nested mappings, punktnøkler på key-regexen).
Ikke et argument for (a) i seg selv — men (a)s ene nye mekanisme møter ingen vegg der v0.2s
`generated` møter en. **Ikke verifisert av oss; deres tre, deres måling.**
@ -785,55 +779,3 @@ senere. `portfolio-optimiser-claude` varsles samtidig; de vet ennå ikke at id-e
`process:okf-ingest`.
*`ingest-spec.md` er fortsatt urørt på `bfa5a9b` i det dette skrives.*
## 11. Køplassering av §6.2-funnet (operatørbeslutning 2026-08-25)
Ordre `20260825T081254Z-1793231864-from-.claude` køplasserer `:29`-referent-defekten §6.2
beskriver. Denne seksjonen er køoppføringen, ikke utførelsen: **ingen normativ spec-tekst er
skrevet, og Q4-målingen (§6.2.1) er ikke bestilt hos `llm-ingestion-okf` i denne økten.**
**To atskilte ting — ikke slå sammen i én ordre:**
- **(a) Q4-målingen** (bytte manifestene i de tre casene til et hypotetisk commons-eid sett,
kjøre conformance-suiten, telle hvilke expected-bundle-bytes endrer seg og hvilke av de elleve
sømmene som forsvinner) er ekstern og kvotekrevende. Den bestilles hos `llm-ingestion-okf`
som en egen ordre/coord-melding **derfra**, ikke i denne — commons' egen regel er at forlater
tallet repoet, bestilles målingen og føres inn som deres (samme regel §6.2.1 selv siterer).
- **(b) `:29`-referent-defekten** er commons-eid og uavhengig av (a). §6.2 kaller den «et
selvstendig punkt, ikke en del av V1, ikke i køen», mens STATE-roll-upen
(`commons-shared-golden-referent`) fører saken som `partial`. **Denne spenningen meldes her,
løses ikke:** §6.2 beskriver en tilstand (referenten mangler), roll-upen beskriver en åpen
handling (defekten er ikke rettet i teksten) — de to er ikke i konflikt så mye som de måler på
hver sin akse, og hvilken akse som skal styre STATEs status-token er operatørens valg, ikke
denne ordrens.
**Premissene i §6.2/§6.2.1, re-målt 2026-08-25 — TO avvik funnet, konklusjonen uendret:**
1. **`ingest-spec.md:29`s ordlyd er uendret** («reproduce the shared golden extractions (§11)
byte for byte», linje 29 i dag). Filen er endret tre ganger siden §6.2 ble skrevet
(`838a4b1`, `54e0ec7`, `0f88324`) — ingen av de tre endringene rørte denne linja.
2. **Disjunktheten står: alle 8 kryss-repo `index.md`-par er byte-ulike** (`cmp`, re-kjørt),
kjent-positiv-kontroll bekreftet (en fil `cmp`-et mot seg selv gir IDENTICAL), og ingen andre
filnavn enn `index.md` overlapper på tvers av repoene.
3. **Avvik 1 — `llm-ingestion-okf` har IKKE lenger fire innholdsfiler, men fem, over fire
golden-caser, ikke tre.** §6.2s tabell (skrevet 2026-07-26) lister `ingest-orders.md`,
`ingest-products.md`, `ingest-metrics.md`, `ingest-status.md` + 3 `index.md`. Målt i dag:
caset `ingest-golden-okf-v0-2/` (innholdsfil `ingest-sales.md`, + 1 `index.md`) ble lagt til
`2026-07-31` i commit `2504011`**samme commit commons selv pinner** (STATE-linja
`llm-ingestion-okf: pin 2504011`). Riktig tall i dag: 5 innholdsfiler + 4 `index.md` over 4
caser (`file`, `http`, `okf-v0-2`, `sql`). Disjunktheten er upåvirket (`ingest-sales.md` er
inkludert i cmp-sveipen over og har ingen navnetreff hos `portfolio-optimiser-claude`).
4. **Avvik 2 — ordreteksten (og forskningsunderlaget den siterer) sier «fire filer» for
`portfolio-optimiser-claude`; §6.2s egen tabell sier riktigere «`ingest-costs.md` ×2,
`ingest-edge.md`, `ingest-meta.md»` — fire FOREKOMSTER, tre unike filnavn, over TO caser
(`file`, `sql`), ikke fire.** Bekreftet mot full git-historikk (`git log --all --name-only`)
at repoet aldri har hatt flere enn disse to golden-casene. Ordreteksten er upresis der §6.2
selv ikke er.
5. **`llm-ingestion-okf`s Q4-svar er nå 30 dager gammelt** (datert 2026-07-26, i dag
2026-08-25). §6.2.1 siterer dem uendret («de står klare til å ta den neste økt»); dette er en
30 dager gammel selvvurdering fra deres side, ikke re-bekreftet her — den re-bekreftelsen
hører til (a), ikke til denne køplasseringen.
**Hva denne seksjonen ikke utløser:** ingen normativ tekst i `ingest-spec.md`, ingen
versjonsbump, ingen tag, ingen bestilling sendt til `llm-ingestion-okf`. STATE-roll-upens
`partial`-token er urørt av denne seksjonen — se punkt (b) over for hvorfor.

View file

@ -89,5 +89,5 @@ Per driftsmodellen: navngi aksen, pek på rett respondent, ikke lever en verdi v
| gaten godtar nyere upstream-versjon | `spec.md:70-72` |
| re-sjekk-plikten er plugin-eiernes | `spec.md:246-247` |
Catalog-ankrene er lest read-only i en lokal klone av plugin-marketplace-katalogen @ `1ca27f6`. Ingenting
Catalog-ankrene er lest read-only i `~/repos/ktg-plugin-marketplace/catalog` @ `1ca27f6`. Ingenting
skrevet i det repoet.

View file

@ -1,10 +1,7 @@
# Funn-notat — §11 ankrer ikke §8 (og heller ikke §10)
**Status:** FUNN, registrert — **men KØPLASSERT 2026-08-25** (operatørbeslutning, ordre
`20260825T060649Z-9004613141-from-.claude`, punkt 1). **Fortsatt ikke et underlag, ikke et
forslag, ikke bestilt** — køplasseringen flytter saken fra «ligger her» til «står for tur», ikke
fra åpen til avgjort. Hva køen forplikter til: **§6**.
Commons forbereder underlaget, operatøren ratifiserer — og vi
**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`
@ -84,29 +81,3 @@ Ubesvart per 2026-08-02. Ingen purring — de sa selv at det ikke blokkerer noe
En §8-rad ville vært en endring i frossen, subtree-konsumert tekst og krever operatørens
ratifisering på lik linje med V1.
## 6. Køplassering (operatørbeslutning 2026-08-25)
Operatøren har køplassert denne saken. Ordre `20260825T060649Z-9004613141-from-.claude`, punkt 1,
sier det eksplisitt: *«Kø SS11-budsjettfunnet neste — samme mønster som SS12-køplasseringen (egen
commit/notat i det respektive plandokumentet, IKKE selve utførelsen).»* Denne seksjonen er derfor
køoppføringen, ikke utførelsen — i motsetning til SS12s §8 finnes det her INGEN ferdig
formanalyse å henvise til: §2§4 over er et funn, ikke et sett med opsjoner. Det underlaget
(hvilke(n) form(er) en eventuell §8/§10-rad skulle ta, om noen) er selve SS11-arbeidet, og er
IKKE skrevet av denne oppføringen.
**De to andre kandidatene som stod i samme kø (`commons-spec-amendments`, D-A 1/2/4 + D-F, og
`commons-shared-golden-referent` Q4) er IKKE droppet** — ordren plasserte kun SS11 først, den tok
ikke stilling til de to andre.
**Hva økten som tar denne saken skal gjøre, når turen kommer:**
1. Re-mål §2§4s premisser mot `method-spec.md` FØR den handler på dem (linjeankere er
ferskvare — sitér seksjon + ordrett tekst, ikke linjenummer).
2. Skriv selve underlaget: hvilken/hvilke form(er) løser spenningen §2 påviser (en §8-rad, en
§10-rad, begge, eller ingen — §11-tabellen kan også bevisst IKKE være enumereringen av «every»
i §1.3, og da er det ingen spenning å løse). Legg formene fram for operatøren; ikke velg selv.
3. Vent på ratifisering før `method-spec.md` røres.
**Hva køplasseringen IKKE utløser:** ingen rad i `method-spec.md`, ingen ordlyd foreslått, ingen
versjonsbump, ingen tag, ingen coord-melding. Punkt 5 over står uendret av denne oppføringen.

View file

@ -1,11 +1,8 @@
# V1-etterspill — krever `generated.by` / `generated.at` egne rader i §12?
> **Status: RATIFISERT SOM O-A OG UTFØRT 2026-08-25 (`0f88324`). Saken er lukket.**
> **Status: UNDERLAG, ikke ratifisert. Ingen frossen tekst er endret på dette punktet.**
> Funnet under utførelsen av V1 (`54e0ec7`, 2026-08-09). V1 selv er ratifisert og utført;
> dette var en spenning utførelsen *avdekket*, ikke en del av vedtaket. Underlaget sto som
> UNDERLAG fra 09.08, ble køplassert 24.08 og ratifisert 25.08. **§1§7 er bevart slik de sto
> da beslutningen ble tatt** — de er underlaget, ikke referatet. Hva køen forpliktet til: **§8**.
> Hva som faktisk ble gjort, og hva som ble avvist: **§9**.
> dette er en spenning utførelsen *avdekket*, ikke en del av vedtaket.
>
> Beslektet: `2026-07-26-v1-generated-felt-okf-v0.2.md` (V1-vedtaket),
> `2026-08-02-ss11-mangler-rad-for-ss8.md` (samme klasse: intern spenning i frossen tekst).
@ -152,87 +149,3 @@ Utførelsen flyttet tre av våre egne ankere. Ført ordrett, ikke som linjenumre
| Kryssjekk-raden for `generated` | §12 | **uendret** — dette dokumentets tema |
`generated: true` finnes ikke lenger i specen (verifisert med `grep`).
---
## 8. Køplassering (operatørbeslutning 2026-08-24)
**Merk om §-henvisninger: dokumentets §11/§12 er `ingest-spec.md`s, ikke `method-spec.md`s.**
Se punkt 1 under.
Operatøren har køplassert denne saken. Ordre `20260824T155506Z-3454831118-from-.claude`, punkt 3,
sier det eksplisitt: *«Det som mangler er ren køplassering … IKKE utfør selve SS12-arbeidet i denne
ordren.»* Denne seksjonen er derfor køoppføringen, ikke utførelsen.
**Beslutningen som fortsatt er åpen, er den samme som §5 stiller.** Ingen opsjon er valgt her, og
denne seksjonen anbefaler ingen. Utfallsrommet er fire former, ikke tre — §5s O-A/O-B/O-C pluss
**erstatnings-formen** §5 selv fører som «en fjerde opsjon underlaget ikke listet».
**Hva økten som tar denne saken skal gjøre, i rekkefølge:**
1. **Les hvilken spec §-henvisningene gjelder, FØR den måler.** Hele dette dokumentets §11 og §12
er **`ingest-spec.md`s** §11 og §12 — ikke `method-spec.md`s. Begge filer har en §11 «load-bearing
tests» og en §12 «Cross-check table» med identisk ingress, og `method-spec.md`s §12 har verken
`generated`- eller `source`-rad. Målt 2026-08-24 mens denne køoppføringen ble skrevet: å lese
§-tallet uten filnavnet gir 0 treff og ser ut som «raden er borte». Dokumentet nedenfor navngir
ikke filen; gjør det selv før du greper.
2. **Re-mål underlagets premisser før den handler på dem.** Alle tall og sitater i §1§7 er fra
2026-08-09 og er premisser, ikke fakta. Re-målt 2026-08-24 mot `ingest-spec.md`, med kontroller:
`generated` = **1 rad**, `source` + de seks undernøklene = **7 rader**, nevner **20 rader** i
tabellen (kjent-positiv); samme grep mot `method-spec.md` §12 = **0** (kjent-negativ). Begge
premissene i §1 og §2 står altså. Ankertabellen i §7 er skrevet som seksjon + ordrett tekst
nettopp for å kunne re-måles med `grep -F`. Også ordlyden er re-målt 2026-08-24: §11-sømmen
lyder ordrett «stops documenting a contract field» (`ingest-spec.md:285`) og §12-ingressen
«Every field of the machine-readable contracts …» (`ingest-spec.md:289`) — begge som sitert i
§1 og §4. Linjenumrene er ferskvare; sitatene er ankeret.
3. **Legg de fire formene fram for operatøren og få én ratifisert.** Vi forbereder underlaget,
operatøren ratifiserer — også når funnet er vårt eget.
4. **Meld formen til `portfolio-optimiser-claude` FØR den ligger i commons' main** dersom den
ratifiserte formen er erstatning. Deres §12-vakt keyer på at radens første kolonne er ordrett
`` | `generated` | `` (deres måling, ført som deres i §5): tilføying koster dem ingenting,
erstatning gjør vakten rød *by design*. Pullen deres er atomisk, så varselet må komme først.
**Hva køplasseringen IKKE utløser:** ingen versjonsbump, ingen tag, ingen endring i §5s ordnede
frontmatter-prefiks, og ingen behandling av §6s redundans-funn (`generated.at` gjentar
`ingested_at`) — §6 fører selv det som en følge av den ratifiserte formen og eksplisitt ikke oppe
til vurdering.
**Hvorfor det ikke haster, uendret fra §4:** ingen kjent implementasjon går rød av dagens tilstand.
Eksponeringen er mot §12-ingressens fullstendighets-påstand, som er en svakere binding enn
§11-sømmens «stops documenting a contract field». Køplasseringen er en beslutning om *rekkefølge*,
og skal ikke leses som at sømmen har blitt rød.
---
## 9. Utfall (operatørbeslutning 2026-08-25, utført samme dag)
Operatøren ratifiserte **O-A**: to rader tilføyd i `ingest-spec.md` §12s kryssjekk-tabell,
rett under `generated`-raden. Ordre `20260825T042426Z-7242731354-from-.claude`, utført i
`0f88324`.
```
| `by` | provenance frontmatter (`generated` subkey) | §7 |
| `at` | provenance frontmatter (`generated` subkey) | §7 |
```
**Avvist, ikke nedprioritert:** O-B (snevre ingressen), O-C (la alt stå) og erstatnings-formen.
Ordren sier det eksplisitt. §5s opsjonstabell står urørt som underlag; den beskriver
utfallsrommet slik det så ut FØR beslutningen, og skal ikke leses som fortsatt åpen.
**Premissene re-målt før handlingen, med kontroller** (25.08, mot `ingest-spec.md`): nevner
**20 rader** i §12 (kjent-positiv), `generated` = **1 rad**, `source` + de seks undernøklene =
**7 rader**; samme grep mot `method-spec.md` §12 = **0** (kjent-negativ). §11-sømmen «stops
documenting a contract field» og §12-ingressen «Every field of the machine-readable contracts …»
verifisert ordrett. Alle premissene i §1§7 står altså; ingenting ble målt annerledes enn i
køoppføringen.
**Konsument-kostnaden verifisert utenfra, ikke antatt.** §5 førte `portfolio-optimiser-claude`s
egen måling (deres §12-vakt keyer på radens første kolonne). Ved utførelsen ble vakten lest
direkte i deres kildekode: den sjekker at hvert sporet kontraktsfelt FINNES som rad i en
§12-slice, pluss at slicen ikke har degenerert til hele dokumentet. Tilføying rører ingen av
delene — `generated`-raden er byte-uendret og alle 13 sporede felt står. Derfor **ingen
coord-melding sendt**: plikten i §8 punkt 4 gjaldt erstatnings-formen, som ikke ble valgt.
**Utløste ikke:** versjonsbump, tag, fixture-endring, §5s ordnede frontmatter-prefiks, og §6s
redundans-funn (`generated.at` gjentar `ingested_at`) — §6 fører selv det som en følge av den
ratifiserte formen og eksplisitt ikke oppe til vurdering.

View file

@ -310,6 +310,4 @@ is enforced by the spec-integrity test):
| `ingested_at` | provenance frontmatter / materialization argument | §5, §7 |
| `ingest_manifest` | provenance frontmatter | §5, §7 |
| `generated` | provenance frontmatter | §3, §7 |
| `by` | provenance frontmatter (`generated` subkey) | §7 |
| `at` | provenance frontmatter (`generated` subkey) | §7 |
| `manifest.json`, `fixture/`, `ingested-at.txt`, `expected-bundle/` | golden extraction case | §11 |

View file

@ -58,19 +58,6 @@ checker (reasoning) — they judge the same candidate and are never conflated (
Eight steps. Steps 16 happen within one run; steps 78 close the learning loop across runs
separated in time.
**Informative note — exploration before the loop (deliberately unnumbered).** The loop is entered
with a **mandate**: one project, plus the objective its candidates are generated against. This
specification does not say where that mandate comes from — a consumer can be handed one, or can
*derive* one first, by asking clarifying questions, testing framings against the bundles that are
available, and settling the objective before Step 1 begins. Consumers have called that preparatory
activity *step 0 — explore*. It is not numbered here, and this specification defines no step zero:
the loop's steps are 18, a number in the same row would inherit that row's authority, and this
activity carries no conformance requirement — it adds no contract field, and no seam in §11 covers
it. It relaxes nothing downstream either: however the mandate was arrived at, Step 1's navigation
rules, Step 4's deterministic validator gate and the verdict-layer exclusion apply unchanged. The
note exists so that two implementations building the same preparatory stage recognise it as the
same stage — not so that either is required to build it.
### Step 1 — Understand the context (navigate, never stuff)
The agent read-context for a project MUST be built by **navigating** its OKF bundle with