docs(p12): MAF debt re-measured U1-U19 - 6/5/8 unchanged row for row, the pin bump moved U5's premise not its status [skip-docs]
Re-measured all 19 rows of the prior-art register 15.1 againstce22b0ewith the review's grep-then-read-the-call-site method (37 modules / 17 747 lines). No row moved in either direction over the 109 commits since 29.08; in-row changes (debate got four Function Tools and an observing FunctionMiddleware,da5f10f) move no status. Of the six "ja" only U3 is on the default CLI path. SkillsProvider is no longer @experimental in installed core 1.16.0 and MAF's own FileSkillsSource loads po's two skills 2/2, so one of three reasons behind "SkillsProvider AVVIST" is dead. okf 0.8.3: 5 rows tried, 0 moved. A/B/C formulated, not decided. src untouched, NOK 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ce22b0e0e6
commit
6eb58e5a26
1 changed files with 354 additions and 0 deletions
354
docs/2026-09-11-p12-maf-gjeld.md
Normal file
354
docs/2026-09-11-p12-maf-gjeld.md
Normal file
|
|
@ -0,0 +1,354 @@
|
|||
# P12 — MAF-gjelden re-målt: U1–U19 mot dagens kode (2026-09-11)
|
||||
|
||||
> **Ordre:** `20260911T082410Z-5561027910-from-.claude`. **Mandat:** re-mål de 19 radene i
|
||||
> `docs/research/2026-06-23-prior-art-platform.md` § 15.1 mot koden på `ce22b0e`, si hva som mangler
|
||||
> per rad, prøv hva okf 0.8.3 muliggjør, og formuler (A)/(B)/(C) på nytt uten å avgjøre dem.
|
||||
> **Ingen kode er endret** (`git diff --stat ce22b0e -- src` er tom). **NOK 0.** **Ingen push.**
|
||||
> Hvert tall under kommer fra en kommando kjørt i DENNE økten (§ 9); der et eldre dokument siteres,
|
||||
> står fil og linje.
|
||||
|
||||
## § 0 Hva som ER målt og hva som IKKE er det
|
||||
|
||||
**Målt:**
|
||||
|
||||
* **Ny telling: 6 ja · 5 delvis · 8 nei av 19 — UENDRET fra 29.08, rad for rad.** Ingen rad har flyttet
|
||||
status, verken opp eller ned, over de 109 commitene siden 29.08 (57 av dem rører `src`).
|
||||
* **Av de 6 «ja» er ÉN på CLI-ens default-sti uten flagg (U3).** U18 er default på den hostede flaten
|
||||
og opt-in på CLI-en. U4, U6, U12 og U14 er opt-in bak et flagg eller en miljøvariabel som er AV
|
||||
som default (§ 3, kolonnen «I DAG»).
|
||||
* **Innenfor-rad-endringer finnes, men ingen flytter en status.** Debatten fikk fire Function Tools og
|
||||
en observerende `FunctionMiddleware` på den normative stien (`da5f10f`, U7/U8). Et nytt
|
||||
`@tool` er definert, men har 0 kallere i `src` (`ccd65d3`, U7).
|
||||
* **Pinne-løftet (`ef2f1cb`, 1.9.0 → 1.16.0) har FJERNET ett premiss uten at po endret en linje:**
|
||||
`SkillsProvider` er ikke lenger `@experimental` i installert core 1.16.0. De tre markørene i
|
||||
`_skills.py` sitter nå på `MCPSkillResource`/`MCPSkill`/`MCPSkillsSource` (`:4187/:4229/:4862`,
|
||||
alle `MCP_SKILLS`). MAFs egen `FileSkillsSource` laster **2/2** av po sine SKILL.md (§ 6). U5
|
||||
forblir **nei** (0 kallsteder). Men én av de tre begrunnelsene i avvisningen (plan 23.08 § D.2)
|
||||
er død, og det er et veivalg (§ 7, D).
|
||||
* **`MiddlewareTermination` finnes i installert 1.16.0** (`_middleware.py:75`, ingen
|
||||
`@experimental` på den) og **brukes ikke av po:** 0 treff over 37 filer / 17 747 linjer.
|
||||
* **okf 0.8.3: 5 U-rader prøvd, 0 flyttet** (§ 6). PATH-okf er nå **0.8.3**, ikke 0.8.1 som ordren
|
||||
sa, og den er byte-lik taggen `v0.8.3`.
|
||||
* **Innboksen: 2/2 lukket.** Begge meldingenes premiss «tagget lokalt, upushet» holder ikke lenger:
|
||||
okf `main` og alle fire taggene v0.8.0–v0.8.3 ligger på Forgejo.
|
||||
|
||||
**IKKE målt:**
|
||||
|
||||
* **Ingen rad er bekreftet LEVENDE.** Et grep-tall måler kallsteder, ikke om kapabiliteten virker mot
|
||||
en modell.
|
||||
* Innholdet i MAF-releasene 1.10–1.16 utover de konstruktene radene navngir, som `ContextWindowCompactionStrategy`
|
||||
(`_compaction.py:1624`). Den er sett, men ikke målt.
|
||||
* Om Microsoft Learn fortsatt kaller `SkillsProvider` eller compaction «experimental» i prosa. Kilden
|
||||
her er den INSTALLERTE koden, ikke dokumentasjonen.
|
||||
|
||||
## TEST NÅ
|
||||
|
||||
```bash
|
||||
uv pip list | grep agent-framework # core 1.16.0 · foundry 1.8.2 · openai 1.8.2 · orch 1.1.1
|
||||
grep -rn --include="*.py" -F 'MiddlewareTermination' src | wc -l # 0 (kjent-positiv: samme stavemåte i .venv → 7 filer)
|
||||
git log -S'FileCheckpointStorage(' --oneline -- src # c08ae91 — U12s nei→ja-flytt (siste flytt noen rad har hatt)
|
||||
git log -S'debate_middleware' --oneline -- src # da5f10f — innenfor-rad-endring U8 (ingen statusflytt)
|
||||
bash scratchpad/p12/u_grep.sh # hele konstrukt-tabellen, src-treff + venv-kjent-positiv
|
||||
uv run pytest -q && git status --porcelain # 1577 passed / 5 skipped; kun de to utrackede
|
||||
```
|
||||
|
||||
## § 1 Premisser, med utfall per rad
|
||||
|
||||
| # | Premiss (ordren) | Utfall | Kommando |
|
||||
|---|---|---|---|
|
||||
| (i) | HEAD `ce22b0e`, `ls-remote origin main` = `d8dadbf`, upushet = 1 | ❌ **AVVIK:** HEAD `ce22b0e` ✅, men `ls-remote origin main` = **`ce22b0e`** → upushet = **0** før denne økta. Noen har pushet siden PM målte | `git rev-parse HEAD`; `git ls-remote origin main` |
|
||||
| (ii) | nøyaktig to utrackede | ✅ `docs/presentasjon-portfolio-optimiser.html` + `scratchpad/`. HTML-en er ikke rørt, ikke lest og ikke staget | `git status --porcelain` |
|
||||
| (iii) | `wc -l STATE.md` = 117 | ✅ 117 | `wc -l STATE.md` |
|
||||
| (iv) | 1577/5, ruff/format/mypy rene, golden `ea8c534…` | ✅ **1577 passed, 5 skipped** (294,85 s), ruff «All checks passed!», format «199 files already formatted», mypy «no issues found in 37 source files», golden `ea8c534773acdbe41ae68f2c55724d69aaf8be4f` (av INNHOLDET) | `uv run pytest -q`; `uv run ruff check src tests`; `uv run ruff format --check src tests`; `uv run mypy src`; `shasum -a 1 tests/golden/demo-transcript.stdout` |
|
||||
| (v) | nevneren er 19 | ✅ 19, på linje 271–289 | `grep -c '^| U[0-9]' docs/research/2026-06-23-prior-art-platform.md` |
|
||||
| (vi) | 29.08: 6/5/8 | ✅ ordrett i `docs/2026-08-29-maf-gjelden-omfang.md` l. 16–17 | lest |
|
||||
| (vii) | 37 filer / 17 747 linjer | ✅ 37 / 17 747 (på `3bdc5c1`, 29.08-dokets commit: 34 / 12 873) | `ls src/portfolio_optimiser/*.py \| wc -l`; `wc -l src/portfolio_optimiser/*.py \| tail -1`; `git ls-tree -r --name-only 3bdc5c1 src` + `git show` |
|
||||
| (viii) | core 1.16.0 · foundry 1.8.2 · openai 1.8.2 · orch 1.1.1 | ✅ identisk; pinnen `pyproject.toml` l. 12–17 | `uv pip list \| grep agent-framework` |
|
||||
| (ix) | okf på PATH = 0.8.1 | ❌ **AVVIK:** PATH-okf er **0.8.3** (`uv tool list` → «llm-ingestion-okf v0.8.3»; `…/tools/llm-ingestion-okf/bin/python -c "…__version__"` → `0.8.3`; uv-receipt: `git = "…/open/llm-ingestion-okf.git?rev=v0.8.3"`). Operatøren har installert på nytt siden PM målte. Den er LEST og ikke rørt | `uv tool list`; `__version__`; `~/.local/share/uv/tools/llm-ingestion-okf/uv-receipt.toml` |
|
||||
| (x) | v0.8.3 = `0963dfa…`, kun lokal | ✅ tagg `v0.8.0`–`v0.8.3`, `rev-list -n1 v0.8.3` = `0963dfa5e5be6282cdbc41b08d85460b8fd309ef`. ❌ **AVVIK:** «kun lokal» holder IKKE. `ls-remote --tags origin \| grep -c 'v0\.8'` = **8** (4 annoterte tagger × 2 linjer), og `ls-remote origin main` = `0308169` = lokal `main` | `git -C ~/repos/llm-ingestion-okf ls-remote …` |
|
||||
| (xi) | `--source-quota`/`--stem-prefix` er i `--help`, ikke CHANGELOG | ✅ begge i `okf consume --help` (PATH-0.8.3) | `okf consume --help` |
|
||||
| (xii) | P9/P10/P11 re-måles ikke | ✅ ingen re-måling. Tall derfra er sitert med linje | — |
|
||||
| (xiii) | A/B/C ordrett | ✅ alle tre linjene funnet der ordren sier (§ 7) | `sed -n` på de tre filene |
|
||||
| (xiv) | innboks 2, kø 0 utenom ordren | ✅ inbox = 2 (rc 0), `orders` maxdepth 1 = 0 | `find … -type f \| wc -l` |
|
||||
| — | «109 commits siden 29.08» | ✅ **109** med `--since='2026-08-29 00:00'`. Uten klokkeslett ga samme kommando **108**, fordi git leser en dato uten tid som «den datoen, på nåværende klokkeslett», så tallet flytter seg med tid på døgnet | `git log --oneline --since='2026-08-29 00:00' \| wc -l` |
|
||||
|
||||
## § 2 Versjonsmålingen
|
||||
|
||||
| Hva | Tall | Kommando |
|
||||
|---|---|---|
|
||||
| MAF installert | core **1.16.0**, orchestrations **1.1.1**, foundry **1.8.2**, openai **1.8.2** | `uv pip list \| grep -i agent-framework`; `importlib.metadata.version(...)` |
|
||||
| `@experimental` i `_skills.py` (U5) | **3**: `:4187` `MCPSkillResource`, `:4229` `MCPSkill`, `:4862` `MCPSkillsSource` (alle `MCP_SKILLS`). `SkillsProvider` (`:1831`) og `FileSkillsSource` (`:2790`) har **ingen**. Reviewen målte `@experimental(SKILLS)` på `:76/:120` i 1.9.0 | `grep -n -A2 '@experimental' .venv/…/agent_framework/_skills.py` |
|
||||
| `@experimental` i `_evaluation.py` (U15) | **20** (reviewen: 20 i 1.9.0) | `grep -c '@experimental' …/_evaluation.py` |
|
||||
| `@experimental` i `_compaction.py` (U16) | **0** (29.08 så 0 i en scratch-1.16.0; nå installert) | `grep -c '@experimental' …/_compaction.py` |
|
||||
| `@experimental` i `_harness/` (U19) | **16** (29.08 § 6 l. 36: 16) | `grep -rh '@experimental' …/_harness \| wc -l` |
|
||||
| `@experimental` i `_magentic.py` (U4) | **0** | `grep -c '@experimental' …/agent_framework_orchestrations/_magentic.py` |
|
||||
| `MiddlewareTermination` (U8) | **finnes**, `_middleware.py:75`. Fila har 3 markører, på `:353` `add_tools`, `:390` `remove_tools` og `:745` `MiddlewareBundle`, ingen på den. `MiddlewareFailure` finnes på `:85`. Begge eksportert fra `agent_framework` | `grep -rn 'class MiddlewareTermination\|class MiddlewareFailure'`; `grep -n -A1 '@experimental' …/_middleware.py`; `hasattr(agent_framework, …)` |
|
||||
| okf på PATH | **0.8.3**, to målemåter: `uv tool list` og `__version__`. `which okf` = `~/.local/bin/okf` | se § 1 (ix) |
|
||||
| okf eksport-0.8.3 | `git archive v0.8.3` pakket ut under `scratchpad/p12/okf-083-export/`. `diff -rq -x __pycache__ export/src/llm_ingestion_okf <PATH-site-packages>` → eneste avvik er `Only in <PATH>: _data` (pakkedata: `consumption-contract.md`, `okf-consume-template.md`). **PATH-0.8.3 ≡ tagg-0.8.3 i kildekode** | `git -C ~/repos/llm-ingestion-okf archive v0.8.3 \| tar -x`; `diff -rq` |
|
||||
| `okf check`-regler | **16** på PATH-0.8.3 og **16** fra eksporten. STATE sa «regel 16 kun på main». Den er nå i taggene | `python -c "from llm_ingestion_okf import contract_check as c; print(len(c.RULES))"` |
|
||||
| okf-pinnen po selv bruker | `v0.3.2` = `f14c075` (uendret, HOLDT) | `grep -n llm-ingestion-okf pyproject.toml uv.lock` |
|
||||
|
||||
**Hvilken okf som målte hva:** alt i § 6 er målt med **PATH-0.8.3**, bortsett fra SKILL.md-proben,
|
||||
som leser **eksport-0.8.3**-katalogen `skills/`. Den katalogen følger ikke med pakken, men de to er
|
||||
bevist like i kildekode.
|
||||
|
||||
## § 3 U1–U19 mot dagens kode
|
||||
|
||||
**Metode** (ordrett fra `docs/2026-08-25-fable-misjonsreview.md` § 2): «Nevner: `grep -rn
|
||||
--include="*.py" -F <konstrukt> src` over 34 moduler / 11 650 linjer (`wc -l`), deretter kallstedet
|
||||
lest. `tests/` og `spikes/` teller IKKE som bruk. «Bevis» er der konstruktet faktisk kalles, ikke der
|
||||
det nevnes i prosa.» **Min nevner:** 37 moduler / 17 747 linjer
|
||||
(`ls src/portfolio_optimiser/*.py | wc -l`; `wc -l src/portfolio_optimiser/*.py | tail -1`).
|
||||
|
||||
**Kjent-positiv per null:** hvert konstrukt er grepet med SAMME `-F`-stavemåte over de fire
|
||||
installerte `agent_framework*`-pakkene (`venv`-tallet i `scratchpad/p12/u_grep.sh`). En `src=0` teller
|
||||
bare som null når `venv > 0`, altså når stavemåten finnes. Konstrukter med `venv = 0` er
|
||||
registerets C#- eller ikke-installerte navn. De er validert på det Python-navnet som faktisk finnes,
|
||||
og det står i raden.
|
||||
|
||||
Kapabilitets-kolonnen siterer § 15.1 ORDRETT: «Kapabilitet» — «MAF-konstrukt / API».
|
||||
|
||||
| ID | Kapabilitet (§ 15.1, l. 271–289, ordrett) | 29.08 | I DAG | Bevis (kallsted, fil:linje) | Endring siden 29.08, og hvorfor |
|
||||
|---|---|---|---|---|---|
|
||||
| U1 | Orkestrator fan-out per prosjekt — `ConcurrentBuilder` / `AgentWorkflowBuilder.BuildConcurrent()` + FanIn-aggregering | nei | **nei** | `ConcurrentBuilder` src **0** (venv 4). Håndrullet: `run.py:2004` `wave_results = await asyncio.gather(` | Ingen. Forekomster 0 → 0 (`git grep -c` på `3bdc5c1` mot nå) |
|
||||
| U2 | Per-prosjekt graf-workflow — `WorkflowBuilder` (fan-out/fan-in, conditional/switch-case-edges, superstep, typesikkerhet) | nei | **nei** | `WorkflowBuilder` src **0** (venv 14) | Ingen. 0 → 0 |
|
||||
| U3 | Debatt-mønster (maker-checker) — `GroupChatBuilder`; C# `RoundRobinGroupChatManager.ShouldTerminateAsync` + `MaximumIterationCount`; Python `termination_condition`-lambda | ja | **ja** (default-stien, hver kjøring) | `workflow.py:104` `builder = GroupChatBuilder(` · `:108` `termination_condition=make_termination(...)`, kalt fra `run.py:1265` `debate = fresh_workflow(` | Ingen. 1 → 1. Debatten fikk verktøy og middleware (se U7/U8), men byggeren er den samme |
|
||||
| U4 | Åpne delsteg (kun ved behov) — Magentic: `MagenticBuilder`/`StandardMagenticManager`; `max_round_count`/`max_stall_count`/`max_reset_count`; progress ledger | ja | **ja** (opt-in: `--explore`, default `None`, `run.py:2469`) | `explore.py:1361` `builder = MagenticBuilder(` · `:1364` `max_round_count=contract.max_rounds`, nådd fra `run.py:3603` `explore(` / `:3589` `resume_exploration(` | Ingen. 2 → 2. `_magentic.py` har 0 `@experimental` i orch 1.1.1 |
|
||||
| U5 | Brukerleverte metoder — Agent Skills: `skills/<navn>/SKILL.md` + `scripts/` + `references/` + `assets/`; `SkillsProvider` (Py) / `AgentSkillsProvider` (C#); `McpSkillsSource` (Py 1.8.0) | nei | **nei** | `SkillsProvider` src **0** (venv 3), `MCPSkillsSource` **0** (venv 3). Eneste `SKILL.md`-treff er prosa: `persona.py:3` | **Status uendret, premisset flyttet av pinnen (`ef2f1cb`):** `SkillsProvider` er ikke lenger `@experimental` i 1.16.0 (§ 2), og MAFs `FileSkillsSource` laster po sine to skills 2/2 (§ 6). Avvisningens tre grunner (plan 23.08 § D.2: «`ExperimentalFeature.SKILLS`; egen loader virker; commons eier innholdet») er nå én død, to står. → veivalg D |
|
||||
| U6 | Datatilgang — MCP-tools: `MCPStdioTool` / `MCPStreamableHTTPTool` / `MCPWebsocketTool`; eksponer agent som server via `as_mcp_server()` | ja | **ja** (opt-in: `--mcp-config`, default `None`, `run.py:2577`) | `mcp_tools.py:154` `MCPStdioTool(` · `:170` `MCPStreamableHTTPTool(`, wiret `run.py:1235` `build_mcp_tools(mcp_servers) if mcp_servers else []`. `MCPWebsocketTool` 0 (venv 3), `as_mcp_server` 0 (venv 1) | Ingen. 1 → 1 |
|
||||
| U7 | Solver/validator/Monte Carlo som verktøy — Function Tools (alle store providere, inkl. Anthropic) | delvis | **delvis** | `@tool`: `datasource.py:108` `retrieve_cost_docs` (veg-stien, `run.py:1204`) · `explore.py:1033/1066/1095/1113` `list_bundles`/`read_bundle`/`read_dir`/`read_file` → **nå på debattens default bundle-sti** `run.py:1187` `debate_tools = list(navigator_tools([bundle_dir], ...))` · `explore.py:1230` `quick_validate` (kun utforskning, rådgivende). Validatoren på den normative stien er IKKE et verktøy (kalles etter generering) | **Innenfor raden:** `@tool` 5 → 7 (`baa6f45` `read_dir`, `ccd65d3` `concept_adjudication_state`). `navigator_tools` 2 → 6 (`da5f10f` S2c: debatten navigerer, `76b939b`). **Status uendret:** registerets formål er solver/validator/MC som verktøy, og det er fortsatt bare den rådgivende `quick_validate`. `make_adjudication_tool` (`tools.py:43`) har **0 kallere i `src`** (1 i tests), altså et definert verktøy uten wiring |
|
||||
| U8 | Intercept av tool-calls (blokkerende validator) — Middleware-pipeline `.Use()`; `FunctionMiddleware` (`InvokingAsync`/`InvokedAsync`) | delvis | **delvis** | `budget.py:228` `class BudgetMiddleware(ChatMiddleware)` · `mcp_tools.py:197` `class ToolCallRecorder(FunctionMiddleware)` · `explore.py:352` `class ExplorationToolRecorder(FunctionMiddleware)`, **nå også på debatten** `run.py:1262` `debate_middleware = [budget_mw, ExplorationToolRecorder(debate_tool_calls)]`. `MiddlewareTermination` src **0** (venv 7), `MiddlewareFailure` **0** (venv 4) | **Innenfor raden:** `FunctionMiddleware` 2 → 4 (`4aa4f9c` klassen, `da5f10f` på debatten). Ny middleware OBSERVERER, ingen blokkerer. Primitiven for å blokkere finnes i installert 1.16.0 (§ 2) og er ubrukt |
|
||||
| U9 | Læringssløyfe-injeksjon — Custom `ContextProvider` / `HistoryProvider` | delvis | **delvis** | `verdicts.py:340` `class ExpeLContextProvider(ContextProvider)`. Bærende bruk: `run.py:1385` `fewshot = ExpeLContextProvider(...).format_fewshot()` string-konkatenert inn i `gen_context`. Dekorativ bruk: `run.py:1563–1565` `before_run` inn i en kastet `SessionContext` (`run.py:1560`: «is NOT what reaches the prompt»). `context_providers` src **0** (venv 11); proposeren kaller rått `generate.py:630` `chat_client.get_response(` | Ingen. `ContextProvider` 8 → 8. F3 (29.08 § 1) står uendret |
|
||||
| U10 | Vektorlagre — Azure AI Search, Cosmos, Qdrant, Redis, Postgres (innebygde abstraksjoner) | nei | **nei** | `QdrantCollection`/`CosmosNoSql`/`RedisCollection` venv **0**: integrasjonspakkene er ikke installert (`uv pip list` viser kun de fire `agent-framework*`). Bred kontroll `grep -rniE 'qdrant\|redis\|cosmos\|postgres\|azure_ai_search\|vectorstore\|vector_store' src` = **2**, begge egne: `semretrieval.py:355` `save_vector_store` / `:393` `load_vector_store` (numpy, «MAF-free», D-C) | Ingen |
|
||||
| U11 | Citation-aware RAG-injeksjon — Custom `AIContextProvider`; `TextSearchProvider` (C#, `SourceName`/`SourceLink`); Azure AI Search agentic retrieval (GA 2026-04-01) | delvis | **delvis** | `provenance.py:18` `from agent_framework import Annotation, TextSpanRegion` · `:100` `TextSpanRegion(` inne i `ProvenanceStamp.to_annotations()` (`:93`, «for display only»). Egen sitatbæring: `datasource.Citation`, `bundle_citations`, `bundle_excerpt_citations` (`7aa06d5`). `AIContextProvider`/`TextSearchProvider` er C#-navn (venv 0) | **Ingen statusflytt, men et forbehold:** `to_annotations()` har **0 kallere i `src`** (1 i `tests/test_provenance.py:49`), og slik var det også på `3bdc5c1` (2 → 2 forekomster). MAF-typen bor altså bare på et bibliotek-API for visning. «Delvis» hviler på po sin EGEN sitatbæring, som vokste (pre-passets utdrags-siteringer), ikke på en MAF-provider |
|
||||
| U12 | Persistens / kræsj-overlevelse — Checkpointing (InMemory/File/Cosmos), pending HITL re-emitteres ved resume; Durable Task-extension for langvarig HITL | ja (opt-in) | **ja** (opt-in: `--checkpoint-dir`, default `None`, `run.py:2546`) | `explore.py:1375` `builder = builder.with_checkpointing(checkpoint_storage(checkpoint_dir))` · `:687` `return FileCheckpointStorage(` · resume `:2076` `checkpoint_storage=checkpoint_storage(checkpoint_dir)`. `InMemoryCheckpointStorage` 0 (venv 4) | **Innenfor raden:** `ef2f1cb` (F15) flyttet park-vakten til det deklarerte feltet `pending_request_info_events` (`explore.py:1931`). Tellingen 1 → 1. Siste FLYTT noen rad har hatt er fortsatt `c08ae91` (26.08) |
|
||||
| U13 | HITL-gates — Tool approval (`@tool(approval_mode='always_require')` Py / `ApprovalRequiredAIFunction` C#); `RequestPort`/`request_info()`; `MagenticPlanReviewRequest`/`.approve()`/`.revise()` | delvis | **delvis** | Plan review: `explore.py:674` `MagenticPlanReviewRequest` i `_ALLOWED_CHECKPOINT_TYPES` · `:1624` filtrerer `request_info`-events. CLI-dør `--plan-review` (`store_true`, av, `run.py:2490`) + asynkron via `--checkpoint-dir`/`--resume`. Layer-1: `workflow.py:116` `with_request_info(...)` bak `enable_layer1_hitl=False` (`workflow.py:78`, `run.py:1009`), `enable_layer1_hitl=True` i `src` = **0**, så biblioteket er eneste dør. `approval_mode` src **0** (venv 16). Hosting nekter: `hosting.py:200` | **Ingen statusflytt.** MAJOR-2s `--proposal-review` (`59f3fce`, `fedf989`) er en EGEN terminal-reviewer: `proposal_review.py` har 0 `agent_framework`-importer (de to treffene `:11–12` er prosa). Den er HITL i misjonens forstand, men ikke et MAF-konstrukt, så den flytter ikke raden |
|
||||
| U14 | Observabilitet (deploy-gate) — OpenTelemetry (GenAI-konvensjoner) | ja | **ja** (opt-in: `PORTFOLIO_OTEL` på truthiness, av når uset, `tracing.py:63/:153`) | `tracing.py:160–162` `configure = configure_otel_providers` → `:196` `configure(enable_console_exporters=False, exporters=exporters)`. Tre kallsteder: `run.py:2727`, `simulation.py:1061`, `hosting.py:375` | Ingen. 4 → 4 |
|
||||
| U15 | Evaluering — `LocalEvaluator`, `evaluate_workflow()`, Foundry Adaptive Evals | nei | **nei** | `LocalEvaluator` 0 (venv 2), `evaluate_workflow` 0 (venv 3), `evaluate_agent` 0 (venv 3) | Ingen. Avvisningens vilkår («MAF-flaten NEI inntil `EVALS` forlater `ExperimentalFeature`», plan 23.08 § D.3) er **ikke** oppfylt: 20 markører i 1.16.0 |
|
||||
| U16 | Kontekst-kompaktering — `CompactionProvider` (SlidingWindow/Truncation/summarization) | nei | **nei** | `CompactionProvider` 0 (venv 4), `compaction_strategy` 0 (venv 10), `apply_compaction` 0 (venv 3), `SlidingWindowStrategy` 0 (venv 2) | Ingen. `_compaction.py` har 0 `@experimental` installert. Vilkårene fra 29.08 § 4 er **ikke** inntruffet (§ 5) |
|
||||
| U17 | Agent-som-verktøy — `AsAIFunction()` (C#) / `as_tool()` (Py) — IKKE `AIFunctionFactory.Create()` | nei | **nei** | `as_tool(` 0, `.as_tool` 0 (venv 1) | Ingen. **LUKKET** 29.08 § 4 (l. 141–147), ingen gjeld |
|
||||
| U18 | Modell-backend + per-agent modellvalg — `FoundryChatClient(project_endpoint, model, credential)`; Responses Agent vs Foundry Agent | ja | **ja** (default på den hostede flaten, `hosting.py:79` `_HOSTED_DEFAULT_PROFILE = "azure"`; opt-in på CLI-en, `--profile` default `"local"`, `run.py:2441`) | `backends.py:150` `return FoundryChatClient(project_endpoint=endpoint, model=model, credential=credential)` i `AzureFoundryBackend` (`:125`) | Ingen. 1 → 1. Distinksjonen default/opt-in er ny i denne tabellen, ikke i koden |
|
||||
| U19 | Harness-mønstre (bakgrunn/loop) — Agent Harness: `ShellExecutor`, `FileMemoryStore`, `ToolApprovalAgent` (Py 1.7.0) | nei | **nei** | Python-navnene: `create_harness_agent` 0 (venv 4), `ToolApprovalMiddleware` 0 (venv 5), `AgentLoopMiddleware` 0 (venv 5). `FileMemoryStore`/`ToolApprovalAgent` finnes ikke i Python (venv 0, jf. reviewen § 3.1) | Ingen. **LUKKET** 29.08 § 4 (l. 149–160), ingen gjeld. Revisit-vilkåret «mister `@experimental`» er ikke oppfylt: 16 markører |
|
||||
|
||||
## § 4 Ny telling og diff mot 29.08
|
||||
|
||||
**Ny telling, 11.09 på `ce22b0e`: 6 ja (U3, U4, U6, U12, U14, U18) · 5 delvis (U7, U8, U9, U11, U13) ·
|
||||
8 nei (U1, U2, U5, U10, U15, U16, U17, U19) — av 19.** Nevner: 19 rader
|
||||
(`grep -c '^| U[0-9]'`), 37 moduler / 17 747 linjer.
|
||||
|
||||
**Av de 6 «ja», etter hvor de gjelder:**
|
||||
|
||||
| Rad | Normativ default-sti | Bak hva | Default |
|
||||
|---|---|---|---|
|
||||
| U3 | ✅ hver kjøring | — | på |
|
||||
| U18 | ✅ på hostet flate, ❌ på CLI | `--profile azure` (CLI) | CLI: `local`; hosting: `azure` |
|
||||
| U4 | ❌ | `--explore` | `None` |
|
||||
| U6 | ❌ | `--mcp-config` | `None` |
|
||||
| U12 | ❌ | `--checkpoint-dir` | `None` |
|
||||
| U14 | ❌ | `PORTFOLIO_OTEL` | uset = av |
|
||||
|
||||
**Diff mot 29.08, rad for rad:** 0 av 19 har flyttet status. For hver rad er den bærende
|
||||
konstruktens forekomster målt på `3bdc5c1` (29.08-dokets commit) og i dag, og
|
||||
`git log -S'<konstrukt>' --since='2026-08-29 00:00' -- src` er kjørt. Kolonnen «Endring» i § 3 bærer
|
||||
tallet. De eneste konstruktene med commits i vinduet:
|
||||
|
||||
| Konstrukt | Forekomster 29.08 → nå | Commits (`git log -S`) | Rad | Flytter status? |
|
||||
|---|---|---|---|---|
|
||||
| `@tool` | 5 → 7 | `baa6f45`, `ccd65d3` | U7 | nei — navigasjon/adjudikasjon, ikke validator |
|
||||
| `navigator_tools` | 2 → 6 | `76b939b`, `da5f10f` | U7 | nei — samme grunn |
|
||||
| `FunctionMiddleware` | 2 → 4 | `4aa4f9c` | U8 | nei — observerer, blokkerer ikke |
|
||||
| `ExplorationToolRecorder` / `debate_middleware` | 0 → 6 / — | `4aa4f9c`, `da5f10f` | U8 | nei |
|
||||
| `pending_request_info_events` | — | `ef2f1cb` | U12 | nei — vakt re-forankret |
|
||||
| alle andre 20 konstrukter i skriptet | uendret | ingen | — | — |
|
||||
|
||||
**Symmetrisk sjekk:** ingen konstrukt har FÆRRE forekomster i dag enn på `3bdc5c1`. Ingen rad har
|
||||
flyttet nedover.
|
||||
|
||||
**Én rad flyttet PREMISS uten at po endret kode:** U5. Pinne-løftet `ef2f1cb` (02.09) fjernet
|
||||
`@experimental(SKILLS)` fra `SkillsProvider`, men statusen er fortsatt nei fordi po ikke kaller den.
|
||||
|
||||
## § 5 Hva som mangler, per rad som ikke er «ja»
|
||||
|
||||
**Estimatskalaen, forankret i målte commits** (`git show --stat`). **Estimatene under er VURDERINGER,
|
||||
ikke målinger:**
|
||||
|
||||
* **liten** ≈ `4aa4f9c` (MAJOR-1 a): 1 src-fil, +82/−4 src-linjer (2 filer / +218 −4 totalt), under én økt.
|
||||
* **middels** ≈ `c08ae91` (flyttet U12 nei→ja): 4 src-filer, +987/−91 src-linjer (7 filer / +1 754 −91
|
||||
totalt), én økt.
|
||||
* **stor** = mer enn én økt, ELLER rører proposer-kallstien (`generate.py:630`) eller den obligatoriske
|
||||
validator-invarianten. Referanse: 29.08 § 5 anslo F3 + F16 TIER 2 til 2,5–4 økter, og det tallet er
|
||||
selv en vurdering.
|
||||
|
||||
| ID | I DAG | Hva som mangler (én setning) | Estimat (vurdering) |
|
||||
|---|---|---|---|
|
||||
| U1 | nei | Fan-out via `ConcurrentBuilder` med samme admission-reservasjon som bølgemodellen bærer (S3.4). Et begrunnet avvik, plan 23.08 § D.2 | middels |
|
||||
| U2 | nei | En per-prosjekt `WorkflowBuilder`-graf. P10 «eksplisitt NULL», plan 23.08 § D.2 («Magentic ER graf-laget») | stor |
|
||||
| U5 | nei | `SkillsProvider` wiret på agentene, så SKILL.md-prosaen når en agent via MAF og ikke via egen loader | middels (wiringen i seg selv er liten; bevis på budsjett og hva hver rolle får se er det som koster) |
|
||||
| U7 | delvis | Validatoren eksponert som Function Tool på den normative stien, ved siden av den blokkerende gaten og ikke i stedet for den | middels |
|
||||
| U8 | delvis | En middleware som BLOKKERER (`MiddlewareTermination`). Forutsetter at proposeren går via `Agent` og ikke rå `get_response()` (F3/F16, 29.08 § 3) | stor |
|
||||
| U9 | delvis | Injeksjonen båret av `context_providers=` på en `Agent` i stedet for string-konkatenering. Samme forutsetnings-refaktor som U8 (29.08 § 1) | stor (delt med U8, ikke additivt) |
|
||||
| U10 | nei | En MAF-vektorintegrasjon (egen pakke) i stedet for numpy brute-force. D-C/D7 er et bevisst valg | middels |
|
||||
| U11 | delvis | En MAF-`ContextProvider` som injiserer siterte utdrag. «Navigate, never stuff» (plan 23.08 § D.2) avviser query-time retrieval | middels |
|
||||
| U13 | delvis | `approval_mode` på et verktøy og en ikke-bibliotek-dør til Layer-1 `with_request_info`. Hosting nekter fortsatt review med vilje | middels |
|
||||
| U15 | nei | `LocalEvaluator`/`evaluate_workflow` tatt i bruk. Blokkert av avvisningens eget vilkår: 20 `@experimental` | middels (når vilkåret faller) |
|
||||
| U16 | nei | `compaction_strategy=` på utforskningsagentene, uten at kompaktering kan kutte en frø-tilnærming (§ C.6 dør 1) | uestimert per 29.08 § 4. Vurdering: middels, forutsatt egen scoping-økt |
|
||||
| U17 | nei | — | **ingen gjeld.** LUKKET 29.08 § 4 l. 141–147: kryss-prosjekt er non-goal 2 |
|
||||
| U19 | nei | — | **ingen gjeld.** LUKKET 29.08 § 4 l. 149–160: harness er fortsatt eksperimentell (16 markører) |
|
||||
|
||||
**U16-vilkårene (29.08 § 4 l. 176–177), sjekket: IKKE inntruffet, nei på begge.**
|
||||
|
||||
1. «en `--explore`-kjøring mot en levende modell treffer et kontekstvindu-avslag»: **0 observert.**
|
||||
Den ene levende utforsknings-400-en er `ChatClientException: Error code: 400 — No tool call found for
|
||||
function call output` (`docs/2026-09-07-prepass-mater-q5b-k2.md` l. 215), et tool-call-parings-avslag
|
||||
og ikke et vindus-avslag. `grep -rliE 'context_length_exceeded|maximum context length' docs scratchpad`
|
||||
gir **0 filer**. Mønsteret er validert mot `kontekstvindu`, som gir treff i `docs/`. De to
|
||||
03.09-treffene (`2026-09-03-syretest-s7a-k2.md` l. 92, `…-s7a2-k2.md` l. 126) er REGNET
|
||||
(«mer enn noe kontekstvindu») for den gamle `read_bundle`-formen, ikke observerte avslag.
|
||||
2. «operatøren ønsker å bygge lange (>10 runder) utforskningsløp»: **ingen bestilling.** Alle **4/4**
|
||||
levende utforsknings-konfiger har `"max_rounds": 3` (`scratchpad/q5b/live/*.json`).
|
||||
|
||||
**Rader som bare kan bekreftes LEVENDE:** statusene over er grep-målinger og krever ingen betalt
|
||||
kjøring. Det eneste som bare kan observeres levende er U16-vilkår 1. Det krever en betalt
|
||||
`--explore` som faktisk sprenger vinduet. **Krever betalt kjøring, ikke målt.** Referansen er Q5=B,
|
||||
tre levende utforskningsarmer til **NOK 2,78** (0,17 / 1,46 / 1,15), det dyreste kallet 80 713
|
||||
input-tokens (samme dok l. 233–240). Et forsøk på å sprenge vinduet må ligge over det, så anslaget
|
||||
er **≥ NOK 1,5 og ~10–30 min per arm, uten garanti for at avslaget oppstår.** Anslaget er selv en
|
||||
vurdering. Ikke kjørt: NOK 0 er bindende.
|
||||
|
||||
## § 6 Hva okf 0.8.3 muliggjør — smalt, med nevner
|
||||
|
||||
**5 U-rader prøvd (U5, U11, U16, U7, U13), 0 flyttet.** Alt målt med PATH-0.8.3, som er
|
||||
kilde-identisk med eksport-0.8.3 (§ 2). SKILL.md-proben leser eksport-0.8.3-katalogen `skills/`.
|
||||
|
||||
| Rad | Hva ble prøvd | Tall | Flytter raden? | Hvorfor |
|
||||
|---|---|---|---|---|
|
||||
| U5 | Laster MAFs EGEN `FileSkillsSource` (1.16.0) SKILL.md-katalogene? Probe: `scratchpad/p12/skills_probe.py`, `uv run --project <po> python`, med `search_depth=1` | **po `shared/skills`: 2/2** (`expert-reviewer`, `falsification-reviewer`). **okf eksport-0.8.3 `skills/`: 2/3** (`okf-consume-template`, `okf-prosjekt`). `okf-consume` ble **avvist** med MAFs egen melding: «frontmatter name 'b-golden-segmented-okf-v0-2-consume' that does not match the directory name 'okf-consume'; skipping». Kjent-negativ (katalog uten SKILL.md): 0. Alle fem beskrivelser er innenfor `MAX_DESCRIPTION_LENGTH` = 1 024 (335–490 tegn) | **nei** | Formatene er forenlige. Det ene avslaget er en navneregel: `okf skill` navngir skillen `<bundle>-consume`, og `--out` lar kalleren velge katalognavnet. Men po kaller ingen `SkillsProvider` (0 i `src`), så forenligheten gjør U5 billigere å bygge, ikke bygget |
|
||||
| U11 | Flytter 0.8.3s STS-`sources[0].title`, `description` fra første spec-punkt og `okf build --frontmatter KEY=VALUE` noe for `provenance.py`? | `provenance.py` leser **0** av nøklene `sources`/`description`/`bundle_id`/`title`. po leser `"sources"` (okf.py 1, prepass.py 1), `"title"` (okf.py 2), `"bundle_id"` (`okf.py:926`) og `description` **0**. `--help`: `--frontmatter` «REPLACES only sources and description» | **nei** | Metadataen når po via pre-passets utdragsfelt (P3), men U11 spør etter en MAF-provider for sitatbærende injeksjon. Ingen okf-flate kan få po til å kalle en |
|
||||
| U16 | Er `--source-quota` / prepass-kuttet en delvis erstatning for compaction? | `--source-quota N`: «cap how many DELIVERED places one source document may take» (konsum, FØR kjøringen). `CompactionStrategy`: «Protocol for in-place message compaction strategies» (`_compaction.py:61`), anvendt på den LØPENDE samtalen via `apply_compaction(messages, strategy=…)` (`:1475`) eller `Agent(compaction_strategy=…)` (`_agents.py:824`). P11s kvote-tall siteres og re-produseres ikke: `docs/2026-09-11-p11-okf-081.md` l. 109, l. 123, l. 134–136 | **nei** | Ortogonale: kvoten avgrenser hva som KOMMER INN i ett payload, compaction avgrenser hva som BLIR LIGGENDE i en samtale som vokser. Et payload-kutt kan ikke hindre at en utforskningsløkke vokser forbi vinduet, som er 29.08s U16-risiko |
|
||||
| U7 / U13 | Gir en ny okf-flate (`okf check` regel 16, `--frontmatter`, `consume`) en naturlig Function Tool- eller HITL-form? | po kaller okf-CLI-en **0** ganger (`grep -rnE 'import subprocess\|subprocess\.\|shutil\.which' src` = 3 treff, alle prosa). po importerer kun den pinnede biblioteks-API-en: 9 importlinjer i `ingest.py`/`ingest_mcp.py`, `pyproject.toml:58` `rev = "v0.3.2"` | **nei** | Den nye flaten er en CLI i 0.8.x. Å gjøre den til et verktøy krever enten en subprosess mot en PATH som `git archive HEAD` ikke bærer, eller et løft av okf-pinnen v0.3.2 → 0.8.x (HOLDT, utenfor scope) |
|
||||
|
||||
## § 7 A/B/C — formulert på nytt, ALDRI avgjort
|
||||
|
||||
**Det ferske tallgrunnlaget som premiss, felles for alle tre:** gjeldsoversikten er **6/5/8, uendret
|
||||
rad for rad**. Ingen MAF-primitiv har blitt tatt i bruk eller forsvunnet siden 29.08. okf 0.8.3
|
||||
flytter 0 av 5 prøvde rader. Tallene som A, B og C ble besluttet på (P6/P7/P8) er ikke rørt.
|
||||
|
||||
### (A) Prosa-skanningen
|
||||
|
||||
**Beslutningen, ordrett** (`docs/2026-09-09-p7-forankrede-identifikatorer.md` l. 189–191; ordren sa
|
||||
l. 188–190, men teksten står én linje lenger ned): «**Prosa-skanningen er valgt bort med tallene i § 3,
|
||||
ikke bygget.** Ufanget forblir: en ugrunnet identifikator som kun står i agent-/debatt-prosa og aldri
|
||||
blir en `affected_item`-kode — målt 2 av 4 (P6), 2 av 4 (S7c), 1 av 2 (P4).»
|
||||
|
||||
**Ferskt premiss:** debatten har nå en middleware-liste på den normative stien (`run.py:1262`, U8,
|
||||
`da5f10f`). Hvis A noen gang bygges, finnes altså søm-stedet uten F3-refaktoren. Tallene som avgjorde
|
||||
A (2/4, 2/4, 1/2) er uendret.
|
||||
|
||||
| Alternativ | Koster | Låser | Gjør umulig |
|
||||
|---|---|---|---|
|
||||
| (a1) **urørt** | 0 | ingenting | å fange den ufangede klassen (2/4, 2/4, 1/2) |
|
||||
| (a2) bygg prosa-skanning som GATE | middels (vurdering) | et identifikator-MØNSTER over prosa, som P7 § 3 avviste fordi korpusene har heterogene former | «ingen skjønn»-regelen for prosa. Falske treff på tokens som aldri nådde en dom (P7: fire slike) |
|
||||
| (a3) prosa-TELLING som rapport (P8-formen: si, ikke nekt) | liten–middels (vurdering) | et mønster, men bare for under-telling | ingenting blokkerer. Klassen forblir ufanget, bare synlig |
|
||||
|
||||
**Påvirker tallene PM-anbefalingen «urørt»?** **Nei.** Gjeldsoversikten sier bare hvor A kunne bodd,
|
||||
ikke at den er verdt å bygge.
|
||||
|
||||
### (B) Blindsone-VALGET
|
||||
|
||||
**Beslutningen, ordrett** (`docs/2026-09-09-p6-betalt-k2-etter-kollaps.md` l. 210–211): «Blindsonen har
|
||||
flyttet seg videre: fra RANGERINGEN (S7c) til LESNINGEN (funn 5) til **VALGET** — hvilket dokument
|
||||
modellen bestemmer seg for å bygge på.» Og l. 202–204: modellen «bygde likevel forslaget sitt
|
||||
utelukkende på merkekravene i de generelle tekniske kravene — det ENE utdraget den navngir — og myntet
|
||||
kostkoder for det».
|
||||
|
||||
**Ferskt premiss:** ingen U-rad adresserer valget. U11 (sitatbærende injeksjon) er delvis med egen kode
|
||||
og med en MAF-type uten kallsted. U16 og okf-kvoten avgrenser volum, ikke valg (§ 6). P11 målte
|
||||
dessuten at 0.8.1 som levert ikke leverer prisskjemaet i noen arm, og P11 ble ikke re-målt her.
|
||||
|
||||
| Alternativ | Koster | Låser | Gjør umulig |
|
||||
|---|---|---|---|
|
||||
| (b1) **urørt** | 0 | ingenting. P8-rapporten informerer | å vite om valget endrer seg når prisskjemaet faktisk leveres |
|
||||
| (b2) bestill en BETALT måling av valget med prisskjemaet levert | ≈ NOK 0,2–1,5 per arm (Q5=B-referansen, vurdering) | ingenting i kode | — (den krever en okf-leveranse som inneholder prisskjemaet, og P11 viser at default ikke gjør det) |
|
||||
| (b3) styr valget i rendering/rangering (prioriter prisskjema-formede utdrag) | middels (vurdering) | et domene-skjønn i po, som funn 5 og `collapse_padding` er skrevet for å unngå | po som generisk rammeverk for dette domenet |
|
||||
|
||||
**Påvirker tallene PM-anbefalingen «urørt»?** **Nei.**
|
||||
|
||||
### (C) Fixtur-publiseringen
|
||||
|
||||
**Beslutningen, ordrett** (`docs/2026-09-09-p8-forankringstilbudet.md` l. 162–166): «De leverte KUTTENE
|
||||
(10 kB N100, 96 kB K2) er ikke sporet: å committe verbatim anbudstekst og standardtekst inn i et repo
|
||||
som publiseres på `open/` er en publiseringsbeslutning som tilhører operatøren, ikke denne ordren.»
|
||||
|
||||
**Ferskt premiss:** gjeldsoversikten berører ikke C. Den eneste relaterte målingen er at testene P7/P8
|
||||
bruker (`tests/fixtures/p7-grounding/`) fortsatt er det suiten gater på, og den er 1577/5 grønn.
|
||||
|
||||
| Alternativ | Koster | Låser | Gjør umulig |
|
||||
|---|---|---|---|
|
||||
| (c1) **nei** | 0 | ingenting | at 8-/435-distinkt-tallene gates. De står som målinger i P8 § 4 |
|
||||
| (c2) ja, spor kuttene i `open/`-repoet | liten (vurdering) | verbatim anbuds- og standardtekst i offentlig historikk. En push til `open/` kan ikke trekkes tilbake. Rettighetsspørsmålet er operatørens å vurdere, ikke målt her | å angre publiseringen |
|
||||
| (c3) gate mot kuttene der de ligger (`~/corpora/…`), skip når de mangler | liten (vurdering) | en gate som er stille fraværende i en fersk klon | at gaten beviser noe i `git archive HEAD`-pakka. Det er repoets «skip = stille fravær»-fellen |
|
||||
|
||||
**Påvirker tallene PM-anbefalingen «nei»?** **Nei.**
|
||||
|
||||
### (D) Nytt veivalg målingen avdekket: `SkillsProvider`-avvisningens premiss
|
||||
|
||||
**Beslutningen, ordrett** (`STATE.md`, låste beslutninger): «**MAF-evals + SkillsProvider AVVIST som
|
||||
flate.**» Begrunnelsen for U5 (`docs/plan/2026-08-23-magentic-utforskningssloeyfe.md`, § D.2-tabellen):
|
||||
«NEI — `ExperimentalFeature.SKILLS`; egen loader virker; commons eier innholdet».
|
||||
|
||||
**Ferskt premiss:** den første av tre grunner er død i installert 1.16.0 (§ 2). `FileSkillsSource`
|
||||
laster po sine to skills 2/2 (§ 6). Evals-halvdelen står uendret: 20 markører, og vilkåret i plan
|
||||
23.08 § D.3 er ikke oppfylt.
|
||||
|
||||
| Alternativ | Koster | Låser | Gjør umulig |
|
||||
|---|---|---|---|
|
||||
| (d1) **avvisningen står, med oppdatert begrunnelse** (egen loader + commons-eierskap) | 0 (én setning i STATE) | ingenting | at CLAUDE.md-konvensjonen «Metode kodifiseres som Agent Skill» nås av en agent via MAF |
|
||||
| (d2) re-åpne U5 som en egen, målt ordre | middels (vurdering, § 5) | ingenting før den er bestilt | — |
|
||||
|
||||
## § 8 Honesty limits
|
||||
|
||||
* **Ingen betalt kjøring, NOK 0.** Ingen rad er bekreftet LEVENDE. U16-vilkår 1 kan bare observeres
|
||||
levende og er IKKE målt (§ 5).
|
||||
* **Et grep-tall måler KALLSTEDER, ikke om kapabiliteten virker.** «ja (opt-in)» betyr at et kallsted
|
||||
finnes bak et flagg, ikke at flagget har vært kjørt mot en modell i dette vinduet.
|
||||
* **Estimatene i § 5 og § 7 er VURDERINGER**, forankret i to målte commits, men ikke målinger.
|
||||
* **En rad kan flytte seg av en pinne-bump og ikke av po sin egen kode.** U5s premiss gjorde nettopp det
|
||||
(`ef2f1cb`). `@experimental`-tallene er målt i INSTALLERT kode, ikke i Microsoft Learn-prosa.
|
||||
* **Nevneren er ETT repo i ÉN commit** (`ce22b0e`, 37 moduler / 17 747 linjer).
|
||||
* **U11-statusen hviler på et forbehold** som står i raden: MAF-typen konstrueres bare i en metode med 0
|
||||
kallere i `src`. Samme grunnlag som 25.08 og 29.08 ga «delvis», så statusen er holdt for å måle
|
||||
endring og ikke skifte linjal. Med en strengere lesning av metoden ville U11 vært «nei» (6/4/9).
|
||||
* **`FileSkillsSource`-proben beviser LASTING, ikke at en agent bruker skillen godt.** Ingen agent er
|
||||
konstruert med `SkillsProvider`.
|
||||
* **(A), (B) og (C) forblir operatørens og ble ikke flyttet av denne økta.** (D) er formulert, ikke avgjort.
|
||||
|
||||
## § 9 Verifiseringslogg (kjørt i denne økten, 2026-09-11)
|
||||
|
||||
| # | Påstand | Kommando → resultat |
|
||||
|---|---|---|
|
||||
| 1 | Innboks 2, kø 0 | `find ~/.claude/coord/portfolio-optimiser/inbox -type f \| wc -l` → 2 (rc 0); `…/orders -maxdepth 1 -type f` → 0 |
|
||||
| 2 | okf pushet | `git -C ~/repos/llm-ingestion-okf ls-remote origin main` → `0308169` (= lokal `main`); `ls-remote --tags origin \| grep -c 'v0\.8'` → 8 |
|
||||
| 3 | Innboks lukket | `coord-done.sh <begge>` → «2 message(s) archived» (rc 0); inbox → 0 |
|
||||
| 4 | po-remote | `git ls-remote origin main` → `ce22b0e…` = HEAD |
|
||||
| 5 | Kontroll | `uv run pytest -q -p no:cacheprovider` → 1577 passed, 5 skipped, 294,85 s; ruff/format/mypy rene; golden `ea8c534…` |
|
||||
| 6 | Nevner | `ls src/portfolio_optimiser/*.py \| wc -l` → 37; `wc -l … \| tail -1` → 17 747; på `3bdc5c1`: 34 / 12 873 |
|
||||
| 7 | Konstrukt-tabellen | `bash scratchpad/p12/u_grep.sh` (61 konstrukter, src + venv-kjent-positiv) |
|
||||
| 8 | Kallsteder | `grep -rn --include="*.py" -F <konstrukt> src` per treff, deretter `sed -n` på kallstedet |
|
||||
| 9 | Diff per konstrukt | `git log -S'<c>' --since='2026-08-29 00:00' -- src` + `git grep -F -c <c> 3bdc5c1 -- src` mot nå |
|
||||
| 10 | `@experimental` | `grep -c`/`grep -n -A2 '@experimental'` på `_skills.py`, `_evaluation.py`, `_compaction.py`, `_middleware.py`, `_harness/*`, `_magentic.py` |
|
||||
| 11 | U5-probe | `PYTHONDONTWRITEBYTECODE=1 uv run --project <po> python scratchpad/p12/skills_probe.py` → 2/2, 2/3 (+ 1 avslag ved navn), kjent-negativ 0 |
|
||||
| 12 | okf-ekvivalens | `git archive v0.8.3 \| tar -x`; `diff -rq` → kun `_data` |
|
||||
| 13 | okf-regler | `contract_check.RULES` → 16 (PATH og eksport) |
|
||||
| 14 | U16-vilkår | `grep -rliE 'context_length_exceeded\|maximum context length' docs scratchpad` → 0 filer (mønster-kontroll `kontekstvindu` → treff); `grep '"max_rounds"' scratchpad/q5b/live/*.json` → 3 i 4/4 |
|
||||
| 15 | Skala | `git show --stat c08ae91` / `4aa4f9c` (-- src og totalt) |
|
||||
| 16 | `src` urørt | `git diff --stat ce22b0e -- src` → tom |
|
||||
|
||||
## § 10 Avvik fra ordren, uttalt
|
||||
|
||||
* **Linje-sitatet for (A)** står på l. 189–191, ikke l. 188–190. Teksten er ordrett den ordren siterte.
|
||||
* **okf-eksporten** ble bygget som ordren sa, men målingene i § 6 er kjørt med **PATH-0.8.3**, fordi PATH
|
||||
nå ER 0.8.3 og er bevist kilde-identisk med taggen (§ 2). Ingen scratch-venv ble bygget. Det ville
|
||||
resolvert fritt og vært den svakere av de to målemåtene.
|
||||
* **Innboks-grunnen** («premisset upushet holder ikke, 8 tagg-linjer på remote») står i sluttrapporten og
|
||||
her. `coord-done.sh` har ingen grunn-parameter (`--help` lest først).
|
||||
* **Et fjerde veivalg (D)** er lagt til under § 7. Ordren ba om «ethvert ekte veivalg målingen avdekket».
|
||||
Loading…
Add table
Add a link
Reference in a new issue