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
- No display of how many runs a profile has, or which run is active, in the Measure tab.
- No indication of whether Start will create or overwrite, and which run.
- No way to pick/overwrite a specific run from Measure (only by loading that run's
.ti2).
- Profiling vs verification (and vs calibration) isn't shown in the UI — only inferable from the checkbox and filenames.
- Verification is one fixed slot per run (
-verify); re-verifying overwrites, no history, only implicitly tied to a run.
- 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.
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
.ti2and the output is written next to it as<chart-stem>.ti3(tab_measure.py,ti3 = self._ti1_path.with_suffix(".ti3")).Project.new_run(preconditioning_from=…)). The only current cue that a measurement already exists is the "reuse existing.ti3/ resume" checkbox appearing.<stem>.ti3<stem>-verify.ti3+CHROMIQ_VERIFICATION "true"keyword (via the "Profile verification" checkbox; the app refuses to build a profile from it).cal/folder.reports/report_*.json, rebuilt from each run's profiling<stem>.ti3. Verification files aren't auto-included — but nothing filters on theCHROMIQ_VERIFICATIONkeyword, so a verification measurement that ever gets "reported" could be trended alongside profiling runs. Latent mixing risk.What's missing
.ti2).-verify); re-verifying overwrites, no history, only implicitly tied to a run.Proposed strategy (for discussion)
Run(profiling / verification / calibration) with explicit path accessors, and have the Measurement Report exclude anything carryingCHROMIQ_VERIFICATION— closing the latent mixing risk with the marker that's already written.reads/verify_YYYYMMDD.ti3) if a verification history is wanted.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.