Skip to content

fix(dashboard): dict belongs in Stage, not as fake levels + LDM level labels #379

Description

@polaz

Problem

The LDM+dict bench matrix bakes the _dict discriminator into the level name (level_1_fast_ldm_dict, level_22_btultra2_ldm_dict in zstd/benches/support/mod.rs). That name leaks into the level field of dashboard records, causing three regressions on the Level Profile:

  1. Fake levels in the Level dropdownlevel_1_fast_ldm_dict / level_22_btultra2_ldm_dict appear as separate levels. They should not exist as levels; the dict/plain split must be conveyed by the Stage dropdown (compress-dict / decompress-dict, which already exist).
  2. Wrong level labelsparseLevelId only matches level_<N>_<strategy>, so the _ldm / _ldm_dict variants fail to parse and render as raw IDs sorted to the bottom.
  3. "Staircase" chart — PR ci(bench): fix dashboard dict ratio/labelling + wasm-pack binaryen flake #376 split plain/dict into distinct (level, kind) X-axis points, doubling every level column. Dict should instead be separate toggleable series (Rust/FFI compress-dict + decompress-dict) on the same real-level X-axis.

Fix

  • CI parser (run-benchmarks.sh): normalize level (strip the _dict bench-variant suffix) so the dashboard level axis carries only real level identity; route dict-ness entirely through stage. Memory rows derive their dict stage (compress-dict/decompress-dict) from the stripped suffix. No Rust bench changes (keeps the CI level-filter inventory intact).
  • Dashboard: revert the (level, kind) X-axis doubling; X-axis = real levels. Add 4 dict series (Rust/FFI x compress-dict/decompress-dict) with checkboxes, kept separate from plain via stage-kind bucketing. Teach parseLevelId the _ldm suffix. Keep history mode kind-aware; keep the aggregate chart plain-only.

Acceptance

  • Level dropdown shows only real levels (level_1_fast_ldm, level_22_btultra2_ldm, numeric, na), nicely labelled.
  • Stage dropdown distinguishes compress/decompress/compress-dict/decompress-dict.
  • Level Profile: real-level X-axis, 10 toggleable series (6 plain + 4 dict), no staircase.

Estimate: 3h

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

    P2-mediumMedium priority — important improvementenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions