feat(p20): the requirement that is RIGHT, and a clause number that is not a price
Three seams, one commit: A, B and C touch the same four modules (run.py carries
the debate task, the grounding composition and the announcement; okf.py carries
one reference-number vocabulary read by both A and B), so splitting them into
three commits would have meant hunk-level staging of entangled files. Stated
rather than silently restructured.
A — the declaration answers with the DOCUMENT's own words. Measured: 13
declarations over round 3 and P17b, not one naming a fasit concept, while the
tool answered {"declared": true, ...} by echoing the caller's own arguments. It
now returns the document's title and req_number, read off Bundle.context_files
(so the type: verdict layer can never be named back), plus the sentence saying
what the declaration binds. A path the base carries as no concept answers with
empty strings rather than refusing. The commission's success_criteria now reach
the DEBATE task through mandate.criteria_block, the one renderer, empty when
there are none — which is what keeps every un-commissioned prompt, and the
golden, byte-identical.
B — a clause number is not a price. THE ORDER'S OWN RULE WAS FELLED BY
MEASUREMENT: it asks to refuse a code that IS declared req_number/prosessnr,
and neither of its two known positives is. n500 declares seksjon 10.4.1..10.4.4
but never the bare 10.4; r761 declares 2727 prosessnr and 2753 seksjon, none of
them 1.10.4, which occurs once, as prose ("iht. vegnormal N200 kap. 1.10.4").
The COMPLEMENT fires on both and closes the hole _ground_against_input already
admits in writing -- "it fails OPEN on a coincidental match". Unanchored run +
requirement-shaped code + the base declares a vocabulary + the code is not in
it -> refused, naming the denominator. All five of kontrakt-sorasen's real
process codes ARE declared and pass, which is what keeps the one context set
built on real codes measurable. Replayed over all 24 codes of round 3 + P17b:
exactly the two known positives flip validated -> rejected, 22 unchanged.
C — a parse failure no longer burns the round ledger blind. _fetch_parsed takes
a BUILDER instead of a finished message list, so the retry carries the parse
reason; measured, kontrakt-sorasen-04 spent 11 of 12 rounds re-asking the same
question. And announced_subject names the routed bases instead of saying "the
portfolio" for a two-base commission.
Suite 1807/5 (from 1781, +26, 0 removed), golden demo-transcript.stdout
BYTE-UNCHANGED (shasum -a 1 of the CONTENT = ea8c534773acdbe41ae68f2c55724d69aaf8be4f),
ruff and mypy clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
64723c5d89
commit
c8f0c8f7c4
12 changed files with 1098 additions and 37 deletions
72
CLAUDE.md
72
CLAUDE.md
|
|
@ -2769,6 +2769,78 @@ Python ≥3.10. MAF (`agent-framework-core` 1.16.0, `-orchestrations` 1.1.1 —
|
|||
flaten er BEVISST urørt (feltet er i ingen av hostings tre sett); og `--proposal-review` trås
|
||||
gjennom til ÉN terminal delt av alle basene (motorens egen begrunnelse — dispatchen er
|
||||
sekvensiell).
|
||||
- **Et KRAVNUMMER er ikke en PRIS, og basens EGEN nummer-ordliste er dét som sier det — ordrens
|
||||
regel ble FELT av målingen før noe ble bygget på den (P20 DEL B, 15.09):** tre stressrunder og
|
||||
ett multi-base-pass bar `validated` forslag hvis kostkode var et kapittelnummer i en vegnormal.
|
||||
To overlever i utboksene og er kjent-positivene: **`10.4`** (tunnel-hauglia runde 3, n500) og
|
||||
**`1.10.4`** (lindaas P17b, r761). Begge er GRUNNET i P7s forstand og ingen er INERT i P18/B1s
|
||||
(`10.4` i 12 av 274 dokumenter, `1.10.4` i **1 av 2 756**); stadium 0 kjørte aldri, fordi ingen
|
||||
vegnormal-base bærer en kostbaseline. **Ordrens B1 sier: form 2/3 OG «står som
|
||||
`req_number`/`prosessnr` i toppnivå-frontmatter» → nekt.** MÅLT 15.09: n500 erklærer
|
||||
`seksjon: 10.4.1`…`10.4.4` og `req_number: Krav 10.4.3—2`, men **aldri den bare `10.4`** — den er
|
||||
et seksjons-PREFIKS; og r761 erklærer 2 727 `prosessnr` + 2 753 `seksjon`, hvorav **ingen** er
|
||||
`1.10.4`, som står ÉN gang, som prosa: «iht. vegnormal N200 Vegbygging kap. 1.10.4». **Den
|
||||
ordrede regelen fyrer altså på INGEN av sine egne kjent-positive.** KOMPLEMENTET fyrer på BEGGE,
|
||||
og lukker et hull `_ground_against_input`s egen docstring alt innrømmer skriftlig («it fails OPEN
|
||||
… on a coincidental match»): for ÉN form — et klausulnummer — gir basen oss ordlista som skiller
|
||||
en ekte referanse fra et sammentreff. Regelen er derfor: **UFORANKRET + kravformet kode + basen
|
||||
erklærer en ordliste + koden er IKKE i den → nekt, med nevner.** **Komplementet er også dét som
|
||||
SPARER det ene kontekstsettet bygget på ekte prosesskoder:** alle fem kodene i
|
||||
`contexts/kontrakt-sorasen-2027` (`12.1`, `12.12`, `22.1`, `52.11`, `51.1`) ER erklærte
|
||||
`prosessnr` og passerer — under den ordrede regelen ville hver av dem blitt nektet på en
|
||||
uforankret r761-kjøring, og settets positive armer blitt umålbare; dét er R761-risikoen ordren
|
||||
selv navngir, ankommet gjennom døra den ble pekt bort fra. **MÅLT over ALLE 24 koder i runde 3 +
|
||||
P17b (10 kjøringer):** nøyaktig to er kravformede, de er de to kjent-positive, og offline replay
|
||||
flipper nøyaktig de to (`validated → rejected`) mens 22 står uendret. **Generalitetsvernet er
|
||||
`_form_refusal`s mønster:** en input som erklærer INGEN referansenumre kan ikke besvares i en
|
||||
ordliste den ikke har, så regelen kan ikke fyre der — dét er hva som lar hver pre-P20-fixtur stå
|
||||
URØRT i stedet for UNNTATT. **`anchored` er et EKSPLISITT flagg, aldri `not anchored_codes`:** en
|
||||
baseline uten linjer og ingen baseline er ulike fakta (`cost_baseline_anchored`s grunn).
|
||||
**Ordlista reiser MED teksten** (`Grounding.declared_references`, DEFAULTET —
|
||||
`skipped_links`-halvdelen: en tom ordliste er et ærlig POSITIVT utsagn), komponert i SAMME vandring
|
||||
som dokumentene i `run.py` og propagert gjennom `_grounding_text`; to avledninger av én bases
|
||||
ordliste ville stått fritt til å være uenige (kø-(p)). **`okf.REFERENCE_NUMBER_FIELDS` er ÉN
|
||||
kilde**, derivert fra `_FILTER_FIELDS` pluss `seksjon` — og BEVISST ikke lagt til i
|
||||
`_FILTER_FIELDS` selv, fordi hva et `filter`-ord søker i er målt og gatet (P18) og en utvidelse
|
||||
ville endret `total_matches` for hvert navigatørkall. `code_forms` får en TREDJE verdi,
|
||||
`requirement`, for en kode basen FAKTISK erklærer (ordrens kjent-negative (c): alle
|
||||
`must_cite`-referanser klassifiseres slik) — rapport, aldri gaten, som fyrer på komplementet.
|
||||
Load-bearing MÅLT (`tests/test_requirement_number_gate_loadbearing.py`, 11 armer).
|
||||
- **Erklæringen svarer med DOKUMENTETS egne ord, og kommisjonens kriterier når leseren som kan
|
||||
handle på dem (P20 DEL A, 15.09):** P19 DEL A gjorde at en retning MÅ navngi kravet som binder
|
||||
den, og rungen virker — MÅLT ga runde 3 ni erklæringer over fem betalte kjøringer og P17b fire
|
||||
over ett pass, og **ikke én av de 13 navnga et fasit-konsept**. Det ingen ba om var at kravet
|
||||
skulle være det RIKTIGE. To halvdeler manglet: (1) verktøyet svarte `{"declared": true, …}` ved å
|
||||
ekko kallerens egne tre argumenter, så en modell som hadde erklært feil krav ble fortalt, med de
|
||||
eneste ordene den fikk, at den hadde lyktes; (2) `Mandate.success_criteria` nådde `announce` og
|
||||
INGENTING ellers (P19 F2) — skrevet ut for et menneske og holdt tilbake fra den ene leseren som
|
||||
kunne handle på det. Svaret bærer nå dokumentets EGNE `title`/`req_number`, lest av basen gjennom
|
||||
`okf.reference_number` (ÉN leser av «hvilket krav er dette», kø-(p)), pluss `binds`-setningen.
|
||||
**Lest av `Bundle.context_files`, aldri `files`:** en `type: verdict`-fil kan dermed ikke navngis
|
||||
tilbake ved tittel — det ene laget ingen listing nevner og `read_file` nekter blankt. **En sti
|
||||
basen ikke bærer som konsept (`index.md`) svarer med TOMME strenger, aldri en nekt:** lese-sporet
|
||||
har alt godkjent erklæringen, og å gjøre «jeg kan ikke gjengi tittelen din» om til en nekt ville
|
||||
felt en erklæring kjøringens eget bevis viser ble lest. `mandate.criteria_block` er ENESTE
|
||||
renderer og TOM uten kriterier — omisjon, aldri en tom overskrift (`announce`-regelen), og dét er
|
||||
hva som holder hver prompt i hver ukommisjonert kjøring byte-identisk, demoens inkludert.
|
||||
**A2s plassering er MÅLT:** på utforskningsstien finnes ingenting å bære — `main()` sender
|
||||
`explore()` ingen `success_criteria` i det hele tatt, så objektivet ER prompten og når oppgaven
|
||||
alt. Load-bearing MÅLT (`tests/test_right_requirement_loadbearing.py`, 8 armer).
|
||||
- **En parse-feil brenner ikke lenger rundeboka i stillhet, og annonseringen navngir hva den
|
||||
handler om (P20 DEL C, 15.09):** `_fetch_parsed` prøvde på nytt med den BYTE-IDENTISKE prompten.
|
||||
MÅLT (P19 F4): `kontrakt-sorasen-04` etterlot `{run_id}-parse-failures.json` med **elleve** rader,
|
||||
hver av dem samme feil (`claimed_saving_nok` ≤ 0) — elleve av kjøringens tolv runder, brukt på å
|
||||
spørre om igjen uten å si hva som var galt. Steg 5s `prior_rejection` bærer VALIDATOR-avvisninger,
|
||||
og et svar som aldri parset når aldri en validator, så ingen eksisterende blokk kunne bære det.
|
||||
`_fetch_parsed` tar nå en BYGGER i stedet for en ferdig meldingsliste — kallerens egen
|
||||
`_build_messages`-binding, så retry-løkka ikke kan komponere en prompt den ytre løkka ikke ville
|
||||
komponert (kø-(p)) — og grunnen er per RETRY, tom på forsøk 1, så attempt 1 er byte-identisk. Den
|
||||
verbatime fangsten (Fase 1b funn 1) står URØRT. **C2:** `--across-bundle` tar ingen
|
||||
`--project-id`, så annonseringen sa «Run mandate for the portfolio» om en kommisjon dispatchet
|
||||
over to navngitte baser (P17b F5); `announced_subject` navngir de rutede basene ved ERKLÆRT id, og
|
||||
en base som ikke lar seg løse faller tilbake til katalognavnet — `dimension_label`-presedensen
|
||||
ordrett: å annonsere skal ALDRI endre hvilken feil en operatør ser. Load-bearing MÅLT
|
||||
(`tests/test_parse_error_feedback_loadbearing.py`, 7 armer).
|
||||
- **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