Files
iccery-v2-mac/BUILD-PLAN.md
gronod d4261ba2c9 Implement M7 consolidation (#79–#86)
Extract ArgyllRunner.runStreamingTool and collapse toolFailed errors.
Share ProcessManager process factory and ROW_COLORS_JSON emission.
Add JSONFileStore, CalibrationIdentity, PresetMapping, and ArgsBuilder.
Unify Notice-backed print/finish banners, ProcessLogView, and log sinks.
Split PrintSessionViewModel out of TargetWorkflowViewModel.
Merge XYZ/Lab Codable types, drop StagePlaceholderView, and add unit tests.
2026-09-10 17:44:26 +00:00

2.8 KiB
Raw Permalink Blame History

BUILD-PLAN.md — ICCery v2 Mac

Spec snapshot: docs/. Source of tickets: Gitea milestones M1M6 + Later.

Sprint rule

Do not start milestone N+1 implementation until milestone N CI/mock gate is green. Hardware gates block release of that sprint, not filing, and not starting coding of the next sprint's non-dependent tickets.

Milestone map

Id Name Issues CI/mock gate Hardware gate
M1 Foundation & process core 16 App launches; wizard shell; ProcessManager + runCaptured; artefact gating tests; settings persist + dialog N/A
M2 Target generation & layout 711 targen → .ti1; printtarg → .ti2+TIFF; manifest+gallery; resume; presets N/A
M3 Unmanaged printing (lp) 1215, 17 parsers; build_lp_args goldens (both AP_*); cancel → nil Preferences shows driver PDE; unmanaged page on Epson or Canon
M4 Measurement 1822 chartread.mock; 39+ classifier fixtures; ΔE₀₀; snapshot/average Detect real instrument; one strip or XY through Done → .ti3
M5 Profile / verify / install 2327 colprof → .icc; profcheck parse; atomic history; install into temp dir Full .ti1.icc; profile visible in ColorSync Utility
M6 Gamut, Stage 0, CGATS, release 2832 .gam fixtures; cal argv; CGATS round-trip; signed sidecars; dmgbuild Stage 0 on a real printer; gamut of a real profile
M7 Deduplicate & consolidate 7986 Shared runner loop; JSONFileStore; preset↔config maps; Notice/log helper; ProcessManager factory; PrintSession VM; identity + colour-type cleanup N/A
Later Quartz / TargetPrint 16 ICCeryPrintKit standalone + seam test 1:1 on paper vs TIFF

Issue 16 is not an M3 or M6 exit gate.

Branch taxonomy

flowchart LR
  main[main]
  develop[develop]
  m1["milestone/m1-foundation"]
  m2["milestone/m2-targets"]
  feat["feat/7-targen-argv"]
  main --> develop
  develop --> m1
  develop --> m2
  m2 --> feat

Quoted node labels are required (v0.8.5 #80).

Command surface (parity with v0.8.5, native names)

Process: spawn, sendStdin, kill, killAll, resolveBinary, runCaptured. Files: dedicated picker per purpose; readTiffPreviewPng; parseTi2Header. Wizard: verifyStageArtefacts, getProfilePath, snapshotTi3, promoteTi3. Runners: runTargen, runPrinttarg, runChartread, runAverage, runColprof, runProfcheck, extractGamut, detectInstruments. Cal: generateCalibrationTarget, computeCalibrationCurves, applyCalibration, parseCalFile, library + project state. Print: getPrinters, getPrinterCapabilities, showPrinterProperties, printTargetNative. Install / quality / settings / CGATS: same semantics as docs/25-rewrite-notes.md host command list.