Phase 2 — BLOCKED on adapter-multiplayer-firebase publishing. Investigation, not a commitment to build.
None of the four vendored bundles has any presence or disconnect awareness. Verified by inspection: presence, heartbeat, and beforeunload each return zero matches across all four files. Participant entries are removed only on an explicit disconnect() call, so a closed tab simply leaves its entry behind.
That is why dropout detection currently has to be inferred from consecutive round timeouts rather than observed.
Why it is worth checking rather than assuming
Firebase RTDB has a native onDisconnect primitive, so the Firebase adapter plausibly does or easily could expose presence. If it does, dropout detection upgrades from "wait for two or three 60-second timeouts, then guess" to "the partner is gone, right now" — which is the difference between a good survivor experience and a merely tolerable one, and it also removes the ghost-pairing failure mode.
Work
Do not let the unblocked timeout-counter work wait on this.
See READINESS.md section 2 and the blocked-packages section.
Phase 2 — BLOCKED on
adapter-multiplayer-firebasepublishing. Investigation, not a commitment to build.None of the four vendored bundles has any presence or disconnect awareness. Verified by inspection:
presence,heartbeat, andbeforeunloadeach return zero matches across all four files. Participant entries are removed only on an explicitdisconnect()call, so a closed tab simply leaves its entry behind.That is why dropout detection currently has to be inferred from consecutive round timeouts rather than observed.
Why it is worth checking rather than assuming
Firebase RTDB has a native
onDisconnectprimitive, so the Firebase adapter plausibly does or easily could expose presence. If it does, dropout detection upgrades from "wait for two or three 60-second timeouts, then guess" to "the partner is gone, right now" — which is the difference between a good survivor experience and a merely tolerable one, and it also removes the ghost-pairing failure mode.Work
onDisconnectat all.jspsych/jspsych-multiplayer, since every dyadic study on this stack has this problem.READINESS.mdso the next person does not re-derive it.Do not let the unblocked timeout-counter work wait on this.
See
READINESS.mdsection 2 and the blocked-packages section.