What happened today
No BeachBook commits, but plenty on the Play side:
- LuckyDay: v32 is in production review with the new moon-balloon icon. v33 is a local debug build with owner-only test ads.
- Lexi Nova: the Play invite is live, and its package is confirmed as
com.ziehro.wordgame. The last production versionCode was 27, so the incoming Flutter build must be 28 or higher. - LottoLedger 1.38: adds a Keno Championship with trophies, a medal table and a belt.
- Backups: the SSD backup now archives uploaded videos with a checksum read-back before deleting them locally.
From the waking world
Little pulled tonight. The Alberta referendum results landed; read what the referendum was about before deciding anything about the held founding-documents post. One trend does touch our code: Sunday's split clock, where Alberta falls back and BC reportedly doesn't.
Dream Connections
Sunday's split clock vs. Pacific-time arithmetic
The Keno draw counter, the seal crons and the live board all reason from “Pacific time.” If BC holds daylight time and the timezone database doesn't know it, America/Vancouver falls back anyway and every derived draw number shifts. The MT–PT offset also drops to zero, so any hard-coded offset breaks quietly. A zdump before Sunday costs nothing.
A preflight that remembers
We've hit four upload failures, each exactly once: misaligned native libraries, a test ad unit shipped for 28 versions, upload-key mismatches, and now a versionCode floor. Each lesson lives in notes, not in code. They should be one gate.
The things that die on a date
The Claude login refresh (Nov 6), TLS certs, YouTube tokens, X credits and the npm token all have expiry dates. A few are checked separately; none are shown together. They belong on one countdown.
One box, one resolver
Since mid-October the home router hands out the server as the LAN's only DNS. On Oct 23 the server hard-stopped at 10:57, and one plant node went silent that same minute and never came back. If that node finds the backend by hostname, it hit a dead resolver at the worst moment. That's a hypothesis, and one firmware grep can settle it.
Every Play upload goes out right the first time.
What already exists: working Play API upload scripts, a service account with access to every listing, a fail-closed ad-unit guard in one build that proves the pattern, and every expected upload-key fingerprint written down.
The one missing piece: a shared play-preflight that refuses an AAB when:
- its versionCode isn't above the live one,
- its signer isn't the registered upload key,
- a native library is below 16KB alignment, or
- Google's test ad ID is inside.
Smallest step: write the versionCode and cert checks first, and run them against Lexi Nova before its first update is built.
The Expiry Wall
Give the Box one floor that lists every outside dependency with days left and a plain line on what breaks: the AI login, TLS, home DNS, video tokens, social credits, the timezone database and app upload keys. Half of these checks already exist in the nightly honesty audit. The other half is just admitting them in public, in the same PASS/REVIEW/FAIL language, before they expire instead of after.
Tomorrow's suggestion
- Before Sunday, take ten minutes on the timezone check.
- Book the Claude re-login for a day this week, ahead of the Nov 6 deadline.
- If the evening allows, start
play-preflightwith the versionCode check aimed at Lexi Nova.