Skip to content

[bug] strategy CLI offers --fill decaying-spectrum but no way to set its k^-alpha decay rate (stuck at alpha=1.0) #231

Description

@glorydavid03023

What's wrong

storage.generate takes a spectral_alpha parameter that sets the k^-alpha singular-value decay for --fill decaying-spectrum (_fill_decaying_spectrum(mat, seed, rank, spectral_alpha)). The strategy CLI exposes --fill decaying-spectrum and --data-rank, but there is no flag for spectral_alpha and runner.run / runner.compare don't thread it through — so every --fill decaying-spectrum run is hardcoded to the default alpha=1.0. It is the only storage.generate knob with no CLI path.

That matters now that decaying-spectrum is a scored track with its own accuracy floor (0.90): a contributor can't sweep the decay rate to see where their transform holds up vs. where it degrades — the whole point of that fill ("prioritize the strongest structure").

Suggested fix

Add --spectral-alpha (float, default 1.0, >= 0) to the strategy CLI and thread it through runner.run / runner.compare to storage.generate. Reject negatives at the CLI boundary (a negative exponent grows the tail — not a decaying spectrum), matching the existing --n / --data-rank validation.

End-to-end effect (N=512, decaying-spectrum, M=48): --spectral-alpha 0.5 → rel_err 0.70; --spectral-alpha 3.0 → rel_err 0.004 — a steeper spectrum is more compressible, as expected.

strategy/ is an open (non-protected) zone → fix lane. Distinct from #229 (which only corrects the --data-rank help text).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:strategySmart strategies / transforms (strategy/)status:triageNewly opened, not yet triagedtype:bugSomething is incorrect or brokentype:strategyNew smart strategy / transform proposal

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions