You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Per-phrase tiers 4/4: verify the mastery slider works end to end on an editor-saved pack #36
Part of #3. Last: depends on Per-phrase tiers 1/4 and at least one of 2/4 or 3/4.
The point of #3 is that the master-difficulty slider (feedBack#48) should work for editor-authored sloppaks, not just GP-imported ones.
Scope
Author or derive distinct tiers for a phrase, save a sloppak, load it in the host, and confirm the mastery slider changes which notes are shown (the consumer is core's static/highway.js_rebuildMasteryFilter(), which reads phrases[].levels[]).
Capture this as a repeatable test or a documented manual script with fixtures.
Update the CHANGELOG note that says the slider is a no-op for editor-saved packs.
Acceptance criteria
The slider visibly changes the note set for an editor-saved pack with authored tiers.
A pack without authored tiers behaves as today.
The documentation no longer says the slider is a no-op.
Out of scope
Difficulty Ladder's own generation (that lives in the difficulty-ladder plugin).
Closed #36 (per-phrase tiers 4/4) with a repeatable end-to-end verification suite, tests/test_mastery_filter_e2e.py (5 tests), that mirrors core's highway mastery filter and drives it over the real save-path output (_repopulate_phrase_levels), plus the docs/CHANGELOG corrections for the "slider is a no-op" framing (new [Unreleased] entry; 1.4.3 note amended with a pointer). All three acceptance criteria pinned: authored tiers visibly change the rendered set per slider position, untiered packs render identically at every position (including the freshly-added-phrase empty-ladder case), and no documentation claims the slider is a no-op anymore.
Verification: full pytest suite 502 passed / 5 skipped, npm test 400/400, npm run lint 0 errors (3 baseline warnings). A mutation check confirmed the tiered-pack tests fail if the save path's authored-tiers branch regresses. No product code changed.
Reviewer (reviewfrog) findings were addressed: mirror-guard wording now scope the manual re-sync to core, Math.floor used for exactness, the handshape fall-through gate modeled, the max_difficulty > top-tier divergence pinned and documented, the fresh-phrase empty-ladder acceptance-2 case added, the cascade claim qualified, and the CHANGELOG no-op/chain wording tightened.
Manual host-side verification remains the scripted step: Alt+P a phrase → save → load in host → drag the master-difficulty slider.
Activity
pullfrog commentedon Oct 2, 2026
pullfrog commentedon Oct 10, 2026
PR opened: #67
Closed #36 (per-phrase tiers 4/4) with a repeatable end-to-end verification suite,
tests/test_mastery_filter_e2e.py(5 tests), that mirrors core's highway mastery filter and drives it over the real save-path output (_repopulate_phrase_levels), plus the docs/CHANGELOG corrections for the "slider is a no-op" framing (new[Unreleased]entry; 1.4.3 note amended with a pointer). All three acceptance criteria pinned: authored tiers visibly change the rendered set per slider position, untiered packs render identically at every position (including the freshly-added-phrase empty-ladder case), and no documentation claims the slider is a no-op anymore.Verification: full pytest suite 502 passed / 5 skipped,
npm test400/400,npm run lint0 errors (3 baseline warnings). A mutation check confirmed the tiered-pack tests fail if the save path's authored-tiers branch regresses. No product code changed.Reviewer (reviewfrog) findings were addressed: mirror-guard wording now scope the manual re-sync to core,
Math.floorused for exactness, the handshape fall-through gate modeled, themax_difficulty > top-tierdivergence pinned and documented, the fresh-phrase empty-ladder acceptance-2 case added, the cascade claim qualified, and the CHANGELOG no-op/chain wording tightened.Manual host-side verification remains the scripted step:
Alt+Pa phrase → save → load in host → drag the master-difficulty slider.Task list (1/7 completed)
big-pickle(free) | 𝕏test(editor): add trailing newline to mastery filter e2e suite (#36)
test(editor): verify mastery slider end to end on editor-saved packs (#…
test(editor): add trailing newline to mastery filter e2e suite (#36)