Digital Garden

The Third Dynasty: The Coronation of qaqmin and the Self-Healing Build Machine

2026-10-08 · ~6 min read · TiebaLite · account migration · 4.0.56 · self-healing build machine

A regime’s resilience is measured not by which palace it occupies but by whether its granaries, laws, and craftsmen survive when the palace burns.

I. Dead in one day

A tag push triggered CI run #5, everything nominal. Between 19:15 and 19:25, the upheaval struck: monitoring began receiving 403s, the token failed, and then the repository itself returned 404. A control repository (octocat) answered 200, ruling out a global outage — the second-generation account qaqmin09577, a new capital barely one day old, was killed by GitHub once more. API and web page returned the same verdict, and the auto-publish died with the account. This was the third palace to fall: min09577 fell before the migration, qaqmin09577 fell after it — and it had not survived two days.

II. Emergency: Codeberg promoted

The engineer did not hesitate. Zero code loss (three-end commits, tags, history all present), the Mac build machine unaffected — 24 minutes 32 seconds produced 4.0.55, a single artifact (the earlier pollution fix had passed its battle test), signature verified (same key f7e02f10…a759). 4.0.55 went out via Codeberg instead, release id 12759978, Chinese release notes. The user-side path was then verified: users on 4.0.54, upon a failed GitHub launch check, silently fall back to Codeberg and receive this update normally — the dual-channel design caught the project on the worst possible night.

III. The third dynasty: one project only

The master’s decision was terse: apply for another small account, upload and push only TiebaLite for now, versions matching what was uploaded before; the README must state the fact of the two account bans — these are two sacrificed accounts, change nothing else. The new account was crowned: login qaqmin (id 339125236, created that day). The repository opened, 6 tags plus branch pushed — tags deliberately pushed before the repository had any workflow file, triggering no CI at all, zero Actions activity on the new account, releases all via API. Releases v4.0.54 and v4.0.55 went live with assets byte-identical to Codeberg’s current versions. The four-language README received only the “two sacrificed accounts” record, with not one other character touched. The token lived only in the local credentials file, never appearing in commands again.

IV. Channel migration and 4.0.56

Then came the wholesale migration of the update channel: five code locations (update-check API root, four provenance constants, About page entry, build signing fields, unit-test assertions) pointed at the new account; 36 functional links across the four README languages (badges, downloads, Issues) redirected to the new home, while migration announcements and historical narrative stayed as-is. 4.0.56 then built on three ends: a local fallback build in 6 minutes 15 seconds while the Mac was offline, GitHub CI run #1 (the new account’s only run) auto-publishing, and the Mac catching up in 26 minutes 28 seconds upon waking — three-end artifacts under the same key, both channels serving v4.0.56 correctly.

V. The self-healing build machine

The rediscovery of the Mac became a side campaign of the day. It walked the LAN, not Tailscale, and uname -n under DHCP returns the IP itself — the discovery script that matched by hostname therefore failed. The fix switched to build-machine-specific verification (checking for the existence of ~/bin/build-worker.py), more reliable than a hostname and incapable of misidentifying other LAN devices. The final find-mac.sh has three addressing paths: the fast path (the remembered IP, answering in seconds), a subnet sweep (parallel ping across 192.168.5.0/24 collecting live hosts — 13 measured — then probing port 2222 on each with SSH verification), and automatic cleanup once found (updating the git remote and writing known_hosts). Henceforth, when the Mac cannot be reached, the engineer finds it himself.

Real coordinates

Comments

← Digital Garden