Cuckoo: quarter-hour nod + hourly trust flourish on the time row (opt-in) - #14
Draft
peterlewis wants to merge 105 commits into
Draft
peterlewis wants to merge 105 commits into
peterlewis wants to merge 105 commits into
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A cuckoo for the Mk IV: short, scheduled display flourishes on the time row, after the Westminster
pattern — each quarter-hour gets a fixed small gesture (the nod: a shallow brightness trough
sweeping the six big digits left to right, ~550 ms, sub-seconds and colons untouched), and the hour
performs the configured piece.
Videos
Cuckoo (hour): https://www.youtube.com/watch?v=0jkTwYmk7kM
Cuckoo (quarter): Coming soon!
One config key, enable-and-select fused, off by default:
trust— how much the instrument actually knows right now: the time row dips to a dim x-ray,then a relight wave walks HH → MM → SS → ds → cs → ms, each digit relighting to the confidence the
tolerance ladder genuinely holds for it. Fully locked earns one unified pulse; in holdover the wave
dies at the honest position and the dashes return. The final frame of every flourish is the plain
live face — the clock never shows wrong digits.
How it renders. Pieces write per-digit intent levels (0..16, meaning perceived lightness);
the seg_balance dither mirror composes them into duty through a perceptual gamma
(
16·(L/16)^2.2) — light output is linear in lit cycles, the eye is not, and the curve is whatmade the choreography read on real LEDs. One interleave engine, two clients. With
cuckoo = offthe display path is byte-identical to stock. Every envelope is a terminating integer countdown;
MODE_STANDBY and text/countdown modes refuse and abort.
Preview. The on-device menu row (DISP → CUCKOO) performs each value as it is selected — the
menu's colon-preview idiom applied to the flourishes — and
cuckoo_preview = trust|nod|onover USBserial plays once without touching the config. The selection persists in the on-device settings
store (new key id in previously-zeroed record padding; old records round-trip, schema unchanged).
Scope honesty. Time-board-only, for two hardware reasons: the time row reads left-to-right in
both fold poses (only the date board rotates, and it senses its own orientation), and the date
row's UART carries text with no brightness — so whatever it shows (date, ADEV, star transit,
countdown, text) keeps reading truthfully through every flourish.
CUCKOO_SPEC.md(in this PR)records the full design: the cadence law, the stand-in rule, and four further pieces (carry,
heartbeat, pendulum, rain) specified but not shipped — three parked pending visual rework, rain
deferred to the date board; their names parse to off.
Verified: WASM conformance harness 23/23 (envelopes and termination on the plain face,
quarter/hour scheduling through real boundaries,
offbyte-identity, parked-name safety, previewsemantics); settings-store and factory-reset suites pass; ARM Release clean (174 756 B text);
running on a bench Mk IV. Draft note: the nod's depth (8/16 floor) and sweep rate (30 ms/digit)
are bench-tuned once and marked provisional in the spec.
Stack: based on
menu(#13) — followed byzone2(#15). Merging #5 → … → #13 → this PR→ #15 in order is a chain of fast-forwards whose result is byte-identical to the
rollupbranch (the tree this feature wasemulator-tested and hardware-validated on).
🤖 Generated with Claude Code