Skip to content

[Sad Catapella N3][Scientific provenance] Distinct percentile settings share the same serialized method identifier #35

Closed

Description

@guijacquemet

Baseline and classification

Normalization Batch 3, pinned f784c95e3049483f87466150ffc5764375fa631d. Confirmed source-level settings identity collision, independently verified with isolated Python float formatting (not the package pytest suite). This is not the large-value arithmetic issue #32.

Evidence

Deterministic counterexample

NormalizationSettings(percentile=(1.000001, 99.8)).method_name and NormalizationSettings(percentile=(1.000002, 99.8)).method_name both yield 'percentile 1-99.8'. A parameter row written with one is accepted by Parameters.from_columns(row, other_settings), despite distinct percentile thresholds. This is a proven identity collision; whether an actual dataset changes its fitted quantile values depends on distribution and pixel count.

Impact

Silently accepting stale/incompatible fitted normalization parameters, and ambiguous method/provenance reporting across runs. Especially problematic when preserving exact experimental parameter choices is a contract requirement.

Fix and acceptance

Treat the label as display text, not the full scientific settings identity. Store/validate exact method parameters or a canonical settings signature/version alongside parameters; maintain existing column layout only with explicit compatibility semantics. If changing the method string, version and migrate that contract and preserve old-row rejection behavior. Test high precision percentile pairs with identical short names, ordinary pairs, rgb, changed consistency, matching/contradictory settings, and round-trip exactly. No Numba role.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions