Skip to content

test(macos): live lifecycle through the guest desktop, plus the bugs it found - #78

Merged
ealtun21 merged 2 commits into
masterfrom
test/macos-lifecycle-live
Oct 12, 2026
Merged

ealtun21 merged 2 commits into
masterfrom
test/macos-lifecycle-live

Conversation

@ealtun21

Copy link
Copy Markdown
Owner

What

Live lifecycle testing of the macOS product by driving the quickemu guest's desktop, the product bugs it found, and the tooling to repeat it.

  • contrib/e2e/macos/vmctl.sh + vmgui.py: host-side QMP screendump, keys, text and mouse; ssh; lifecycle/gui-run.sh runs commands inside the logged-in GUI session through a throwaway LaunchAgent. Technique documented in contrib/e2e/macos/README.md.
  • contrib/e2e/macos/lifecycle/lifecycle.sh (+ vmctl.sh lifecycle): install, launchd agent, resonance verify through the live tap, kill -9 recovery, stop/start, rate changes, pinned output with the OS default moved, upgrade over a running daemon, uninstall cleanliness. Not in the quick tier (needs a ~12 min release build and a granted identity). Last run: all 24 checks pass.
  • Findings with evidence: docs/superpowers/specs/2026-10-06-e2e-audio-test-infra-design.md section 18.

Fixes

  1. Pinned output + OS default change left the tap on the old device, so the EQ silently stopped (levels in -inf measured; unpinned followed). The supervisor now rebinds the tap. Unit test + lifecycle step.
  2. macOS tray template icon rendered as a solid black square (opaque tile alpha); alpha now from the glyph. Unit test (runs on Linux CI).
  3. False "refusing system audio capture" warning on an idle system after ALLOWED.
  4. HAL tap IOProc info line every 2 s into an unrotated launchd log (~10 MB/day) is now debug.

Not fixed (see section 18)

  • Release builds are ad-hoc signed (from release.yml); an ad-hoc re-sign of an installed build re-raised both consent dialogs and blocked the tap until answered (measured). Needs a stable signing identity for releases.
  • State is not restored after a daemon crash/restart unless an output is mapped to a profile (measured: preamp, effect and pinned output reset).
  • The egui GUI cannot run in the VM (no Metal adapter), so it was not driven; the tray menu was. Closes the macOS live part of verify: run the harness live on macOS (afplay + tap path untested) #42 for the Intel VM, not for Apple silicon hardware.

Verification

  • make check on Linux: green.
  • Guest: clippy -D warnings on daemon + tray, the new daemon test, and the full lifecycle matrix on a cert-signed release build (kill -9 back in 0.26 s, rate changes 44.1/96/48 kHz verify PASS, EQ +6 dB/-5 dB shelf within 0.00 dB of prediction).

🤖 Generated with Claude Code

ealtun21 and others added 2 commits October 12, 2026 09:09
…ed output, draw the tray template from the glyph, quiet the tap diagnostics

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rix live

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@ealtun21
ealtun21 merged commit 99c7ff3 into master Oct 12, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant