docs(invarianter): the toolbox's four first doors, and the binding that measures an execution [skip-docs]
One row for the whole delivery: why `portfolio-optimiser-toolbox` is the third console script (it is the one thing the other two cannot be used for), what each subcommand is bound to, why every handler is a thin adapter and every dispatch an explicit branch, and how the probes assert on what the door wrote rather than on the function it calls. Plus the third repair of B-gate's binding with its measurements: the judge's seven forms at 0 of 1, the naming rule turned into a discriminator, named-prose reasons, row 3 at 15 of 15 over 514 files, and the runbook heading that is no longer a section. The row states its own limit (the gate reads that the probe drives the door; it does not re-run the probe with the door broken) and records that N7 stays open in the gate and closed in the suite. The mutation run is in the row because two of its findings could not have come from reading: the dead-code pruning survived two mutants until the arms that reach it were written, and three mutants are named as non-measurements (two renamed a label, one was equivalent). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
f430b790a3
commit
7dcce64f6a
1 changed files with 61 additions and 0 deletions
|
|
@ -3430,3 +3430,64 @@
|
||||||
unionen telles over, og nettopp derfor er sju et GULV. Armen teller utboksene og krever at raden
|
unionen telles over, og nettopp derfor er sju et GULV. Armen teller utboksene og krever at raden
|
||||||
sier det tellingen sier; den hopper over uten `scratchpad/` (som i et rent uttrekk) og FELLER på
|
sier det tellingen sier; den hopper over uten `scratchpad/` (som i et rent uttrekk) og FELLER på
|
||||||
en tom telling, fordi en spørring som ikke kan finne noe ikke er en måling.
|
en tom telling, fordi en spørring som ikke kan finne noe ikke er en måling.
|
||||||
|
|
||||||
|
- **Verktøykassens fire første dører, og bindingen som måler UTFØRELSE (20.09, ordre
|
||||||
|
`20260920T052739Z-9456915952`, operatørdirektiv «godt nok, bygg»):** `portfolio-optimiser-toolbox`
|
||||||
|
er den TREDJE konsoll-kommandoen, og den er der fordi den er det ENE de to andre ikke kan brukes
|
||||||
|
til: hver vei gjennom `run` bygger en chatklient, og stegene debatten er bygget PÅ trenger ingen
|
||||||
|
modell. Fire underkommandoer, ett kjernekall hver — `navigate-bundle` → `okf.navigate_bundle`,
|
||||||
|
`cost-baseline` → `okf.derive_cost_baseline`, `retrieve-chunks` → `datasource.retrieve_chunks`,
|
||||||
|
`prepass-admit` → `prepass.admit_payload` — med JSON på stdout og en exit-kode som sier
|
||||||
|
sannheten (0 kjørte, 2 feil kall, 3 steget NEKTET, med grunnen navngitt). **Hver håndterer er en
|
||||||
|
tynn adapter med vilje:** en håndterer som REGNET noe selv ville vært en andre implementasjon av
|
||||||
|
et kjørestegs-steg, og da slutter den eksterne kalleren å få det debatten får — hele påstanden
|
||||||
|
bak døren. **Dispatch er én gren per kommando, aldri `set_defaults(handler=…)`:** tabellen
|
||||||
|
skjuler det ene en leser vil se, og rad 1 spør kilden om nøyaktig det samme (den går kallgrafen
|
||||||
|
fra `main` ned til stegets symbol), der en callable i et Namespace er et hopp ingen av dem kan
|
||||||
|
følge. Rad 1: **0 → 5 av 17**, exit 1 uendret, ingen annen rad flyttet seg.
|
||||||
|
**Probene (`tests/test_toolbox_doors.py`, 10 armer) importerer ALDRI kjernefunksjonen:** hver
|
||||||
|
starter døren som subprosess med underkommandoen i argv og asserterer på det den SKREV. Fasiten
|
||||||
|
er utenfor døren i hver arm — filsystemet (`navigate-bundle`, inkludert den ene bevisste
|
||||||
|
lenken ut av basen), en tabell transkribert fra prisskjema-fixturen (`cost-baseline`), det
|
||||||
|
in-prosess API-et den må være byte-lik (`retrieve-chunks`), og produsentens egen innsjekkede
|
||||||
|
nyttelast (`prepass-admit`). Hver avvisningsarm har en rc-0-kontroll ved siden av seg.
|
||||||
|
**B-gatens binding, TREDJE reparasjon — og den første som ikke leser et NAVN:** dommeren målte
|
||||||
|
rad 1 til 17 av 17 med 17 énlinjes-prober og en dørmodul uten én eneste import. Det som måles nå
|
||||||
|
er et UTFØRELSESSTED (en prosess-starter med dørens navn i argumentene, eller inngangen importert
|
||||||
|
fra dørens modul OG kalt) og en assert som er DATAAVHENGIG av det kallet. Død kode beskjæres
|
||||||
|
først. De ærlige formene suiten alt bruker teller videre: kommandoen bygget i en variabel først,
|
||||||
|
og subprosessen startet i en hjelper som returnerer den. **Dommerens sju former (a1, a2, b1, b2,
|
||||||
|
c1, c2 + oppskriften) gir alle 0 av 1**, hver med rc-0-kontroll i samme oppsett.
|
||||||
|
**Navngivningen av steget er en DISKRIMINATOR, rettet som klasse:** den kreves bare når mer enn
|
||||||
|
ett steg står bak samme dør. Å kjøre en dør med ett steg bak seg ER å kjøre det steget — og det
|
||||||
|
var derfor `gate` (en ekte ende-til-ende dørprobe mot v1-gaten) ble avvist på en
|
||||||
|
navneteknikalitet. For en underkommando må kommandonavnet stå i det som FAKTISK ble kjørt, og
|
||||||
|
CLI-en selv må være registrert eller `-m`-kjørbar: en `add_parser` i en modul ingen kan starte er
|
||||||
|
ingen dør. **`held_out`-grunnen må være navngitt prosa** («-», «todo», «x», «.» ble alle godtatt
|
||||||
|
av `.strip()`), målt mot kontraktens egne 28 grunner (korteste: 30 tegn, tre ord).
|
||||||
|
**Rad 3 lukker de fem veiene sjekkpunktet målte som åpne OG billige å lukke** — `importlib` for
|
||||||
|
begge SDK-navn, `deno run … npm:` / `npm exec` / `yarn dlx`, og den offisielle TypeScript-SDK-en:
|
||||||
|
**12 av 12 → 15 av 15**, fortsatt 0 treff over **514** publiserte filer (nevneren vokste med de to
|
||||||
|
filene DENNE leveransen la på flaten — pinnen fanget det). Grenseerklæringen slutter å regne opp
|
||||||
|
hva som står igjen («NØYAKTIG TO», så «TRE» — begge falsifisert av den første nye målingen) og
|
||||||
|
sier hva vakten ER: tekstmønstre over git-manifestet, som feller et navn som STÅR SKREVET og
|
||||||
|
ikke ser et navn som blir til når koden kjører.
|
||||||
|
**Rad 6: en overskrift er ikke en seksjon.** De fem kontrakt-navngitte overskriftene pluss «x»
|
||||||
|
(125 tegn) ga `2 av 2 GRØNN`; seksjonsnavnet bindes nå til en OVERSKRIFTSLINJE og det som teller
|
||||||
|
er kroppen under den (`section_bodies`, `RUNBOOK_MIN_BODY = 80`). Gulvet er mot den tomme
|
||||||
|
overskriften, aldri et mål på om kjøreboka er SANN — det blir stående som operatørens, og raden
|
||||||
|
er fortsatt `IKKE MÅLT`.
|
||||||
|
**Grensen raden uttaler selv:** gaten leser at proben KJØRER døren og leser resultatet; den
|
||||||
|
kjører ikke proben på nytt med døren brutt. Den eneste formen som ikke kan skrives seg forbi er
|
||||||
|
å MUTERE inngangen til å reise og se proben bli rød, og det gjør gaten ikke. **N7 står åpen i
|
||||||
|
GATEN og er lukket i SUITEN:** et slettet off-path-steg krymper fortsatt nevneren stille der,
|
||||||
|
så de fire står utskrevet i en arm som blir rød når én av dem forsvinner.
|
||||||
|
**Load-bearing:** `tests/test_b_gate.py`, `tests/test_toolbox_doors.py`,
|
||||||
|
`tests/test_console_entry_points.py`. **17 av 17 mutanter felt** i klone (kontroll 133 av 133,
|
||||||
|
isolasjon verifisert på `b_gate.__file__` OG `toolbox.__file__` før første tall), 0 andre
|
||||||
|
unntakstyper enn assertions. **To funn kom AV mutantkjøringen, ikke av lesing:** beskjæringen av
|
||||||
|
død kode OVERLEVDE to mutanter fordi ingen arm nådde den — formen som trengs er en probe som er
|
||||||
|
GRØNN i pytest (en ekte prosess som ikke er døren binder navnet asserten leser, dørkallet i død
|
||||||
|
kode under samme navn), og begge formene er armer nå. **Tre mutanter var ikke målinger og sies
|
||||||
|
det om:** to omdøpte bare en etikett/id uten å fjerne en vakt, og én rundet `score` til to
|
||||||
|
desimaler — EKVIVALENT, fordi scorene er 1.0/0.75/0.5.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue