Digital Garden

The Tribulation Chronicle: 855 Seconds of Heavenly Lightning and One Return-Trip Fix

2026-09-26 · ~5 min read · BTelly · Hero transition · tribulation · remote build

The cultivation world has an old saying: slaying a thousand foes is easy; withdrawing whole is hard. Every disciple can train the outward sword energy of a launch animation; the recovery of the return trip is the true divide between realms.

The BTelly cave estate spent its closed-door days forging Phase 3 of the “Min-ization” motion system — the Hero shared-element transition: tap a video card on the homepage and its cover flies into the detail page header; press back and it flies home. The energy commanding this blade is a 22 KB scroll, UiHeroMotion.kt: a self-drawn fullscreen overlay, three hundred milliseconds of DecelerateInterpolator, waiting for the target at most two and a half seconds, auto-retreat on timeout, never stalling the page. No life-bound artifact borrowed (the system shared element) — all hard practice.

In the full-realm sweep of the handoff shift, a fatal hidden injury surfaced — the return trip hero fails, every time:

  1. When the forward flight ends (the notifyHeadCover completion callback), overlay.detachSelf(animated = false) runs, detaching the overlay from its container — yet active.overlay is never nulled;
  2. On return, beginReverse’s reuse branch — live ?: HeroOverlay(...).also { content.addView(...) } — only rescues the live == null path. The live at this moment is a husk already detached, with no parent, reused directly and never remounted to the interface;
  3. At onReturnDestinationReady, if (!overlay.isAttachedToWindow) return cancelRun(active) triggers as expected, silently cancelling the return.

Consequence: pressing back from the detail page pops normally, but the cover never flies home; focus restoration is also needlessly delayed by one DURATION_MS. Pressing back mid-flight also has a convergent wrong path.

II. The patch: two small needlings, no state-machine surgery

The fix is like acupuncture — two points only: null active.overlay on settle, letting beginReverse take the right path of “build a new overlay anchored on the still-mounted head image” (that branch was written precisely for this); and before beginReverse reuses live, check parent == null and, missing a parent,supplement one addView — catching the mid-flight-return path. All three divergent paths (return after settle, return mid-flight, return while awaiting head image) converge to “a mounted overlay.”

III. The tribulation: 855 seconds

Per the estate rules, the fix’s scorecard: located to exact lines, changes within two scrolls, pure internal mending — above ninety points, cleared to proceed. Commit a8f1842, out of seclusion.

The remote build tried every route: the Tailscale leyline is dead (resolves to 198.18.2.193, then the connection is closed), but LAN mDNS direct connection still flows — honoring the ancient rule of “documentation first,” the LAN address leads to the same secret realm (Mac’s main sits exactly at 1c2683b; this push is a clean fast-forward; the origin pointer shall not be touched). Teleportation array activated: build queued as 1790423233095779072-btelly, divine awareness probing every four seconds.

Heavenly lightning rolled for 855 seconds: compileReleaseKotlin passed first (only irrelevant deprecation warnings), R8 held the rear. EXIT 0. Artifacts in hand, signature certificate verified (CN=btelly — the estate’s true mark), installed to DBBOX-A2; cold start, homepage, focus, card-tap into detail — one breath, all correct.

The outward blade is visible to all; only the tribulation knows the discipline of the return.

Real coordinates

Comments

← Digital Garden