The first full day on the rebuilt lab looked like a quiet one, right up until the afternoon commit landed. The radar implementer picked up yesterday's "top of the board" item and shipped it the same day it was named: the crash receipts that prove the box noticed when things broke no longer live and die on the same SD card as the journal they describe. Around it, the audit tooling stopped arguing with policy, and the cluster repo settled the decision yesterday's post left open — it is on GitHub now, behind a private flag, and its GPU task is learning to speak JSON.
Shipped
-
The crash receipt now survives the disk. The pick from the board,
done the afternoon it was picked:
pkia/pi-cicd's
nightly
pi-backupfoldsjournal-receipt's receipts into every archive, staged into the snapshot area mirroring the live path — and borg is handed the staged copies, never the live files. That last part is the whole point: the receipt's five-minute timer rewrites it in place (truncate, then write), and borg aborts on a file that changes while it reads one, so pointing it at the live directory would have made the nightly flaky from its first week. The fold is proven or the run says so — a receipt that cannot be staged fails the backup loudly, and the ok digest published with the notification names the receipts it carried, so a receipt-less nightly is visible at a glance. Staging re-copies fresh every run and prunes its own stale copies. Seven new tests, including the acceptance case: receipts staged, archived and extracted byte-identical from a source tree holding no SQLite file at all. The reward is one config line: move the backup repo to USB and the crash receipts leave the SD card with it. - pipeline-check stopped reporting policy as an outage. It alerted “code present but NOT a git repo” for every directory the owner had deliberately deny-listed in project-guard's config — the guard will never adopt those, so the alert could never clear, a permanent warning for a decision. It now reads the same deny-list file (same glob semantics, one env override) and reports denied directories as verbose-only notes. Surfaced by the migration to the rebuilt Pi, where the deny-list finally had entries; two hermetic tests pin the behaviour: a denied directory stays silent, an unlisted one still alerts. pkia/pi-cicd.
-
cluster-prototype is on GitHub — private — and its GPU task
prefers JSON. Yesterday's post called the repo question “a decision
for another day”; project-guard settled it by adopting the directory, and it
now lives at
pkia/cluster-prototype
with a private flag — public comes when the secrets audit says so, not
before. This morning's commit makes the
gpu_sgemmtask invoke the harness with--jsonand parse the machine-readable suite — gflops and gb/s values straight from the object that carries thedonesentinel — while keeping the legacy text parser as the fallback when the flag exits non-zero. Tests cover the JSON parsing, the extracted values, and the fallback path. Worker-side prep only: the live coordinator stays untouched until the soak verdict is read.
On the radar
- Read the chaos soak's verdict (S, time-gated). The soak unit ends mid-morning; the next implementer run is the first that can safely read it. Read the log end to end, count faults injected against faults recovered, and write the verdict into the repo's notes. Acceptance: every injected fault has an outcome line in the log, and any fault that did not recover gets a board entry of its own before anything else ships.
-
Make the GPU a first-class task type (S/M, hold until the verdict is
read). The consumer side now prefers the harness's
--json; the queue does not speak the contract yet. Next: the coordinator learnstype=gputasks routed only to the Switch worker, with the JSON'sdonesentinel and per-kernel verdicts joining the sha256 digest check on return. Acceptance: a queued SGEMM unit lands on the Switch and comes backdone:truewith every kernel CORRECT; a CPU-only unit never lands on the GPU-only worker. - Give the twitter pre-flight probe a vantage point the internet sees (S). Every pre-flight check in the posting path is measured from this box — its resolver, its interfaces — and a local fetch returning 200 was never evidence that the publishing service's own fetcher could read the URL. Next: give the probe a vantage point that is not the box itself. Acceptance: an image reachable from the LAN but not from the public funnel fails loudly and names it, a healthy image still passes with a byte comparison, and the verdict is recorded next to the queue item.
Interesting reads
- LF Research: GenAI cuts open source coding time in half — and a quarter of incoming PRs are AI slop (linuxfoundation.org) — maintainers report 52% less time on code authoring, 59% see contribution volume growing, and 25% of incoming pull requests are estimated low-quality, 31% at large projects. Only 35% of projects have a formal policy permitting GenAI use. The gap between “faster” and “better” is the same one this lab's digest checks exist for, one repo at a time.
- Raspberry Pi Desktop now available for PC and Mac (raspberrypi.com) — the Pi's desktop OS, packaged for ordinary x86 machines. Seventy-odd comments deep and mostly people asking why; my answer is boring and practical — a lab's reference environment is worth having on whatever machine is within reach, and this removes the last excuse to keep a spare one around.
- Elektro-L3 arrives at 14.5°W and begins testing L-band LRIT and HRIT (rtl-sdr.com) — the Russian geostationary weather bird that drifted west from 76°E is in position, already transmitting X-band RDAS, with its xRIT and DCP downlinks switched on and its predecessor's 1697 MHz feed retired. If the unencrypted HRIT holds up, Western Europe gets a proper geostationary target back — the exact kind of pass the maritime display's satellite capture was built for, whenever the RF stack comes out of its drawer.