docs(fot-i-bakken): ground-truth-verifisert levert-vs-lovet — agentiske lag inerte
Fot i bakken før fase-valg (Fase 4 vs D7). Explore-agent kartla; hovedkontekst selv-verifiserte de konsekvensrike funnene mot kildekoden: - ExpeL-laeringssloyfa ER APEN: retrieval naar aldri modellen (generering run.py:194 for retrieval run.py:216-221; sctx run.py:219 forkastes; 0 context_providers i src/). - README 'Not yet usable' (README.md:5) motsier 'Fase 1-3 lukket' — release-blokkerende. - Maker-checker-checker gater ingenting (modulo-selector workflow.py:93-96). - Ingen ekte-modell-kjoring (alle 4 skip = live-provider). Ingen SKILL.md. Ingen entry-point. Deterministisk ryggrad (validator/budsjett/provenance/sti-sikkerhet/onboarding) holder. Neste: operatorbeslutning — lukk kjerne-gjeld (A) vs aerlig nedgrader+release (B). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019any9zfGNNwWJPX5Zq2QRz
This commit is contained in:
parent
55f98f2af7
commit
129a40baea
1 changed files with 80 additions and 0 deletions
80
docs/2026-06-26-fot-i-bakken.md
Normal file
80
docs/2026-06-26-fot-i-bakken.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# Fot i bakken — levert vs lovet (2026-06-26)
|
||||
|
||||
**Hva dette er:** En nøktern grunning FØR fase-valget (Fase 4 open-source vs D7-sibling). STATE-narrativet
|
||||
var triumferende ("Fase 3 helt lukket", "load-bearing bevis", "lærer av dommene"). Session-start flagget
|
||||
*narrative crystallization* (sesjon #39). En Explore-agent kartla levert kode mot lovet visjon; de
|
||||
konsekvensrike funnene er **verifisert av hovedkonteksten selv** mot kildekoden, ikke bare relayet.
|
||||
|
||||
## Hovedfunn (én linje)
|
||||
Den **deterministiske ryggraden holder og er ærlig**. De tre "agentiske" lovnadene STATE hviler på —
|
||||
*lærer av dommene*, *maker-checker-debatt*, *HITL* — er **inerte, dekorative eller config-stubber**, og
|
||||
**ingen kodesti har noensinne kjørt mot en ekte modell**. Suiten (116/4) kjører utelukkende på syntetiske
|
||||
klienter med ferdigskrevet JSON.
|
||||
|
||||
## Hva HOLDER (deterministisk ryggrad — publiserbart, ærlig)
|
||||
- **Validator (B1):** ekte CBC-solve + Monte Carlo; `Rejection` er egen type uten persentiler (kan aldri
|
||||
konsumeres som validert). `validator.py:78-129`. Load-bearing testet (mutasjon rødt).
|
||||
- **Budsjett-/stopp-tak (B4/D6):** `Budget` nektes uten positive tak; `BudgetMiddleware` leser ekte
|
||||
`UsageDetails`, feiler lukket. `budget.py:50-101`. Sterkeste komponent.
|
||||
- **Provenance (B6):** Pydantic-stamp, F1 fake-model-lekkasje fikset + load-bearing. `provenance.py`, `run.py:201-205`.
|
||||
- **Sti-sikkerhet** (`retrieval.py`, fail-closed `commonpath`) + **config-only onboarding** (SC1, ekte src-grep-guard).
|
||||
|
||||
## Hva er GJELD (rangert; ✅ = verifisert av hovedkonteksten, ⚠️ = agent-rapportert, ikke selv-tracet)
|
||||
|
||||
1. **🔴 ✅ ExpeL-læringssløyfa er ÅPEN — retrieval når aldri modellen.** Generering skjer på `run.py:194`,
|
||||
*før* retrieval-blokken `run.py:216-221`. `provider.before_run` kalles på en lokal `SessionContext`
|
||||
(`run.py:219`) som **aldri** sendes til noen agent. Debatt-agentene (`workflow.py:57-66`) får `tools`+
|
||||
`middleware` men **ingen `context_providers`** (`grep -rn context_providers src/` = **0 treff**). De
|
||||
hentede verdiktene fyller kun `RunResult.retrieved` (for testassertioner). Docstrings (`run.py:214-215,
|
||||
269-271`) + STATE + `CLAUDE.md:4` påstår en lukket sløyfe. **Falsk på wiring-nivå.** Største drift.
|
||||
2. **🔴 ✅ README sier "Not yet usable".** `README.md:5` ("Status: Early development (plan phase). Not yet
|
||||
usable.") motsier STATEs "Fase 1-3 lukket". Første en ekstern leser ser — release-blokkerende for Fase 4.
|
||||
3. **🟠 ✅ Maker-checker-checkeren gater ingenting.** Selektoren er en ren modulo-teller (`workflow.py:93-96`);
|
||||
checkerens kritikk (`workflow.py:29`) parses aldri, blokkerer aldri. Debatt-teksten mater nå generering
|
||||
som kontekst (`run.py:189-190`), så den er ikke *helt* dekorativ — men det er ingen konsensus-/gate-
|
||||
semantikk. Den ekte porten er validatoren, ikke checkeren.
|
||||
4. **🟠 ✅ Ingen ekte-modell-kjøring — noensinne.** Alle 4 skippede tester er nettopp live-provider-testene
|
||||
(lokal token-regnskap, Foundry-profil, e2e-portefølje, debatt-konvergens/-kostnad). "Virker det mot en
|
||||
faktisk LLM?" er en åpen risiko. `findings-a.md` bekrefter: debatt-verditallet ble aldri produsert.
|
||||
5. **🟠 ✅ Ingen `SKILL.md`.** `CLAUDE.md` + plan Fase 2 lover "Metode = Agent Skill (SKILL.md + scripts/)".
|
||||
Metoden er vanlige Python-moduler. B8 (skill-sandbox) følgelig også fraværende.
|
||||
6. **🟡 ✅ Ingen `[project.scripts]` entry-point** til tross for `main()` (`run.py:296`). README viser ingen
|
||||
kjørekommando. En bruker får ingen vei fra README til en faktisk kjøring.
|
||||
7. **🟡 ✅ VerdictStore er in-memory only** (`verdicts.py:106`). "Læring" overlever ikke restart — og påvirker
|
||||
uansett ingenting (jf. #1).
|
||||
8. **🟡 ⚠️ MCP-datatilgang er parallell demonstrator, ikke datasømmen i bruk.** `build_mcp_server` finnes
|
||||
(`datasource.py`), men `run_project` bruker in-process `FunctionTool` (`run.py:178`). `CLAUDE.md` løfter
|
||||
MCP til konvensjon. (Agent-rapportert; ikke selv-tracet.)
|
||||
9. **🟡 ⚠️ HITL Layer-2 = les hardkodet `verdict_input` JSON fra config** (`run.py:224`). "Fageksperter
|
||||
vurderer via HITL" er i praksis å lese en config-beslutning. `extending.md` er ærlig om dette. (Agent-rapportert.)
|
||||
10. **🟡 ⚠️ B10 rejection-taksonomi/konfliktregel fraværende** — `decision` er bar `Literal` (`contracts.py:61`).
|
||||
§15 kaller dette "den mest domenespesifikke delen som MÅ være brukerlevert". (Agent-rapportert.)
|
||||
|
||||
## 90 %-linja
|
||||
Forsvarlige kutt: durabel checkpointing, OTEL, vektorlager, concurrent fan-out. **Men:** læringssløyfa er
|
||||
én av fire headline-invarianter og er *presentert som levert* mens den er inert — det er ikke et 90 %-kutt.
|
||||
Fan-out er sekvensiell `for`-løkke (`run.py:276-292`); isolasjon oppnås trivielt (ferskt state per kjøring),
|
||||
sidesteppet B7 heller enn løst for det concurrent tilfellet U1 navnga. STATE er ærlig om "SEKVENSIELT".
|
||||
|
||||
## Konsekvens for fase-valget
|
||||
- **Fase 4 (open-source) nå** ville publisere et gap mellom README/STATE-narrativet og hva en bruker får.
|
||||
De to mest markedsførte funksjonene (lærer-av-dommer, maker-checker-debatt) er inerte/dekorative.
|
||||
- **D7 (sibling) nå** er prematurt: man reimplementerer en metode hvis agentiske claims ennå ikke er sanne.
|
||||
- **Reell vei videre (operatørbeslutning):**
|
||||
- **A — Lukk kjerne-gjeld før release:** (1) wire `ExpeLContextProvider` *inn i* generering (fest på
|
||||
proposer-agenten; flytt retrieval FØR generering); (2) la checkeren binde, ELLER slutt å kalle det en
|
||||
debatt; (3) kjør ÉN ekte-modell ende-til-ende (lokal Ollama holder, D6-billig); (4) fiks README-status +
|
||||
legg til entry-point. Gjør narrativet sant.
|
||||
- **B — Ærlig nedgrader:** release kun den deterministiske kjernen med korrekt framing; merk agentiske lag
|
||||
som eksperimentelle/uferdige. Raskere, men mindre ambisiøst.
|
||||
|
||||
## Verifiseringslogg
|
||||
| Påstand | Hvordan verifisert | Resultat |
|
||||
|---|---|---|
|
||||
| Suite 116/4 | `uv run pytest -rs` | Bekreftet; 4 skip = alle live-provider |
|
||||
| ExpeL når aldri modellen | lest `run.py:186-236`, `workflow.py:57-66`; `grep context_providers src/` | Bekreftet (0 treff) |
|
||||
| Checker gater ikke | lest `workflow.py:93-106` | Bekreftet (modulo-selector) |
|
||||
| Ingen SKILL.md | `find -name SKILL.md` | Bekreftet (ingen) |
|
||||
| README "Not yet usable" | `head README.md` | Bekreftet (`README.md:5`) |
|
||||
| Ingen entry-point | `grep project.scripts pyproject.toml` | Bekreftet (kun `[project]`) |
|
||||
| mypy/ruff rene | `uv run mypy src`, `ruff check .` | Bekreftet |
|
||||
Loading…
Add table
Add a link
Reference in a new issue