fix(bd-3o8zmz46): evidence-based session expiry handling in hub-client - #268
Merged
Conversation
/auth/me now reports the token's exp and the client schedules refresh from it (removing the refocus drift bug); a new useAuthProbe polls /auth/me while sync is disconnected (two-strike 401 escalation); network errors never log the user out; the login screen says when the session expired.
shikokuchuo
force-pushed
the
bugfix/bd-3o8zmz46-ws-auth-expiry
branch
from
June 10, 2026 13:08
ec38d81 to
5b14edd
Compare
AdaWorldAPI
pushed a commit
to AdaWorldAPI/q2
that referenced
this pull request
Aug 14, 2026
The comment above the sibling `git clone` layer asserted that "each build re-clones fresh (no stale-cache problem the old pin was guarding against)". That is true per q2 COMMIT and false per DEPLOY, and the difference is a production outage. Docker busts a layer when an INPUT changes. The sibling repos are not inputs — nothing in this file can observe that lance-graph's HEAD moved — so a redeploy of the same q2 commit reuses whatever clones the last build happened to take. Measured today. Merging q2 #129 and OGAR quarto-dev#268 in the same minute started a build whose lance-graph clone carried a codebook mirror one concept short of OGAR's `class_ids::ALL`; `lance-graph-ogar`'s COUNT_FUSE panicked at const-eval (E0080) and the deploy died at COMPILE, never reaching hydration. lance-graph #953 fixed main eight minutes later — and the redeploy reproduced the identical failure, because this layer served a lance-graph that no longer had the bug anywhere but in Docker's cache. Records the trap, the diagnostic ("a sibling that is demonstrably green on main fails the build -> suspect this layer first"), and the two escapes: any q2 commit busts COPY and therefore this, or redeploy with the cache disabled. Names the durable fix without making it: either explicit SHA ARGs bumped deliberately (reproducible, staleness visible in the diff) or removing the hand-maintained mirror entirely via hotplug enumeration. Both are architectural calls; a comment is not one, and this commit does not pretend otherwise. This commit also busts the COPY layer, so the next deploy clones fresh siblings and should build against the already-green lance-graph main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMeiLmtDKhomJNSo2ecbJw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When the Google ID token expired and One Tap renewal was unavailable, the hub 401'd every Automerge WS upgrade while the SPA stayed "logged in" showing a permanent "working offline" banner (bd-3o8zmz46).
/auth/menow reports the token'sexpso the client schedules refresh from the real expiry (removing the refocus drift bug)useAuthProbepolls/auth/mewhile sync is disconnected and escalates on two consecutive 401s (renewal first, then an explicit "session expired" login screen)