docs(claude): to invariantrader for BLOCKER-1 og MAJOR-1 (ORDRE 20260902T151931Z)
UTOVER ordrens bokstav: ordren ba om «egen commit per halvdel» og sa ingenting om hovedboka. Raden legges likevel til fordi repoets invariant-disiplin er at hver load-bearing beslutning baerer maalingen som tvang den og testen som gaar roed naar den oppheves — en beslutning uten rad raatner. To rader: plantekst-vs-repr (fire steder, fire mutasjoner EN PER LINJE, og hvorfor `current_progress` er BEVISST uroert), og generalproevens to halvdeler (ni mutasjoner, soesken-forholdet til `ToolCallRecorder`, og den tolvte vakuoes-gate-falsifiseringen). To ting er UTTALT som uvitnet/maalt etter en ekstra maaling, ikke paastaatt: (1) recorder-wiringen i `resume_exploration` er DEFENSIV — aa detache KUN den andre forekomsten lot hele suiten staa groenn (1087/5), saa ingen test holder den (`budget_stop`-presedensen); (2) aa skripte navigatoeren alene aapner INGENTING — med en konstant manager konkluderer kjoeringen etter en runde uten aa gi noen deltaker en tur, saa manageren maa selv faa et trinn-manus per stadium. Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
parent
2654219e8c
commit
67eb8939d3
1 changed files with 66 additions and 0 deletions
66
CLAUDE.md
66
CLAUDE.md
|
|
@ -1113,6 +1113,72 @@ Python ≥3.10. MAF (`agent-framework-core` 1.9.0). Pakkehåndtering: `uv`. To b
|
|||
utfall. **Migreringsnote:** ingen ekstern kaller brekker — hosting utvider, CLI-ens gamle
|
||||
flaggform er uendret, og det som ENDRER seg er at en flaggløs kjøring nå SIER at ingen dømte i
|
||||
stedet for å påstå `decision=approved`.
|
||||
- **Planen et menneske signerer er TEKST, aldri en objekt-repr — og fraværet av repr er en EGEN,
|
||||
bredere assert (BLOCKER-1, økt 67):** fire steder gjorde `str(review.plan)` på en MAF `Message`
|
||||
som ikke har noen `__str__` (MÅLT: `type(Message).__str__ is object.__str__`), så BEGGE
|
||||
HITL-dørene viste og lagret `<agent_framework._types.Message object at 0x…>`: terminalen F4
|
||||
spør ved (`explore.py:1395`), de to opptakene i `plan_reviews` (`:1404` approve, `:1418` revise)
|
||||
og den PARKERTE spørsmålsfila U12 (`:1478`) — det ENESTE som krysser prosessgrensen. En ekspert
|
||||
som svarte `approve` signerte blindt. Fiksen er den eksisterende `_plan_text` (`:966`) på alle
|
||||
fire; ingen ny hjelper. **Fire asserts var grønne mot defekten fordi de var TRUTHINESS eller
|
||||
SELV-SAMMENLIGNING:** `reviews[1]["plan"] != ""`, `waiting[0].plan`, og
|
||||
`reviews[0]["plan"][:40] in out` — den siste sammenlignet den samme repr-en med seg selv, så de
|
||||
to flatene var enige mens begge var uleselige. Diskriminatoren er innhold som KUN kan komme av
|
||||
`Message.text`: MAF komponerer plan-meldingen rundt managerens svar ORDRETT (målt), så en
|
||||
sentinel i det skriptede svaret er til stede når teksten ble tatt og fraværende når repr-en ble
|
||||
det. Sentinelen bor i et `reason`-felt fordi ingenting leser dem — å nøkle den til en ANSWER
|
||||
ville endret kjøringen den måler. **`str(review.current_progress)` (`:1396`/`:1479`) er BEVISST
|
||||
urørt:** den er en `MagenticProgressLedger | None`, ikke en `Message`, og pydantic renderer den
|
||||
lesbart (målt) — men i disse kjøringene er den `None`, så terminalen skriver «progress so far:
|
||||
None». Annen defekt, annen ordre. Load-bearing MÅLT
|
||||
(`tests/test_plan_review_cli_door_loadbearing.py` + `tests/test_async_plan_review_loadbearing.py`),
|
||||
fire mutasjoner — **ÉN PER LINJE**, fordi ordrens ene samlede revert undertestet og `:1418` er
|
||||
revise-grenens egen kopi som ellers ikke hadde noe rødt vitne: `:1395` → 1 rød (stdout) ·
|
||||
`:1404` → 2 · `:1418` → 1 (T1 alene) · `:1478` → 1 (async T9). Golden byte-uendret.
|
||||
- **Generalprøven kan ÅPNE en base, og artefaktet sier hvilken (MAJOR-1, økt 67):** `--scripted-replies`
|
||||
tok ÉN konstant streng per rolle, så ingen skriptet rolle kunne emittere et `function_call` —
|
||||
MÅLT 0 verktøykall / 0 approaches / 1 runde på 4/4 baser, mens hvert annet felt i
|
||||
`{run_id}-exploration.json` så ut som en kjøring som hadde virket. Måleprotokollens gratis trinn
|
||||
(«bevis så mye som mulig før det dyre») kunne altså ikke bevise at navigatøren åpner noe, og
|
||||
etter en BETALT kjøring kunne ingen lese om den gjorde det. To halvdeler, hver gatet så den ANDRE
|
||||
ikke kan bære den. **(a) `ExplorationToolRecorder`** — en `FunctionMiddleware` på
|
||||
utforskningsagentene som registrerer NAVN + `bundle_id`-argumentet i KALL-REKKEFØLGE på den
|
||||
kaller-eide `ExplorationTrace`; `trace_payload` skriver det ved siden av `quick_validations`.
|
||||
**SØSKEN av `mcp_tools.ToolCallRecorder`, aldri en gjenbruk:** den filtrerer til KONFIGURERTE
|
||||
eksterne verktøy, dedupliserer per `(server, tool)` og returnerer SORTERT, fordi dens rad er en
|
||||
egress-påstand; denne beholder rekkefølge uten dedup, fordi et sortert dedupet sett ikke kan
|
||||
skille en generalprøve som LESTE en base fra en som bare listet dem. Å generalisere den ene til å
|
||||
tjene begge ville brutt den andre. RESULTATET registreres ALDRI — det er basens innhold, altså
|
||||
nettopp det MAJOR-3 målte til 73–93 % av alle prompt-tokens. Wiret i BEGGE workflow-byggene
|
||||
(`explore()` OG `resume_exploration()`) — men **resume-armen er DEFENSIV og UVITNET, og det er
|
||||
målt, ikke antatt** (`budget_stop`-presedensen): å detache KUN den andre forekomsten lot hele
|
||||
suiten stå grønn (1087/5), fordi ingen park/resume-scenario under det skriptede manuset når en
|
||||
verktøykropp. Den står fordi et gjenopptatt leg ellers ville registrert null verktøykall — samme
|
||||
stille gap som `plan_reviews.extend` i økt 64 — ikke fordi en test holder den.
|
||||
**(b) et trinn-MANUS** — en utforskningsrolle kan få en LISTE der et trinn er tekst eller ETT
|
||||
`{"call": "<tool>", "args": {…}}`. Formen utvider den ENE kanoniske `_inner_get_response`-kroppen
|
||||
(S2.5), aldri en andre klient: manuset ligger VED SIDEN AV selektoren (en selektor returnerer
|
||||
`str` ved kontrakt, og et verktøykall er ikke tekst), og et utløpt manus faller tilbake på
|
||||
selektoren — degradering til konstantformen, ikke til stillhet. Listeformen NEKTES for debattens
|
||||
roller ved navn, og hvert malformet trinn nektes ved navn (validering, ALDRI reparasjon).
|
||||
**Å skripte navigatøren er IKKE nok, og det er MÅLT:** med en KONSTANT manager konkluderer
|
||||
kjøringen etter én runde uten å ha gitt noen deltaker en tur, så `tool_calls` forblir tomt
|
||||
uansett hva navigatøren fikk. Manageren må selv få et trinn-manus — én tekst per stadium (fakta,
|
||||
plan, ledger, ledger, sluttsvar), samme grunn `simulation._exploration_manager_reply` nøkler på
|
||||
PROMPTEN og ikke prosjekt-ID-en: manageren får fem ULIKE spørsmål og én konstant svarer alle fem
|
||||
med første rundes ledger. Kontroll-testen med konstant navigatør (og manager i stadier) er dét
|
||||
som holder de to formene fra hverandre.
|
||||
Load-bearing MÅLT (`tests/test_scripted_explore_door_loadbearing.py`, 12 armer), **ni mutasjoner
|
||||
alle røde mot HELE suiten** + grønn kontroll 1087/5 og golden BYTE-UENDRET: detach recorderen
|
||||
fra begge byggene (1) · dropp `tool_calls` fra `trace_payload` (3) · sorter+dedupliser sinken (2)
|
||||
· registrer navnet uten basen (3) · nekt listeformen igjen (2) · aksepter lista men emitter tekst
|
||||
(1) · toler et malformet trinn (1) · la en debattrolle ta listeformen (1) · dropp
|
||||
ukjent-nøkkel-whitelisten (1). **ÉN MUTASJON FALSIFISERTE TESTEN FØRST (repoets
|
||||
vakuøs-gate-klasse, TOLVTE gang):** nekt-testen brukte `{"invoke": …}` og sto GRØNN med
|
||||
forms-sjekken detached — UKJENT-NØKKEL-grenen fanget den i stedet, så nekten under test hadde
|
||||
intet vitne. To grener, to armer, to mutasjoner. Ærlighets-grense, uttalt: at en LEVENDE modell
|
||||
kaller verktøyene er fortsatt ikke bevist (structured-output-grensens klasse) — dette gjør den
|
||||
GRATIS halvdelen av stigen ekte, ikke den betalte.
|
||||
- **STATE.md er local-only** (gitignored). Voyage session-state er efemert; STATE.md er kanonisk kontinuitet.
|
||||
- Prosess: Voyage-plugin (`/trekbrief → /trekplan → /trekexecute → /trekreview`) per større fase.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue