# I7 — statusrapport (D7): ingest-programmet, D7-stacken > **Scope:** denne rapporten dekker **D7-stacken alene** (dette repoet). Kryss-stack- > sluttkriteriet (begge stacker materialiserer identiske golden-uttrekk) eies av > MAF-programrapporten — se [Kryss-stack](#kryss-stack-eies-av-maf-programrapporten). Dato: > 2026-07-04. Ingen ny kode i I7 (docs-avslutning). ## Hva D7 har bevist | # | Påstand | Bevis | |---|---------|-------| | 1 | D7 implementerer `file` (CSV) + `sql` (sqlite RO) mot delt spec | `src/…/ingest.py` (`FileSource`, `SqlSource`, diskriminert union); `test_ingest_golden.py`, `test_ingest_sql_golden.py` | | 2 | Golden-uttrekk er byte-identisk (CSV + SQL) | `examples/ingest-golden-file/`, `examples/ingest-golden-sql/` mot `expected-bundle/` — golden-regresjonstester grønne | | 3 | Alle sømmer load-bearing (rød ved detach) | `test_ingest_loadbearing.py`, `test_ingest_sql_loadbearing.py`, `test_ingest_spec_loadbearing.py` (provenance, navigerbarhet via UENDRET `okf.py`, verdict-reservasjon, re-ingest-sikkerhet) | | 4 | `http`-manifest avvises fail-fast (ingen stille aksept) | `test_ingest.py::test_malformed_manifest_is_rejected` (parametriserer `http` OG ukjent diskriminator → `ValidationError`) | | 5 | Ingest gjør null modellkall / null nettverk | `ingest.py` er ren stdlib (ingen SDK/`requests`-import); hele suiten kjører uten nøkkel/nettverk | | 6 | Full suite grønn uten nøkkel/nettverk | `uv run pytest -q` → **265 passed** | | 7 | Lint + type rene | `uv run ruff check .` → All checks passed · `uv run mypy src` → no issues (16 filer) | | 8 | Dokumentasjonen er sannferdig avgrenset (CSV+SQL; HTTP/MCP kun peker) | `README.md` (ingest-seksjon + honesty-note), `docs/extending.md`; grep-sjekk mot overpåstand ren | ## Hva D7 IKKE har (ærlighetsregelen, method-spec §1 / ingest-spec §1) - **Ingen HTTP-konnektor, ingen MCP-konnektor.** `http` er et OPTIONAL extension point (spec §1) som D7 bevisst ikke bygger; et `http`-manifest avvises fail-fast (bevis #4). - **Ingen live-kilde-integrasjon.** Ingest er deterministisk, offline, null egress. - **`create_sdk_mcp_server`/`@tool` brukes ingen steder i `src/`** — omtales i `docs/extending.md` kun som det ubygde vehikkelet man *ville* grepet til for en MCP-konnektor. - **Ingen ny live-atferd utover S10.** Programmets ENE ekte API-kjøring forblir S10 (D6); ingest la ingenting til på den fronten. ## Verifiseringslogg (hver påstand → kommando/kilde) | Påstand | Kommando / kilde | Resultat | |---------|------------------|----------| | Suite grønn uten nøkkel/nettverk | `uv run pytest -q` | `265 passed in 1.18s` | | Lint rent | `uv run ruff check .` | `All checks passed!` | | Type rent | `uv run mypy src` | `Success: no issues found in 16 source files` | | `http` avvist fail-fast | `tests/test_ingest.py:71-72` (parametrisert `http`+`unknown` → `ValidationError`) | testbevist | | Ingest rører ikke SDK/nett | `grep -n "sdk\|claude_agent\|create_sdk" src/…/ingest.py` | ingen treff (ren stdlib) | | `create_sdk_mcp_server` ubrukt i src | `grep -rn "create_sdk_mcp_server\|@tool" src/` | ingen treff | | Ingen overpåstand i docs | grep `http\|mcp\|live\|egress` over `README.md` + `docs/extending.md` + briefer | hvert treff = negasjon eller peker; ingen påstand om D7-HTTP/MCP-støtte eller live-kilde | | MAF I6 landet (I7-gaten) | `git -C /Users/ktg/repos/portfolio-optimiser log --oneline` | `58dda46`→`696f19a`, review `72cb15f` — kun eksistens bekreftet | | Golden byte-identisk | `test_ingest_golden.py`, `test_ingest_sql_golden.py` | grønne | ## Kryss-stack (eies av MAF-programrapporten) Program-sluttkriteriet «begge stacker materialiserer identiske golden-uttrekk fra delt spec (CSV + SQL)» er en **kryss-stack**-påstand. Den eies av MAF-programrapporten (hovedrepoet), som ser begge stackene; denne D7-rapporten dupliserer den ikke. D7-siden av kontrakten er oppfylt: D7 konsumerer den delte spec-en uendret og reproduserer golden-bytene (bevis #1, #2). HTTP/MCP-extension-pointet er demonstrert **MAF-only** (I6, lokal mock, bak opt-in-flagg); D7 har det bevisst ikke. ## Utestående (gated på operatør — ikke I7-scope) - Åpent-speil-synk (`open/…`) av I3+I5+I7-koden — outward-facing operatør-handling. - LICENSE-valg / S12-release.