The convergence session's second half (with field commit-submit landed in
33f346ed): the three remaining contracts failures are gone and the full
catalogue-guards suite is green for the first time.
float-panel (A-3.7 + the runtime-discipline tail):
- Keyboard move/resize modes now sound through the SAME handle events as the
pointer gesture (the knob doctrine): entering the mode fires drag-start /
resize-start (the pickup cue), committing or cancelling fires drag-end /
resize-end (the release cue lands even on revert, like dragging back to
origin). The kb path had rich AT announcements but zero perceptual events.
- Every direct style write migrated to ActiveDom's per-element
`writeProperty` / `removeProperty` — a SYNC setProperty delegate, so the
deliberately same-task hot path (drag glued to the cursor, no re-render)
keeps its exact timing. The layout effect's empty-string resets became
removeProperty; comments updated where they cited `el.style.*` directly.
- The kb-readout debounce timer moved from `win.setTimeout` to the injected
`uix.timers.schedule` (announce house pattern: keyed + replace + meta).
component-audit A-3.7 refined to count DISTINCT mutating actions (Set) — the
rule's own stated semantics ("Enter and Space both map to the same action"):
float-panel's kb-move rides 13 keys but is ONE gesture; occurrence-counting
flagged complete wiring as under-declared. A-3.7 failures catalog-wide: 0.
media-player: the raw listeners in media-provider.ts are the pluggable
playback-engine PORT's deliberate design (header doctrine: Svelte-agnostic,
"no runes, no $adom" — third-party hls.js/embed engines implement the same
contract). The listeners guard gains the documented port exemption (the same
valve the timers guard already had for announce's global fallback).
Verified live in the float-panel demo (pointer + keyboard): drag follows the
cursor pixel-perfect through the new write path (24,24 -> +60,+40 -> 84,64),
release commits, drag-start stamps on both pointer and keyboard grabs, arrow
nudges snap to the device-pixel grid, Enter commits.
Gates: contracts 37/37 (first full green) · float-panel suite 8/8 · machine
120 PASS / 14 NEEDS-WORK / 0 BROKEN · vocab exit 0 · type baseline 57.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>