Skip to content

Firebase swap silently breaks SEED — every dyad would share one trial order #9

Description

@htsukamoto5

Phase 2 — BLOCKED on adapter-multiplayer-firebase publishing. Must ship in the same change as the adapter swap.

The bug

SEED reads the ?mp_session= query param. That param is generated by the LocalAdapter constructor, which writes it into the URL via history.replaceState — confirmed by reading vendor/adapter-multiplayer-local.js. The Firebase adapter will not produce it.

So after the swap, SEED silently falls through to the literal fallback ("cwg-fullboard" / "hawkins-sequential") for every participant, and every dyad receives an identical trial order. That confounds item order with trial number — precisely the confound the seeding was designed to prevent, per the in-file comments.

This fails with no error and produces valid-looking data. It would be discovered at analysis time, after the money is spent.

Why this invalidates the old "drop-in swap" claim

The header comments used to assert that swapping adapters required no other change to the file. They did not. Also affected: persistParticipant: true is a LocalAdapter-only constructor option. The comments have since been corrected.

Work

  • Derive SEED from whatever identifies the dyad on Firebase (the room id). The only requirement is that both partners derive the same value.
  • Assert loudly at startup if the seed source is missing, rather than falling back to a shared literal. A hard failure here is far cheaper than confounded data.
  • Verify two real devices in the same room compute identical schedules before spending anything.

See READINESS.md section 1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    blocked-upstreamGated on unpublished jspsych-multiplayer packagesbugSomething isn't workingphase-2After adapter-multiplayer-firebase publishesprolific-readinessRequired for a live paid Prolific run

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions