Skip to content

Add an opt-in BMS-IR score submission provider #8

Description

@tenP0312-dev

Goal

Add BMS-IR as an opt-in, submit-only IR provider using bmz-player existing provider boundary, durable submission queue, and per-provider failure isolation.

This is paired with BMS-Mania/IR#1127 because it introduces a native server adapter and a distinct client identity.

Upstream constraints

Implementation follows the current upstream Markdown and code, especially:

  • docs/ir.md
  • docs/rian-ir.md
  • docs/score-persistence.md
  • AGENTS.md
  • the bmz contribution policy proposed in BMS-Mania/IR#1126

The contribution will keep client implementation identity separate from score rule identity and will not route BMS-IR failures into local play, local score persistence, or other providers.

Initial acceptance matrix

Supported:

  • manual, unassisted single-chart results
  • Beatoraja rule mode
  • normal/effective-LN scoring
  • non-Battle play
  • existing BMS-IR ID plus LR2 game token authentication
  • six desktop locales
  • provider disabled by default

Intentionally out of scope:

  • course submissions
  • replay upload
  • ranking, rival, and table reads
  • primary-provider capabilities
  • assisted, autoplay, replay, practice, Battle, CN, and HCN results

These narrower limits are intentional until BMS-IR has matching rule buckets and contracts.

Acceptance criteria

  • Add an explicit BMS-IR provider/protocol without pretending to be BMZ Official or rianIR.
  • Reuse the existing queue and provider-key isolation.
  • Apply BMS-IR-specific eligibility before enqueue.
  • Send a native UTF-8 JSON score payload with chart source format, MD5/SHA-256 identity, result details, options, rule mode, and an idempotency key.
  • Do not enqueue replay or course jobs for this provider.
  • Preserve current defaults; the new provider is opt-in.
  • Localize all bmz-owned UI strings in ja, en, ko, zh-CN, zh-TW, and zh-HK.
  • Add focused tests and run the upstream Rust validation commands.
  • Document the protocol reference, intentional differences, provenance, and source-only release boundary.

Release boundary

This issue covers upstream source acceptance only. It does not include a BMS-IR production rollout, bmz-player distribution build, public release note, or live-service acceptance.

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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions