feat(p16): the stress judge -- and the order's own (a) was a gate that could only be green
Session 102's criterion ((a) built on the right fasit concept OR refused anchored, (b') names it,
(c) zero hallucinations) was adjudicated BY HAND. Measured 14.09: nothing in the tree read
contexts/<set>/fasit.json against an outbox at all, so "provable against the base" had no
repeatable form. portfolio_optimiser.stress reads ONLY artefacts that already exist -- the
per-approach proposal/outcome pair and {run_id}-debate.json -- so no run gains a field.
MEASURED BEFORE BUILDING: the order defines grounded as "OPENED or CITED", but on the S2c path
run_project stamps citations = bundle_citations(bundle), one per context file. On n100-2023 that
is 446 citations over 446 concepts, and 6 of 6 fasit paths are already "cited" before a single
model call. Honouring it literally would be the repo's own vacuous-gate class inside the gate
built to catch it, so a citation grounds an approach only under a NARROWED list (a declared
pre-pass cut); both halves are reported either way. (b') was checked for the same vacuity and is
clean -- snippets are bodies, ref/title live in frontmatter (0 of 446 n100 bodies carry
"Krav 4.1.2-1") -- so the order's definition stands.
A2: unanswerable questions had no runnable form (po is not a lookup tool), so they become a FOURTH
commissioned approach per set whose cost line the base carries no ground for, and fasit.json
carries must_refuse INSTEAD of unanswerable -- one form, never two copies of one fact. Rule U is
untouched and its known-positive is still red.
Load-bearing MEASURED (20 arms), eleven mutations all red on their own arm, green control 1663/5
(from 1643/5, superset, 0 removed), golden demo-transcript.stdout BYTE-UNCHANGED
(shasum -a 1 of the CONTENT = ea8c534773acdbe41ae68f2c55724d69aaf8be4f).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
f13dc64a0a
commit
f21007c858
13 changed files with 1008 additions and 87 deletions
21
README.md
21
README.md
|
|
@ -629,6 +629,27 @@ when the seam is detached, so the loop cannot silently degrade into theater.
|
|||
--derive-cost-baseline
|
||||
```
|
||||
|
||||
- **Judging a finished run against a fasit** — `python -m portfolio_optimiser.stress`. A run's
|
||||
outbox already carries the evidence (which documents the debate opened, which files the stamp
|
||||
cites, which approaches validated). This reads it against a context set's own `fasit.json` and
|
||||
answers three questions per commissioned approach, by machine: was it **grounded** in a document
|
||||
the fasit says a right answer must reach, does the proposal **name** that requirement, and did it
|
||||
**hallucinate** a file, a path or a cost code. A fourth, `must_refuse` approach is the
|
||||
falsification arm: a cost line the base carries no ground for, which must never come back
|
||||
validated. Every verdict carries its denominators, and an empty outbox — or a base that scans to
|
||||
no concepts — is refused rather than reported as clean.
|
||||
|
||||
One caveat is worth stating, because it decides what the verdict means: when the debate navigates
|
||||
the base, the provenance stamp cites *every* concept file, so "the fasit path is cited" is true
|
||||
before any model call. A citation therefore only counts as grounding under a declared pre-pass
|
||||
cut; otherwise grounding must come from a document the run actually opened. Both halves are
|
||||
reported either way.
|
||||
|
||||
```bash
|
||||
uv run python -m portfolio_optimiser.stress contexts/<set> \
|
||||
--outbox-dir <outbox> --run-id <run-id>
|
||||
```
|
||||
|
||||
- **Requiring the run to be anchored** — `--require-cost-baseline` (opt-in, requires
|
||||
`--bundle-dir`). Without a baseline the validator's stage 0 is skipped, and the run says so on
|
||||
stdout — but it still finishes and still stamps `validator_decision: validated` over cost lines
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue