Files
esh-pfi-infrastructure/persistent-memory.d/2026-08-23-worldtree-b187-pins-matrix.md
T
vh b6340519bc memory: snapshot — Anaheim tunnel at 25% of circuit; selene retired; hrafn CI fixed
Session captured for a context reset. Six new detail entries.

THE OPEN ITEM: Anaheim's IPsec tunnel delivers ~550 Mbit/s aggregate against a
circuit measured at 2,153 Mbit/s. Not WireGuard (it is IPsec on ana-gw), not
CPU (idle), not crypto exhaustion (NPU-offloaded), not the fibre. Both tunnels
negotiate aes256-sha1; AES-GCM proposed. Operator signalled authorization;
execution pending, untracked by operator choice.

Also recorded: selene retired after losing a head-to-head on its own job with
chat-judge moved to gen and the model name left to 404; the 7-alias collision
on the gen seat that makes cross-alias corroboration an echo; hrafn adopted and
its CI found to have been reporting green while deploying nothing for its whole
life; all three Worldtree instances de-armed from a 69-day-stale :latest and
the Matrix homeserver re-plumbed to personal; every secret-bearing .env on
ana-docker tightened to 0600; the pfi org closing the repo-creation half of the
credential-migration directive; booth kept-board deletion and link pruning.

Two entries under Tried and abandoned: the CI checkout assertion that broke the
pipeline twice and was removed, and my proposal to alias a retired model name
at a different model, which the operator correctly overruled.

Index 271 -> 282 lines, under the 300 cap, so no archival fired.
2026-08-23 13:35:48 -07:00

3.9 KiB

[2026-08-23] Worldtree b187 shipped; all three instances de-armed from a 69-day-stale :latest; Matrix homeserver re-plumbed

b187 pre-stage (#405 phases 1+2)

The matrix bridge stopped embedding the engine and became an HTTP client of the Conversation API, so WORLDTREE_API_URL became boot-blocking — absent from the container env, the bridge exits by design. Demo's compose never passed it; the next recreate would have crash-looped. Pre-staged on demo and personal (additive, backed up, verified with docker compose config, nothing restarted).

Key decision, and I got its scope wrong first. I argued demo should stay keyless (no homeserver -> no rooms -> no turns -> no 401s). Right about turns, wrong about scope: the engine preflight authenticates at boot regardless of homeserver, so demo booted permanently degraded. Corrected — key 341c1488 minted under worldtree-dev's recorded authorization, vaulted, wired, three-hop hash-verified.

The 69-day-stale :latest landmine

All three instances pinned WORLDTREE_IMAGE=.../worldtree:latest in .env while running SHA-tagged images built that day. Local :latest = b19afd71d7cc, built 2026-06-14. So ANY docker compose up — anyone's, for any reason — silently downgraded that service by 69 days. Same footgun as the 2026-06-15 outage.

Re-pinned all three to their running SHAs (Worldtree #410), verified by rendering compose config rather than reading .env, containers untouched. Playbook at playbooks/repin-worldtree-image.yaml.

worldtree-pinned was the worst case: the instance whose entire purpose is being frozen was running a dangling image with no repo tags, kept alive only by the running container. One docker rm from garbage collection. Tagged :446e5807bf43 first, then pinned.

The guard I wrote had two bugs the pinned case exposed: it compared the container's .Config.Image string (only the tag it was CREATED from — pinned was created from :latest back when that meant 446e5807), and it reported CHANGED unconditionally. Now compares image IDs and skips when already correct.

Matrix homeserver ownership

Operator ruled: personal owns the Matrix bridge. The appservice tokens were never missing — both sat at length 64 in the vaulted dev env.sh while both deployed instances had them at length zero. Someone wired four of six Matrix vars and stopped. Wired them into personal, three-hop verified.

The trap worth remembering: Synapse's registration pointed at http://10.100.10.50:8009 — nh3-dev, a dead epoch, with transaction 2801 queued at 512s backoff. The natural fix (swap the IP) gives 10.250.50.152:8009 which is DEMO's bridge, and Synapse can reach both — it would have connected, delivered, and looked correct while routing the operator's live rooms to the demo instance. Personal's bridge is :8010. docker port is ground truth.

Corrected the URL, restarted Synapse (healthy in 32s after 3.5 months up), verified GET /_matrix/app/v1/ping -> 200 from inside the Synapse container. worldtree-dev's smoke passed first try: room created, mimir accepted the invite, a real engine turn ran, mimir replied in persona voice. #408 closed.

Open on worldtree-dev's side

  • #411 — personal's bridge logs Debug sink init failed: Permission denied: /app/sessions/debug_rooms.json. It creates two debug rooms but cannot persist their IDs, so every restart mints a fresh pair on the live homeserver. Room litter that compounds silently. Needs a which-container-writes-what check on the sessions volume before anyone chowns it.
  • Bridge/engine agent-roster drift: 6 of the bridge's 9 configured agents are not listed by the engine on either instance.
  • Historical Domari pairwise verdicts from the selene era are coin-flip-grade (see 2026-08-23-selene-retired-alias-collision); worldtree-dev banked that so no future arc leans on them without re-judging.

Commits 064181a, bb19a96.