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

1.7 KiB

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.