1
0
Fork 0

docs(plan): §7.2 — MCP-spørsmålet er avgjort av frossen tekst, S2.2 og S2.4 er ugated

portfolio-optimiser fant ankeret vi ikke siterte. ingest-spec.md:112-114 sier
normativt at "An MCP-based connector is an extension of this family and MUST
honour the same extraction, materialization, and gate contracts". Det er ikke
to forsvarlige svar — frossen tekst har valgt: MCP hører til http-familien.
En fjerde {type:"mcp"} ville motsagt :113-114, ikke utfylt den.

Konsekvens: S2.2 UGATED (bygges mot http + §8-grant). S2.4 UGATED (berikelse
innenfor §8s tre felt). Kun S2.3 (doc) krever amendment. §1-spørsmålet om
påkrevd/valgfri faller bort for MCP — den arver http sin OPTIONAL-status.

To feil hos oss, ført åpent i §7.2:
- "frossen siden bfa5a9b" var feil. git log -S: BEGGE MCP-ankere landet i
  7aa53fc — konsumentenes egen commit. Vi tok siste commit som rørte filen og
  antok at teksten daterte derfra.
- Vi fant ikke :113 fordi grep på connection_ref | head -3 stoppet på :109.
  Sikt grepet mot seksjonen, ikke mot ett token.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XYkLsRfSBBUjULS219Fy8X
This commit is contained in:
Kjell Tore Guttormsen 2026-07-26 21:08:34 +02:00
commit 84a301057f

View file

@ -57,10 +57,11 @@ skrive før pakken lukkes:
Tallet er ikke poenget — membership er.
**S2.22.4 (D-B)** var det ene punktet commons ikke kunne ankre. **Substansen kom 2026-07-26**
og er ført i §7.1: D-B er en *scope*-beslutning, ikke spec-tekst, og av de tre gatede storiene
er det S2.2 + S2.3 som krever kildefamilie-utvidelser — mens `:29-31` allerede sier at en
MCP-basert konnektor under `http` **ikke** krever spec-endring. Den motsetningen må avgjøres
før S2.2 føres opp som blokkert på oss.
og er ført i §7.17.2: D-B er en *scope*-beslutning, ikke spec-tekst. **To av de tre gatede
storiene viste seg UGATED** — S2.2 fordi `:113-114` normativt plasserer MCP-konnektorer i
`http`-familien (MUST på samme kontrakter), S2.4 fordi berikelsen holder seg innenfor §8s tre
felt. **Kun S2.3 (`doc`) krever amendment.** Begge frigjøringene kom av ankring i frossen tekst,
ingen av dem av en endring.
---
@ -351,9 +352,9 @@ construction)*; (3) dokument-konnektor-avgrensning *(PDF via `pypdf` nå, DOCX u
| Story | Krever ingest-spec-amendment? | Hva |
|---|---|---|
| **S2.2** MCP-konnektor | **JA** — ny kildefamilie | `{type: "mcp", id, server_ref, tool}` i manifestet. `server_ref` = navn på env-var med kommando, **speiler `connection_ref`** (§4). Datainntak, ALDRI kjøresti. Ikke fjern-servere, ingen auth utover env-ref |
| **S2.2** MCP-konnektor | **NEI — UGATED** (se §7.2) | `:113-114` sier normativt at en MCP-konnektor **er en utvidelse av `http`-familien** med MUST på samme kontrakter. Ingen ny familie, ingen amendment. Bygges mot `http` + §8-grant |
| **S2.3** Dokument-konnektor | **JA** — ny kildefamilie | `{type: "doc"}`. PDF→OKF-konseptfil med provenance, deterministisk mot committede fixtures |
| **S2.4** Konnektor-herding | **Trolig NEI** i nedskopert form | Timeout-parameter, feilkategorisering, beriket §8-logg (kilde/tidspunkt/radantall — aldri innhold). Retry KUN hvis D-B sier ja (default nei, av hensyn til determinisme). Inkrementell re-ingest: **ikke**, med mindre D-B amender §8 |
| **S2.4** Konnektor-herding | **NEI — UGATED** (bekreftet av po) | Timeout-parameter, feilkategorisering, beriket §8-logg (kilde/tidspunkt/radantall — aldri innhold). Retry KUN hvis D-B sier ja (default nei, av hensyn til determinisme). Inkrementell re-ingest: **ikke**, med mindre D-B amender §8 |
**Commons' observasjon, ikke et forslag:** §4 har i dag tre kildetyper (`file`, `sql`, `http`),
og §1 (`:27-31`) binder konformans til `file` + `sql` som påkrevde med `http` som eksplisitt
@ -377,12 +378,47 @@ i commons FØRST» — til noe som må avgjøres, ikke antas:
- Distinksjonen er ikke akademisk: den avgjør om S2.2 er blokkert på commons i det hele tatt.
Under den andre lesningen er S2.2 **ugated** og kan bygges nå, mot `http` + opt-in-flagget (§8).
Argumentet for at det likevel er en egen familie: en MCP-server er ikke en URL-henting, og
`server_ref` (env-var med **kommando**) er en subprosess-grant, ikke en nettverks-grant — §8s
opt-in-flagg er formulert for «network sources … and any other non-local transport», som
dekker det, men manifestets `base_url`/`credential_ref`-felter passer dårlig på en kommando.
**Vi tar ikke stilling.** Vi sier bare at `:29-31` gjør dette til et reelt valg med to
forsvarlige svar, og at det bør avgjøres før S2.2 føres opp som gated på oss.
### 7.2 Spørsmålet er AVGJORT av frossen tekst — det er ikke to forsvarlige svar (korr. 2026-07-26)
Avsnittet over stilte (a)/(b) som et åpent valg. **Det var feil, og `portfolio-optimiser` fant
hvorfor: det finnes et ANDRE anker vi ikke siterte, og det er normativt.**
> **`ingest-spec.md:112-114`** (§4, kildetypelisten)
> `type: "http"` — a remote endpoint (OPTIONAL extension point, §1). Field `base_url`: the
> endpoint base; it MUST NOT embed credentials. Optional field `credential_ref`: the NAME of
> a runtime-resolved secret reference. **An MCP-based connector is an extension of this family
> and MUST honour the same extraction, materialization, and gate contracts.**
`:29-31` sier at MCP-veien ikke krever spec-endring. `:112-114` sier **normativt hvor den hører
hjemme** — som en utvidelse av `http`-familien, med **MUST** på de samme kontraktene. Frossen
tekst har altså allerede valgt (b). En fjerde `{type: "mcp"}`-familie ville **motsagt** `:113-114`,
ikke utfylt den.
**Konsekvens: S2.2 er UGATED.** Premisset «krever ingest-spec-amendment i commons FØRST» er
avkreftet av vår egen frosne tekst. S2.2 kan bygges mot `http`-familien + §8s opt-in-grant uten
å vente på noe herfra.
**Og §1-spørsmålet i 7.1 faller bort for MCP:** MCP arver `http`s status, og `http` er eksplisitt
OPTIONAL (`:27-31`). `:27-31` trenger derfor **ingen** omskriving for MCP. Spørsmålet gjenstår
kun for **S2.3 (`doc`)**, som fortsatt er en genuint ny familie. `portfolio-optimiser`s
anbefaling der: valgfri som `http` — en konform implementasjon bør ikke tvinges til en
PDF-parser. Det er deres anbefaling til ratifisering, ikke en beslutning.
**(a)-argumentet lever videre, men som implementasjonssak, ikke spec-tekst.** At
`base_url`/`credential_ref` passer dårlig på en kommando, og at env-var-med-kommando er en
subprosess-grant, er ekte friksjon — men `:113-114` sier MUST på *kontraktene*, ikke på
*feltnavnene*, og §8 dekker «any other non-local transport». Friksjonen lever i hvordan en
kommando uttrykkes innenfor `http`-familien. Støter implementasjonen faktisk på noe `:113-114`
forbyr, er det et målt funn og kommer tilbake hit.
**Vår egen feil, ført åpent fordi den er tredje instans samme dag:** vi skrev at `:29-31` var
«frossen siden `bfa5a9b`». Målt med `git log -S`: **begge** MCP-ankrene landet i **`7aa53fc`** —
nøyaktig commit-en konsumentene står på. `bfa5a9b` rørte bare D1-stempelmodellen. Vi tok repoets
*siste* ingest-spec-commit og antok at filen daterte derfra. Og vi fant ikke `:113` fordi vårt
`grep -n 'connection_ref' | head -3` stoppet på `:109` uten å lese omgivelsene — setningen i §1
er dessuten linjebrutt (`:30-31`), så et grep på hele frasen ville også bommet.
**Sikt grepet mot seksjonen, ikke mot ett token — og bekreft opphav med `git log -S`, aldri med
«siste commit som rørte filen».**
Merk også at S2.4s «beriket ingest-logg» ligger mot §8, som allerede sier *«Source calls are
logged (which source, when, row count)»* — en berikelse innenfor de tre feltene er neppe en
@ -435,7 +471,7 @@ method-spec navngir aldri en repo-sti (`grep -c 'examples/' method-spec.md` →
| 4 | S4.0 / D-A#2 kostbaseline | method §7 `:332-333`, §7.1 `:345-346` | ekte hull | **endrer fasit hvis ubetinget** |
| 5 | S3.5 / D-F tittel-whitespace | ingest §4 `:125`, §5 `:158-161`, §6 `:194-197`, §11 `:278` | ekte, smal søm | ingen |
| 6 | D-A#5 hovedbok-projeksjoner | ingen tekst; naboer method §7.2 `:367-372`, §12 `:436-464` | **ny seksjon** | ingen direkte; §12 må utvides |
| 7 | S2.22.4 / D-B | **ANKRET** (§7.1): S2.2 + S2.3 = nye kildefamilier §4/§1; S2.4 trolig ingen | **scope-beslutning, ikke spec-tekst** | ingen |
| 7 | S2.22.4 / D-B | **ANKRET** (§7.17.2): kun **S2.3** (`doc`) krever amendment. **S2.2 + S2.4 er UGATED** — S2.2 av `:113-114`, S2.4 innenfor §8s tre felt | **scope-beslutning, ikke spec-tekst** | ingen |
| 8 | B1 / D4 nav-golden | levert `b641741`; 0 spec-referanser | commons-eget, utenfor pakken | — |
Commons' rolle er uendret: vi forbereder underlaget, operatøren ratifiserer, og frossen tekst
@ -468,6 +504,9 @@ endres ikke uten den ratifiseringen.
| D-B-substansen levert 07-26 | coord fra `portfolio-optimiser` | rapportert fra deres `sesjonsplan-fase2-6.md:56-62`, ikke målt av oss |
| §1 gjør `http` OPTIONAL, `file`+`sql` påkrevd | `ingest-spec.md:27-31` | ordrett sitert i §7.1 |
| …og nevner MCP som `http`-transport | `ingest-spec.md:29-31` | «or via an MCP-based connector … does not require any change to this spec» |
| **ANDRE anker: MCP hører NORMATIVT til `http`** | `ingest-spec.md:112-114` | «An MCP-based connector **is an extension of this family** and **MUST** honour the same … contracts» |
| Begge MCP-ankere landet i `7aa53fc`, ikke `bfa5a9b` | `git log -S` på hver frase | `7aa53fc` for begge — altså i konsumentenes egen kopi |
| `bfa5a9b` rørte kun stempelmodellen | `git show --stat bfa5a9b` | 39 innsettinger, D1-stempel |
| §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 |