macOS CI / build-and-test (push) Skipped
- BUILD-PLAN: M11 row (issues 183/180/181/186) above Later/#16; source line names milestone id 34; note line points at milestone/m11-print-settings from 736fd08; #16 not an M11 exit gate - README: M10 row reflects shipped state (milestone 32 closed); new M11 row in flight on milestone/m11-print-settings; branch taxonomy names the announced integration branch
56 lines
3.7 KiB
Markdown
56 lines
3.7 KiB
Markdown
# BUILD-PLAN.md — ICCery v2 Mac
|
||
|
||
Spec snapshot: `docs/`. Source of tickets: Gitea milestones M1–M6 + M10 (id 32) + M11 (id 34) + 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 | 1–6 | App launches; wizard shell; ProcessManager + `runCaptured`; artefact gating tests; settings persist + dialog | N/A |
|
||
| M2 | Target generation & layout | 7–11 | targen → `.ti1`; printtarg → `.ti2`+TIFF; manifest+gallery; resume; presets | N/A |
|
||
| M3 | Unmanaged printing (`lp`) | 12–15, 17 | parsers; `build_lp_args` goldens (both `AP_*`); cancel → nil | Preferences shows driver PDE; unmanaged page on Epson or Canon |
|
||
| M4 | Measurement | 18–22 | `chartread.mock`; 39+ classifier fixtures; ΔE₀₀; snapshot/average | Detect real instrument; one strip or XY through Done → `.ti3` |
|
||
| M5 | Profile / verify / install | 23–27 | colprof → `.icc`; profcheck parse; atomic history; install into temp dir | Full `.ti1`→`.icc`; profile visible in ColorSync Utility |
|
||
| M6 | Gamut, Stage 0, CGATS, release | 28–32 | `.gam` fixtures; cal argv; CGATS round-trip; signed sidecars; dmgbuild | Stage 0 on a real printer; gamut of a real profile |
|
||
| M7 | Deduplicate & consolidate | 79–86 | Shared runner loop; JSONFileStore; preset↔config maps; Notice/log helper; ProcessManager factory; PrintSession VM; identity + colour-type cleanup | N/A |
|
||
| M8 | Deduplicate & consolidate | 79–86 | (already shipped on `develop`) | N/A |
|
||
| M9 | macOS 12 / Xcode 14.2 retarget | (milestone/m9-monterey, PR #145) | XCTest + ObservableObject + macos-12 CI | N/A |
|
||
| M10 | Studio workflow | 146–149 | Media library + spot-read + gamut compare + project file unit/UI smoke | Real printer+paper+.cal; live spot-read; two `.gam`; reopen `.icceryproj` |
|
||
| M11 | Printer settings completeness & dialog binding | 183, 180, 181, 186 | Quality/media/paper caps parse + `LpArgs` emit + picker UI smoke + panel capture-return | Real Epson: 7 `EPIJ_Qual` options; real Canon Pro9500: English media labels; dialog bound to non-default queue with paper/quality/media/orientation preselected; captured settings reach `lp` argv |
|
||
| Later | Quartz / TargetPrint | 16 | `ICCeryPrintKit` standalone + seam test | 1:1 on paper vs TIFF |
|
||
|
||
M8–M10 are merged to `develop`; M11 assembles on `milestone/m11-print-settings` from `736fd08`.
|
||
|
||
Issue **16 is not an M3, M6, M10, or M11 exit gate.**
|
||
|
||
## Branch taxonomy
|
||
|
||
```mermaid
|
||
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.
|