Skip to content

Measure tab: surface runs + profiling/verification measurements (visibility, selection, report separation) #130

Description

@itsab1989

Summary

Feedback from Knut: the Measure tab hides the run/measurement model from the user. You can't see how many runs a profile has, whether starting will create or overwrite a run, or which measurement kind (profiling vs verification) you're about to write — and there's no high-level "what happens when I create and measure a chart?" help. We need a coherent strategy for surfacing and managing this, in both the UI and the file layout.

How it works today (for reference)

The Measure tab is file-driven, not project-driven: you load a specific .ti2 and the output is written next to it as <chart-stem>.ti3 (tab_measure.py, ti3 = self._ti1_path.with_suffix(".ti3")).

  • New vs overwrite: measuring never creates a new run — it always overwrites the loaded chart's run. New runs come only from the Create Chart tab (chart generation "add new run", or refinement Project.new_run(preconditioning_from=…)). The only current cue that a measurement already exists is the "reuse existing .ti3 / resume" checkbox appearing.
  • Kinds of measurement, already distinct on disk:
    • Profiling → <stem>.ti3
    • Verification → <stem>-verify.ti3 + CHROMIQ_VERIFICATION "true" keyword (via the "Profile verification" checkbox; the app refuses to build a profile from it).
    • Calibration → separate cal/ folder.
  • Report coupling: the Measurement Report trends from saved reports/report_*.json, rebuilt from each run's profiling <stem>.ti3. Verification files aren't auto-included — but nothing filters on the CHROMIQ_VERIFICATION keyword, so a verification measurement that ever gets "reported" could be trended alongside profiling runs. Latent mixing risk.

What's missing

  1. No display of how many runs a profile has, or which run is active, in the Measure tab.
  2. No indication of whether Start will create or overwrite, and which run.
  3. No way to pick/overwrite a specific run from Measure (only by loading that run's .ti2).
  4. Profiling vs verification (and vs calibration) isn't shown in the UI — only inferable from the checkbox and filenames.
  5. Verification is one fixed slot per run (-verify); re-verifying overwrites, no history, only implicitly tied to a run.
  6. No high-level help card describing the whole create → print → measure → build → report flow and which folders are created when.

Proposed strategy (for discussion)

  • Run + kind status strip in the Measure header once a chart is loaded: e.g. "Profile Canon-Pro300 · run 3 of 4 · profiling", and Start-button wording: "Start will overwrite run 3's profiling measurement" vs "…create run 3's verification measurement."
  • Run selector in Measure (dropdown of the project's runs + "+ New run"), making Measure project-aware — so a fresh run or a specific overwrite can be chosen from here, not only from Create Chart.
  • Formalize the three measurement kinds on Run (profiling / verification / calibration) with explicit path accessors, and have the Measurement Report exclude anything carrying CHROMIQ_VERIFICATION — closing the latent mixing risk with the marker that's already written.
  • Decide the verification data model: keep one-slot-per-run (simple) or allow timestamped verifications per run (e.g. reads/verify_YYYYMMDD.ti3) if a verification history is wanted.
  • User-facing process help card: "What happens when I create and measure a chart?" — the whole flow and folder lifecycle, from the material in docs/dev_folder_layout.md.

Priority

Low → high risk order: (1) status strip + create/overwrite wording (surfaces existing data, no behaviour change) → (2) report honoring the verification keyword → (3) run selector / new-run-from-Measure → (4) verification history → (5) help card. None urgent.

Raised from Knut's testing feedback, 2026-07-22.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions