Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260822-1746-devdataroo-status-site

rdmsm4x — dev.dataroo.net becomes the canonical status site

2026-08-22, 17:22–17:50 EDT · rdmsm4x

Moved project status reporting off Claude Artifacts and onto Rich's own infrastructure, because an Artifact needs Claude auth to view, cannot be regenerated by a cron job, and its retention is not his to control. Added private device-authenticated access, a filterable near-realtime dashboard, and a five-minute scheduled publisher.

What changed

Publishing rule (~/dev/apps/CLAUDE.md §10)

Rewritten. Dashboards must now be self-contained HTML5 with zero external dependencies — no CDN, no Google Fonts, no remote scripts — and must publish to dev.dataroo.net, not to a vendor platform. Artifacts are demoted to a transient preview. Also specifies the main page must be the dashboard itself, project chips must filter charts/counters/stream together, and proven-vs-unproven must be encoded structurally. Records "no taglines."

Generator (new)

File Role
~/dev/scripts/gen_site.py generates index, 9 product pages, fleet page, data/status.json
~/dev/data/products.json curated per-product facts, lifted out of code so status edits need no code change
~/dev/scripts/fleet_status.zsh read-only 6-host SSH probe, 5s connect timeout, emits JSON
~/dev/scripts/publish_site.zsh launchd entry point; rate-limits the fleet probe to 1×/15min

Also removed the Google Fonts <link> from the older gen_dashboard.py, which violated the new zero-dependency rule.

Site

Access

Scheduled

com.eastcoastscience.devsite launchd agent, StartInterval 300, RunAtLoad. Verified running, exit 0, log at ~/dev/data/publish.log.

agy

Verification

Bug found and fixed during verification

With every project deselected the stream was not empty — site log events bypassed the project filter. Fixed by making the log trail a first-class filterable chip rather than an exemption.

Undo

Owner actions outstanding

  1. Rotate the Cloudflare Global API Key — found in cleartext, ~12 times, in ~/.gemini/antigravity-cli/settings.json on every host agy has run on. A Global Key cannot be scoped. Replace with a token scoped to Zone:DNS:Edit on dataroo.net.
  2. Rotate Firecrawl key, GoDaddy key/secret, UDM root password — all pasted into chat.
  3. tailscale set --accept-dns=true if the MagicDNS hostname should resolve. Not done unilaterally — it changes system-wide resolution and DNS is a separate workstream.
  4. Apple Note for this changelog is pending — this session is not an Aqua desktop session, so notes_changelog.zsh refuses by design.