M10 — Studio workflow (media library, gamut compare, spot-read, projects)

New Issue

Product layer on top of the shipped v2.0 wizard (Stages 0–5).
Does not replace disk artefact gating. Does not implement #16 TargetPrint.
Does not add a colour engine, display calibration, i18n, or in-process Argyll.

Issues

  • #146 Media library (printer + paper + ink + .cal bound to a preset)
  • #147 Gamut compare (second profile, references, click-inspect)
  • #148 Spot-read console (bundled spotread; default_instrument consumer)
  • #149 Project file (.icceryproj index over basename + cwd)

Implementation order (locked)

Single-implementer serial path — do not start N+1 product UI until N’s CI/mock gate is green:

  1. #146 Media library — foundation. Introduces MediaRecipe + MediaLibraryStore and the apply/capture path through existing PresetMapping. No M10 predecessors. Unlocks a stable recipe id for #149.
  2. #148 Spot-read console — independent of #146 code, but second because a library “trust this paper/ink” workflow wants a live Lab check before captureFromSession. Owns process id spotread only; must not land while Stage 3 chartread ids are being retouched in the same PR.
  3. #147 Gamut compare — independent of #146/#148. Third so SceneKit layering does not collide with the new sidebar chrome from the library and spot-read sheets. Can be developed in parallel with #148 on a separate feat/ branch, but merge after #148 to keep sidebar/a11y diffs serial.
  4. #149 Project file — last. Soft-depends on #146 (mediaRecipeID is decodeIfPresent; project must still open if the library file is absent). Consumes verification history and live basename/cwd. Do not start until #146 apply/capture is on milestone/m10-studio.

Hard dependency: #149 is blocked by #146.
Soft / merge-order only: #148 before #147 (sidebar contention), #148 after #146 (product narrative, not code).

Parallelism

  • After #146 is on the milestone branch, #148 and #147 may proceed as sibling feat/ branches.
  • #149 stays serial behind #146.
  • Do not stack all four in one PR.

Gates

  • CI/mock: unit tests for the four stores/parsers + UI smoke (open library, load two .gam, one mock spot-read, open/save project).
  • Hardware: bind a real printer+paper+.cal; compare two real .gam; one live spot-read; reopen a project after quit.

Branching

developmilestone/m10-studiofeat/<issue>-<slug>
Feature PRs target milestone/m10-studio, not develop.
No due_on.

No due date
87% Completed