M5 bugfixes — Stage 3 prompt stream, ProcessManager, profile/verification fixes (#50, #52) #53

Merged
gronod merged 1 commits from feat/52-m5-bugfixes into milestone/m5-profile 2026-09-09 14:21:44 +01:00
Owner

Summary

Consolidated M5 bugfix branch covering the #50 Stage 3 prompt-stream fix and all selected #52 fixes.

What's included

  • ProcessManager hardening
    • Set streaming termination/readability handlers before process.run() so fast exits are not missed.
    • Rework runCaptured with a locked Box hand-off to avoid race with withCheckedContinuation.
    • Close parent stdout/stderr pipe write-ends after spawn so readDataToEndOfFile() reaches EOF and runCaptured cannot hang on quiet output (fixes the M3 lp failure UI test).
  • Stage 3 / chartread
    • Forward chartread prompt lines to the UI event stream.
    • Fix ChartreadClassifier matcher ordering so errors are not misclassified as awaiting-strip.
    • Repair Stage 3 control matrix and button/state wiring.
    • Unskip and fix the M4 handheld fixture UI test.
  • M5 reliability
    • Profile installer overwrite, extension, stem-security and collision behaviour.
    • Verification history, drift alerts, restored profile URLs, printer-name normalization, Stage 5 warning/drift display.
    • applycal guard preventing UI from passing an unapply operation.
    • Quit-time killAll on app termination.

Verification

xcodebuild test -scheme ICCery -destination 'platform=macOS' ARCHS='arm64 x86_64' ONLY_ACTIVE_ARCH=NO

Result: 20 UI tests passed, 0 failures; Core suite passed. Sidecar codesign -dvv verified.

Branches

  • Head: feat/52-m5-bugfixes
  • Base: milestone/m5-profile

Refs #50 #52

## Summary Consolidated M5 bugfix branch covering the #50 Stage 3 prompt-stream fix and all selected #52 fixes. ### What's included - **ProcessManager hardening** - Set streaming termination/readability handlers before `process.run()` so fast exits are not missed. - Rework `runCaptured` with a locked `Box` hand-off to avoid race with `withCheckedContinuation`. - Close parent stdout/stderr pipe write-ends after spawn so `readDataToEndOfFile()` reaches EOF and `runCaptured` cannot hang on quiet output (fixes the M3 `lp` failure UI test). - **Stage 3 / chartread** - Forward `chartread` prompt lines to the UI event stream. - Fix `ChartreadClassifier` matcher ordering so errors are not misclassified as `awaiting-strip`. - Repair Stage 3 control matrix and button/state wiring. - Unskip and fix the M4 handheld fixture UI test. - **M5 reliability** - Profile installer overwrite, extension, stem-security and collision behaviour. - Verification history, drift alerts, restored profile URLs, printer-name normalization, Stage 5 warning/drift display. - `applycal` guard preventing UI from passing an unapply operation. - Quit-time `killAll` on app termination. ### Verification ```bash xcodebuild test -scheme ICCery -destination 'platform=macOS' ARCHS='arm64 x86_64' ONLY_ACTIVE_ARCH=NO ``` Result: **20 UI tests passed, 0 failures; Core suite passed.** Sidecar `codesign -dvv` verified. ### Branches - Head: `feat/52-m5-bugfixes` - Base: `milestone/m5-profile` Refs #50 #52
gronod added the
Priority
High
2
Project/ICCery-v2Bug/BackendBug/UI
labels 2026-09-09 14:21:36 +01:00
gronod added 1 commit 2026-09-09 14:21:37 +01:00
Hardens ProcessManager finalisation, ensures stdout/stderr pipe write-ends
close after spawn, sets termination handlers before run(), and fixes the
runCaptured continuation hand-off for fast exits. Resolves the Stage 3
prompt stream being dropped and the handheld fixture UI not advancing,
unskips and repairs the handheld UI test, and fixes averaging panel
accessibility. Includes the selected #52 profile, verification, and
artefact-gating fixes.

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
gronod merged commit 460b0a1ffa into milestone/m5-profile 2026-09-09 14:21:44 +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#53