8 Commits

Author SHA1 Message Date
1ed8f720d6 Correct the PTP page: no PTP on a 4B, but the CM4 has it
Reader sent Geerling's CM4 PTP write-up, which shows two CM4s syncing to 10-15ns.
Our headline overclaimed ('impossible on a Pi 4') and our mechanism was wrong (we
blamed the bcmgenet MAC for not exposing a PHC).

The real story is better: the CM4 (BCM54210PE) and the 4B (BCM54213PE) report the
IDENTICAL PHY ID 0x600d84a2, so the kernel cannot tell them apart by asking the
chip. bcm-phy-ptp.c disambiguates by MDIO bus address instead — addr 0 = CM4,
proceed; addr 1 = 4B, return NULL. Ours is addr 1.

It is not a kernel config gap and not our RT patch: CONFIG_BCM_NET_PHYPTP=y and
CONFIG_NETWORK_PHY_TIMESTAMPING=y are both set. The driver loads, looks at the
board, and declines.

Correction is visible on the page rather than quietly patched. Credit to Geerling.
2026-07-14 14:50:27 -06:00
61d9c1d0b2 Light-theme logo variant — the wordmark was invisible
Starlight renders the logo as an <img>, so CSS can't reach inside it. The single
cream-on-near-black SVG left a cream wordmark on a cream page. Ship a light
variant with warm ink and the darker brass the light theme already uses.
2026-07-14 10:58:36 -06:00
48c99432fc Dashboard: mobile layout fix (grid min-content blowout) 2026-07-14 10:56:23 -06:00
674ad25662 Move to escapement.warehack.ing; fix GFM tables in MDX
The landing page's headline results table was rendering as a paragraph of raw
pipe characters. Astro applies remark-gfm to .md but it wasn't reaching the MDX
pipeline, so every .md page rendered tables fine and only index.mdx was broken —
which is exactly why it went unnoticed. mdx({remarkPlugins:[remarkGfm]}) fixes it.

cuckoo.warehack.ing stays as a permanent redirect; it was live briefly.
2026-07-14 10:51:35 -06:00
3b505644b2 Kernel release 6.18.38-rt-cuckoo+: reproducible build, guarded installer
Rebuilt with KBUILD_BUILD_USER/HOST/TIMESTAMP pinned. Without them the kernel
bakes the builder's user@hostname and wall-clock build time into /proc/version,
which publishes operator identity in a public artifact and makes the build
unreproducible. Pinned, anyone can rebuild and diff the bytes — the only trust
story available for an unsigned community kernel.

The installer refuses to run on anything but a Pi 4, refuses a mismatched
image/modules pair (vermagic failure means no /dev/pps0 on a kernel that
otherwise boots fine — silent and miserable to debug), verifies SHA256SUMS,
never touches kernel8.img, and leaves rollback as deleting one config.txt line.

Boot-tested on the Pi: Stratum 1, 273 ns offset, PPS handler confirmed NOT
threaded. Binaries ship as release assets, not in git.
2026.07.14
2026-07-14 09:52:17 -06:00
6b6d80ded3 Cuckoo: single click gives one call, double-click strikes the hour
Nine cuckoos on an idle click is a lot. There's no singleclick event and click
always fires before dblclick, so the single call is deferred by one double-click
interval (260ms) and cancelled if a second click lands.
2026-07-14 09:32:45 -06:00
63902f095a Add a clickable cuckoo clock and the 90-second talk to the landing page
The clock strikes the current hour. Two things in it are mechanism rather than
decoration:

- The pendulum TICKS. steps(2) over 2s = two discrete positions, one per second.
  That is what an escapement does — it chops continuous energy into countable
  ticks. A swept pendulum would contradict the entire site.

- The call is SYNTHESIZED, not sampled. A real cuckoo clock is two wooden pipes
  a minor third apart (6:5, so 700 Hz -> 583 Hz), pushed by a bellows. That's
  twenty lines of Web Audio: triangle pipes with a slight pitch sag as the
  bellows empties, plus a puff of bandpassed noise for the breath. The sound is
  the mechanism rebuilt, and the hero ships zero bytes of audio.

The talk is regenerated for a public audience — the finding, not the
procurement case. Transcript ships with it: audio is the alternative to reading,
never a replacement for the text. preload=none so the 800 KB only downloads for
readers who actually press play.
2026-07-14 09:29:51 -06:00
6881489bf6 The Cuckoo Escapement: field report, kernel patch, dashboard
What the Raspberry Pi time-server guides get wrong on a Pi 4, with the
measurements. The headline artifact is a four-line pps-gpio patch: PREEMPT_RT
force-threads IRQ handlers, and pps-gpio takes its timestamp inside its handler,
so the realtime kernel puts a scheduler between the electrical edge and the
clock. IRQF_NO_THREAD takes RMS offset from 2468 ns to 199 ns.

- kernel/     the patch
- dashboard/  live status page (position hidden by default)
- docs-site/  the write-up (Astro/Starlight, brass, no tutorial section)
2026-07-14 09:21:25 -06:00