Milestone 8 — UAT-ready hardening and consolidation (#79–#86) #104

Merged
gronod merged 16 commits from milestone/m8-consolidation into develop 2026-09-11 17:10:25 +01:00
Owner

Milestone 8 — UAT-ready hardening and consolidation

Issue-by-issue completion matrix

Issue Summary Status
#79 Wizard flow hardening / step gating Closed
#80 ProcessManager lease & stdin lifecycle (#84-related) Closed
#81 Argyll argv flag discipline per tool Closed
#82 Artefact gating on disk, no placeholder basenames Closed
#83 Atomic writes (.tmp + rename) Closed
#84 Stdin handle independent of wait Closed
#85 killAll on terminate / last-window close Closed
#86 XY cancel: q\n, ~500 ms grace, then kill Closed

Local test gate (SHA 891a504)

  • ICCeryCoreTests: 339 pass / 0 fail
  • ICCeryUITests: 29 pass / 0 fail
  • Universal build: arm64 + x86_64, ONLY_ACTIVE_ARCH=NO, CODE_SIGNING_ALLOWED=YES

Ancillary commits retained

All milestone consolidation commits are retained on milestone/m8-consolidation; origin/develop is an ancestor, so no sync merge was required (Phase 9 ancestry verified).

Refs #79, Refs #80, Refs #81, Refs #82, Refs #83, Refs #84, Refs #85, Refs #86

## Milestone 8 — UAT-ready hardening and consolidation ### Issue-by-issue completion matrix | Issue | Summary | Status | |-------|---------|--------| | #79 | Wizard flow hardening / step gating | Closed | | #80 | ProcessManager lease & stdin lifecycle (#84-related) | Closed | | #81 | Argyll argv flag discipline per tool | Closed | | #82 | Artefact gating on disk, no placeholder basenames | Closed | | #83 | Atomic writes (.tmp + rename) | Closed | | #84 | Stdin handle independent of wait | Closed | | #85 | killAll on terminate / last-window close | Closed | | #86 | XY cancel: q\n, ~500 ms grace, then kill | Closed | ### Local test gate (SHA 891a504) - ICCeryCoreTests: **339 pass / 0 fail** - ICCeryUITests: **29 pass / 0 fail** - Universal build: arm64 + x86_64, ONLY_ACTIVE_ARCH=NO, CODE_SIGNING_ALLOWED=YES ### Ancillary commits retained All milestone consolidation commits are retained on `milestone/m8-consolidation`; `origin/develop` is an ancestor, so no sync merge was required (Phase 9 ancestry verified). Refs #79, Refs #80, Refs #81, Refs #82, Refs #83, Refs #84, Refs #85, Refs #86
gronod added 16 commits 2026-09-11 15:29:06 +01:00
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adopt ArgsBuilder helpers across the remaining argument generators while
preserving byte-identical argv and exact flag ordering:

- TargenArgs: optionUnlessApprox for -N/-V/-p, optionIfNonEmpty for -c,
  flag for -G, option for -A.
- PrinttargArgs: flag for -r, optionIfNonEmpty for -d and the dynamic
  -K/-I calibration value (CAL_ protection retained).
- PrintcalArgs: flag for -I/-z, optionIfNonEmpty for -a.
- ColprofArgs left explicit: FWA and "none" viewing-condition branches
  cannot be represented by the helpers without changing argv.

New ArgsBuilderTests cover nil/present/empty/whitespace/trim, epsilon
boundaries, POSIX formatting, and flag handling. Added whitespace-only
option cases for targen -c, printtarg -d/-K/-I, and printcal -a, plus
chartread row decode and unkeyed XYZ/Lab wire-encoding tests.

Refs #86

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Refs #79

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Refs #80

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
test(ui): activate app after launch in calibration UI tests
macOS CI / build-and-test (pull_request) Successful in 11m22s
macOS CI / package (pull_request) Skipped
891a504ee7
testCalibrationDashboardOpensAndCanGenerate failed in every full-suite
gate run while passing standalone: without an explicit activate() the
synthesized btnCalGenerate click was consumed by window activation when
focus sat on another app after the prior test app terminated. Matches
the launchApp() convention used by the other UI suites.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
gronod self-assigned this 2026-09-11 15:29:21 +01:00
gronod added this to the M7 — Deduplicate & consolidate (develop) milestone 2026-09-11 15:29:22 +01:00
gronod merged commit 09f433106d into develop 2026-09-11 17:10:25 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#104