Skip to content

ci(release): read the watcher child from the supervisor's slot in the fault harness - #27120

Merged
Jinwoo-H merged 1 commit into
mainfrom
Jinwoo-H/watcher-harness-slot-child
Oct 10, 2026
Merged

Jinwoo-H merged 1 commit into
mainfrom
Jinwoo-H/watcher-harness-slot-child

Conversation

@Jinwoo-H

@Jinwoo-H Jinwoo-H commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 0 0 0 0
Prod 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​8 $\color{#cf222e}{\Huge{\mathbf{−}}}$​3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​5

ELI5

The v1.4.224 release build failed a release-only check, even though nothing in the app was wrong. The check looked for the file watcher's helper process in a field that #24863 renamed, so it always concluded there was no helper. This points the check at the new field.

What Changed

config/scripts/runtime-file-watcher-fault-harness.mjs now reads the watcher child and its canary directory through supervisor.slot (added by #24863), falling back to the old fields for release tags that predate it. No product code changes.

Why

#24863 moved WatcherProcessSupervisor's child and canaryDir into a WatcherChildSlot. The harness still read supervisor.child, which is now always undefined, so the "Gate runtime file-watcher process isolation" step in release-cut.yml fails with "Watcher supervisor did not expose a live child". That step only runs in release cuts on Linux, so normal PR CI never caught it. Every release cut from a base that contains #24863 fails until this lands (v1.4.224 run 38019848007 failed on both Linux legs).

The fallback keeps the harness working on older tags, because release cuts run it from the tag's own checkout.

Linked Issue

N/A, found while cutting v1.4.224.

Visual Proof

N/A, test-harness change.

Testing

On the v1.4.224 release tree after pnpm run build:electron-vite (macOS; the harness skips only Windows):

  • Before: node config/scripts/runtime-file-watcher-fault-harness.mjs fails with "Watcher supervisor did not expose a live child", the same error as the release run.

  • After: passes under Node and under ELECTRON_RUN_AS_NODE=1 pnpm exec electron: the host survives SIGSEGV of the watcher child, a replacement child starts, and post-crash events are delivered.

  • The next gate, relay-watcher-fault-harness.mjs, also passes on that tree.

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below

AI Disclosure

Review

Agent skill upstream boundary

  • Not applicable, or this change follows docs/reference/agent-skill-sharing-upstream-boundary.md and copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

Release-gate harness only; no app, SSH, platform or mobile impact.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@coderabbitai

coderabbitai Bot commented Oct 10, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 84925b0f-7d6a-44fa-8fc3-ab9603775174

📥 Commits

Reviewing files that changed from the base of the PR and between 4ec973f and a3d12f3.


📒 Files selected for processing (1)
  • config/scripts/runtime-file-watcher-fault-harness.mjs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.



📝 Walkthrough

Walkthrough

The fault harness now reads the canary directory and child PIDs through a resolved watcher slot. It uses supervisor.slot when available and otherwise uses supervisor. The live-child check, SIGSEGV injection, and interruption wait remain unchanged.


Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to a3d12

The harness now supports both the current and legacy supervisor layouts, addressing the reported release-check failure. No material merge-blocking risk remains.

Pre-merge checks | Passed 4 | Failed 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: reading the watcher child from the supervisor slot in the fault harness.
Description check Passed The description covers the required explanation, change, rationale, testing, visual-proof exception, scope, and checklist. It also explains why no issue is linked and records the relevant validation. …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Jinwoo-H
Jinwoo-H merged commit 3563270 into main Oct 10, 2026
30 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