feat(music-data): play scenarios: Gekisou off, every rank, the Perfect play - #5
Merged
Merged
Conversation
…t play The deck model moves to ournotes-deck d4abb52 (chart-stats scenarios). Every chart's `deck` carries `offSeeds`, the chart measured with Gekisou off as a solo live plays; its ranges carry `rankBonusPercents` and its seeds `rangeWeights`, `rankCheck`, `scorePerfect` and `rangeScorePerfect`, from which a page derives a Gekisou live at any ranks and a Just rate. The statistics are checked against the master data and themselves: the rank bonus percentages against the MasterLiveGekisouRankingScoreBonus rows of the song's mission pattern, every rank bonus against trunc(rangeScore * percent / 100), the Perfect play of a chart without Just notes against the play, the array shapes, one Gekisou off seed, and every check and rank check within its bound. docs/music-data.md and the schema describe the new fields (optional in the schema: older files do not have them). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 29, 2026
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.
Moves the deck model to ournotes-deck
d4abb52(empty-sekai/ournotes-deck#1, chart-stats scenarios) and carries the new statistics throughmusic-data, so that a page can show a chart as a solo live plays it (Gekisou off, the default) and as a Gekisou live at any ranks (1..5 per range), with a Just rate between the Just play and the Perfect play.Changes
rust/Cargo.toml,rust/Cargo.lock:ournotes-deckpinned atd4abb52ff75059a13e99a88fd6812ec1bdaa5dd2(the deck pull request's branch commit).src/nnnotes/musicdata.pyDECK_CHART_KEYSgainsoffSeeds(it was dropped otherwise);ranges[].rankBonusPercents,seeds[].rangeWeights,seeds[].rankCheck,seeds[].scorePerfectandseeds[].ranges[].rangeScorePerfectpass through withranges/seeds.mission_pattern,rank_bonus_percents: the song's rank bonus percentages fromMasterLiveGekisouRankingScoreBonus(as the game reads them).chart_deckchecks, besides the chart facts: every range'srankBonusPercents(andrankBonusPercent=[0]) against those rows; every seed'srankBonus == trunc(rangeScore * rankBonusPercent / 100); a chart withjustNotes == 0hasscorePerfect == scoreandrangeScorePerfect == rangeScore; the shapesweights[kind][position],rangeWeights[kind][position][range](or null, a kind null), one range result per range, exactly one Gekisou off seed (its kinds may be null); everycheck,rankCheckand off check within its bound.docs/music-data.md: the two scenarios, the rank formulas, the Just rate, every new field with its unit;docs/commands.md.docs/schema/music-data.schema.json: the new fields as optional properties (files written before this change stay valid).tests/test_musicdata.py: the stand-in deck model writes the new fields from a rank bonus table; checks for every cross-check failure, null range weights and null kinds,rank_bonus_percents/mission_pattern.The version stays 0.1.2 (to be set separately).
Verification
uv pip install -e ., maturin,locked = true);nnnotes._deck.info()["commit"]isd4abb52….python -m pytest: 1125 passed, 5 skipped (a missing optionalfreetype, goldens recorded with other library versions).0b21c9f4a3911370d5f981fb894c7544, 85 songs, 340 charts,--workers 4, 42 s): every chart measured and every cross-check passed. Compared with the file of the previous deck commit (7e5d84b):provenance.deck.commitmoves); the new keys are exactly the scenario fields;offSeedsentry, its no-skill score below every Gekisou on seed's; every check (1376), off check (340) and rank check (1376) is within its bound;scoreandweightsbit for bit; everyrankBonusis the truncated formula; no range weights or kinds are null in TW;scorePerfect == score.Generated with Claude Code