open-standards/wai/changes/2026-11-10-settle-kernel-refuses-unsupported-grade.md
Transaction Science 069331a319
All checks were successful
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 7s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 30s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 5m17s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 6m7s
wai/changes: the settle kernel's source changes acknowledged for wai breaking
1712665df changed settle.c, settle.h and host_main.c, which sit in
oer-conformance/, so `wai breaking` reads each as a corpus file whose bytes
changed (the push's run failed on the three unacknowledged findings). They are
intended, and no vector changed: firmware_vectors.json is the same bytes. The
entry now says so, one **Breaking:** line each, with what a caller does.

Checked on the M3 Ultra build host: `wai breaking --against ad5d1c04c --all`
(main before 1712665df) and `--against 1d92a4533` (main before this re-land)
both report no unacknowledged breaking change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 02:30:19 -05:00

22 lines
1.7 KiB
Markdown

### The C settlement kernel signs no grade its meter cannot support
- **`oer-conformance/settle/`**: `settle_decide` refuses (returns -3, before any record or the
chain changes) a meter whose grade or weakest input's grade is not one of oer-receipts §2's
four, or which grades a figure `measured` by a method other than `hardware_meter`, the corpus's
term for a meter that reads an instrument. The kernel already wrote the grade its meter states;
it now cannot be handed a model's figure graded as a reading and sign it.
- The host harness checks three such refusals and that a `measured` figure from `hardware_meter`
is taken, after writing its file, and exits 4 if any check fails, so the CI step that rebuilds
`firmware_vectors.json` checks the rule on every unix leg. The corpus is unchanged, byte for
byte.
- **Breaking:** `record:corpus:wai/oer-conformance/settle/settle.c`: the kernel's source is in
the corpus's directory, and `settle_decide` now returns -3 for a meter it used to sign. No
vector changes: `firmware_vectors.json` is the same bytes, and every receipt a verifier reads
is as before. A caller that passed a meter graded `measured` by a method other than
`hardware_meter`, or a grade outside the four, grades its figure as what it is (`projected`,
`simulated` or `derived`), or names the meter that reads an instrument.
- **Breaking:** `record:corpus:wai/oer-conformance/settle/settle.h`: the header states the -3
return beside the meter's grade; no type or signature changes.
- **Breaking:** `record:corpus:wai/oer-conformance/settle/host_main.c`: the harness writes the
same file, then checks the refusals and exits 4 where the kernel signs a grade its meter
cannot support; a script that runs it reads exit 0 as before.