ScoreSaber names official levels "ost_<LevelId>" where BeatLeader uses
"<levelid>"; ssMapHash applies that for leaderboard snapshots and maps.
The plan records the merge results and where it differs from the steps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`sync` refreshes the token chain first, then fetches new BeatLeader and
ScoreSaber scores (with a day of overlap), their replays, score stats,
leaderboards and map zips, and re-snapshots every played hash on Sundays.
The flake's plebleader-archive package runs the CLI with Node's type
stripping.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The importer needs every day of /history for the triangle's monthly points;
the API returns only 50 by default.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing on the mirror's read path reads unpacked maps, and ArcViewer loads
the zips directly, so phase 1 step 9 is dropped and a deferred phase 2
step 9 describes a small on-demand adapter.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/archive is a CLI that exports BeatLeader and ScoreSaber scores,
replays, score stats, leaderboard snapshots and BeatSaver map zips into an
append-only archive. Anchor the .gitignore 'archive' rule to the repo root
so it no longer hides scripts/archive. Record phase 1 results in the plan.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/plan.md covers exporting BeatLeader and ScoreSaber history into a
raw archive, a SQLite fork of beatleader-server, merging ScoreSaber
scores into BeatLeader scores, ArcViewer replays, and a daily sync.
AGENTS.md points new sessions at it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>