Hold the vault format version and close the design-sheet gaps
Two corrections to the touch keyboard work.
The metadata format version goes back to 0x01. Adding secretKind bumped it to
0x02, but pre-release the only deployment path is a full erase and re-flash, so
no device can be holding the previous layout: the bump bought nothing but a
migration matrix nobody can exercise, and it made the version byte look like it
carried information it does not. The field stays; the byte does not move.
Strict-equality parsing still earns its keep — a foreign or corrupt record fails
closed. This restores agreement with docs/security/vault-encryption.md, which
already documented 0x01 as the sole accepted version.
Then three gaps against the Phase 4 touch sheet, found by re-reading it beside
the implementation:
The PIN rail was drawing one kind of hollow bead. The sheet draws three states —
entered positions solid, the position ABOUT to be entered as a brand-color ring,
the rest dim — and the middle one is the only thing on the screen that says how
far through a fixed-length secret the user is without revealing anything.
Shift and backspace were borrowing ChevronUp and Back. Both already mean
something else in this library: a bare chevron is "more above", and the back
arrow is the navigate-up affordance. On a keyboard those sit a finger's width
from keys that must not share their glyph, so both get their own recipe — a
hollow up-arrow and a pentagon with an X, matching the sheet's key caps.
Also records why the sheet's 34 px title bar stays out and why 3 px key gutters
are not a violation: the header would leave the key rows at 39 px, under the
40 px touch floor, and ten 40 px columns with 8 px gutters need 472 px of a
320 px panel — the letter rows instead satisfy WCAG 2.5.8 through its 24 px
centre-spacing alternative at a 31.5 px pitch, with the gutters live in the hit
test.