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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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