Exercise PR #2261's macOS daemon stop/start/restart paths on a real macOS host
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript, macos
- Domain
- devops, testing-qa
Research direction
On a real macOS host with the daemon installed, run the five commands and scenarios in the issue, including the crash-loop throttle-gap case. Check the launchctl exit codes and report the launchd version; the acceptance criterion is that all five steps pass, or deviations are filed as daemon-stop bugs.
Written by the indexing model from the issue text.
Description
Source: #2261 at a1174334c96058bdfb57cd76ff86a93b3404934d (triage follow-up, not a review finding)
PR #2261 rewrote the macOS daemon stop path (launchctl bootout + bounded unload poll, preserved plist, supervision-gated stop, pid-proved start after a stop), but no macOS path in that PR has ever executed: the review environment had no macOS host, runDaemonStop keys off process.platform with no override, and the sandbox's mock launchctl is unreachable from a Linux run. Linux was exercised live end-to-end in scripts/sandbox/hyp-sandbox; macOS rests on launchd's documented exit codes, the adapter seam, and unit tests that drive those codes through our code (proving we read them correctly, not that launchd emits them).
The release checklist's manual macOS gate (hypaware status, daemon restart, daemon uninstall) does not cover daemon stop, so nothing currently forces this before a tag.
What to run on a real macOS host
With the daemon installed:
hyp daemon stop- expectdaemon: stopped, exit 0, and the daemon still down well past launchd's throttle (10s+).launchctl print gui/$UID/com.hyperparam.hypawareshould exit 113; the plist stays in~/Library/LaunchAgents.hyp status- expectoverall: healthywith a warning naming the unloaded LaunchAgent and repairhyp daemon start(notdegraded/ "nothing is being captured", and nothyp daemon install).hyp daemon start- expect success with a real pid (this arm bootstraps and must survive the RunAtLoad kickstart race: launchd may answer kickstart with3: No such process/Operation already in progress).hyp daemon stopthenhyp daemon restart- expect a healthy daemon with a new pid.- For the supervision gate (round 2 finding A): make the daemon crash-loop (e.g. break its config), then
hyp daemon stopduring the throttle gap whilelaunchctl printshows the job held with no pid - expect a real stop, notdaemon: not runningfollowed by a respawn.
Specifically confirm launchd's answers match what the code assumes: bootout returning 36: Operation now in progress or 3: No such process on a successful stop, print exit 113 once unloaded, and a bootstrapped label's initial spawn possibly left pended (#1036 shape).
Known test-double gap (context, not a separate task)
The sandbox mock systemctl keeps active: true with a live pid and never models a supervised unit with no MainPID, so finding A's crash-loop window is pinned only at the systemdUnitStatus unit-test seam on either platform. The launchctl fakes were extended in the PR to express the pended-spawn and non-zero-bootout states.
Acceptance
The five steps above pass on a real macOS host (report the launchd version), or the deviations are filed as bugs against the daemon stop path.
- Dominant language
- JavaScript
- Stars
- 11
- Forks
- 0
- Avg merge
- 2h 55m
- Merged PRs (30d)
- 294
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from hyparam/hypaware
-
neutral:fix
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
report_commands.js runtime output still says 'server' in four places; one names the destinationOpen
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 76/100
Maintainers usually reply within 1 day
All issues in hyparam/hypaware
Similar issues
-
good first issue
Difficulty 2/5 3-5 days Newbie friendliness 62/100
paipai1999/POS-system#3 ·
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
r-afael/better-yt-recommendations#36 ·
Maintainers usually reply within 1 day
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
microsoft/playwright#43875 · 1 comment ·
Maintainers usually reply within 1 day
-
cli good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Run the dependency drift checkPossibly taken @spaceninja claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 82/100
cloudfour/stylelint-config-cloudfour#683 ·
Maintainers usually reply within 1 day