diff --git a/mseries/OS9-HANDOFF.md b/mseries/OS9-HANDOFF.md index 8c0856574..c0b62fe43 100644 --- a/mseries/OS9-HANDOFF.md +++ b/mseries/OS9-HANDOFF.md @@ -1,3 +1,13 @@ +## Dock launcher regression harness startup race — 2026-10-22 + +PR #518's validation run [39770268132](https://github.com/techmore/ElementaryOS_MSeries/actions/runs/39770268132) +exposed a test-only race: the SIGHUP case treated creation of the fake dock's PID file as proof that its contents had +been written. The harness now waits for a numeric PID and stops waiting if the wrapper exits. The focused launcher suite +passes 8/8 locally. No production launcher behavior, installed software, dock service, kernel, boot or hardware state +changed. PR #518 remains blocked on its separate source-preparation failure and base-branch conflict; wip4 has not been +built or staged. Next: land this harness fix after review, then refresh #518 against current `dev` and retry only when its +pinned-source preparation is viable. + ## Bounded Aurora CI dependency downloads — 2026-10-22 The unified72 check spent 47m17s fetching 144 MB from the Azure Ubuntu diff --git a/mseries/ROADMAP.md b/mseries/ROADMAP.md index 7e73f6e4d..2dbdc96a1 100644 --- a/mseries/ROADMAP.md +++ b/mseries/ROADMAP.md @@ -115,6 +115,14 @@ suspend and controlled power remain open. Read latest handoff before proceeding. # Roadmap, features and follow-ups (MacBook Pro 14" M1 Pro, elementary OS 9 on Asahi) +## Dock launcher regression harness startup race — 2026-10-22 + +The #518 PR validation run [39770268132](https://github.com/techmore/ElementaryOS_MSeries/actions/runs/39770268132) +found that the fake dock child PID file could exist before its contents were written. The SIGHUP test now waits for a +numeric PID and detects an early wrapper exit; the focused suite passes 8/8. This changes test synchronization only and +does not qualify the wip4 kernel candidate. PR #518 remains conflicted with `dev`, and its unified72 source preparation +needs a fresh successful pinned-source fetch before kernel build or payload inspection can run. + ## Factory speaker protection wired into ARM64 images — 2026-10-21 Ubuntu Resolute `speakersafetyd` 1.1.2-4 now ships in the Apple Silicon overlay, diff --git a/mseries/dock-tests/test-launcher.py b/mseries/dock-tests/test-launcher.py index 6ce9e78fb..cf49ce637 100644 --- a/mseries/dock-tests/test-launcher.py +++ b/mseries/dock-tests/test-launcher.py @@ -70,10 +70,21 @@ def cleanup(): process.wait() self.addCleanup(cleanup) deadline = time.monotonic() + 3 - while not self.child_pid.exists() and time.monotonic() < deadline: + child = None + while time.monotonic() < deadline: + if process.poll() is not None: + break + try: + value = self.child_pid.read_text().strip() + except FileNotFoundError: + value = '' + if value.isdecimal(): + child = int(value) + break time.sleep(.01) - self.assertTrue(self.child_pid.exists()) - return process, int(self.child_pid.read_text()) + self.assertIsNotNone(child, 'dock child did not publish a PID before timeout') + self.assertGreater(child, 0) + return process, child def test_user_disabled_blocks_patched_and_stock_fallback(self): marker = self.home / '.config/mseries/dock/user-disabled'