Skip to content

Add scoped attach-only runner grants and drain-confirmed desktop handoff - #4491

Merged
Jason Morse (JasonVMo) merged 23 commits into
mainfrom
user/jasonvmo/desktop-runner-handoff
Nov 13, 2026
Merged

Jason Morse (JasonVMo) merged 23 commits into
mainfrom
user/jasonvmo/desktop-runner-handoff

Conversation

@JasonVMo

@JasonVMo Jason Morse (JasonVMo) commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Platforms Impacted

  • iOS
  • macOS
  • win32 (Office)
  • windows
  • android

Description of changes

Part of #4448.

  • Add generic attach-only MCP/WDIO handoff: bounded busy by default, explicit relinquish or operator-authorized preemption, and an exclusive runner reservation only after cancellation, settlement, and session deletion.
  • Reuse live grant capacity with bounded settled history, never evict pending/failed cleanup proof, and issue no runner grant on busy/failed admission. Shared descriptor/workload holders require relinquish instead of whole-subtree preemption.
  • Drain parent-owned worker grants on normal exit, crash, and lost acquisition response. Reopen preempted MCP controllers with fresh child authority; old references, cursors, proofs, and artifact links remain invalid.
  • Pass worker credentials individually through runnerEnv and scrub broker/worker environment variables before hook imports, specs, and their children. Node bootstrap/preloads remain trusted during the initial fork-environment window.

Preserves the runner-owned CSF borrowed-session exception. Does not implement Storybook/F9 integration, F10 retained launches, cross-connection resume, or replay. Includes owning guidance/status and patch changesets for all three packages. No native protocol, claim schema, export-map, or root-tsconfig changes. The client also accepts an optional session-create abort signal for late-acquisition cancellation.

Verification

Ready for review: all 19 refreshed hosted checks passed on 7c95c6b6050e8a1cea1e2286b7582611735508f1, including the JS aggregate and macOS/Windows/Win32 lanes. Positive macOS generic attach-only handoff passed 5/5 with zero skips, independently of the preserved Windows native/input results below. The local plain aggregate still failed on the unchanged boundedCommand SIGKILL/SIGTERM assertion; that failure is retained, not relabeled by native/focused passes. Hosted CI provides separate acceptance evidence. The explicitly deferred Storybook/F9 and F10 scopes are not claimed complete.

Rebased macOS qualification - 2026-11-12:

Native-qualified source 5dbadb53b10cd81ccf1e15739e213f0046d93323; final
ledger-only head 7c95c6b6050e8a1cea1e2286b7582611735508f1, rebased onto
main 041ac8b9894aeaa7e1aa273baa2ece4e46298b94. All fourteen Windows
additions are patch-equivalent after rebase. Only appended F6/F11 ledger
sections conflicted; both were preserved. No production behavior changed.

The native host was a stable-signed plain AppKit fixture on macOS arm64,
not a React Native renderer. Noninteractive doctor reported
Accessibility/PostEvent/ScreenCapture true, an unlocked console, and no
permission prompt. All native and aggregate commands used the shared
exclusive lock.

Exact command Result
yarn install --immutable Passed
yarn workspace @fluentui-react-native/desktop-driver exec desktop-driver doctor --platform macos --permissions --json Passed; all permission preflights true
FURN_NATIVE_DRIVER_TEST=1 FURN_NATIVE_HANDOFF_APP_PATH="$PWD/artifacts/desktop/f11/application-fixture/FurnOwnershipFixture.app" yarn workspace @fluentui-react-native/desktop-test test nativeRunner.contract --runInBand Passed: 5/5, zero skips; handoff, operator preemption, worker crash, lost successful grant response, and target capture
FURN_NATIVE_DRIVER_TEST=1 yarn workspace @fluentui-react-native/desktop-driver test serviceIdentity.contract applicationIncarnation.contract nativeDriver --runInBand Passed: 28; skipped 15 Windows cases; includes a portable built-ESM regression
yarn workspace @fluentui-react-native/desktop-driver test --runInBand Passed: 1,235; skipped 66
yarn workspace @fluentui-react-native/desktop-test test --runInBand Passed: 402; skipped 6
yarn workspace @fluentui-react-native/desktop-driver-mcp test --runInBand Passed: 32
Each of the three workspaces' format, lint, and build commands Passed
yarn lage test-links --verbose --grouped Passed: 90 tasks
yarn check-agent-instructions; git diff --check Passed
yarn clean-lage-cache && yarn lage buildci, followed by yarn lage buildci after correcting documentation links Failed: initial guidance-link errors corrected; subsequent aggregate failed boundedCommand (expected SIGKILL, received SIGTERM) and a private-storage timeout
One unchanged yarn lage buildci repeat Failed: same boundedCommand assertion; private storage passed
yarn workspace @fluentui-react-native/desktop-driver test boundedCommand privateStorage --runInBand Passed: 73; skipped 10; diagnostic only, not aggregate acceptance

All four non-crash modes passed both real WDIO/Jasmine ownership and
accessibility-input specs with zero skips. Worker crash deliberately produced
a failed inner run; its outer drain/reuse contract passed. Every case
confirmed descriptor withdrawal, claim release, preservation of the external
fixture through service shutdown, and owner-only fixture exit. Final locked
cleanup audit found no owned processes or retained claims/descriptors.

The aggregate used inherited defaults without TF_BUILD, TMPDIR, concurrency,
or test-deadline workarounds. The failing tests and implementations are
byte-identical to pinned main; this run did not perform a new main-baseline
reproduction. Earlier failed attempts remain recorded. Storybook/F9 handoff,
F10 retained launches, and physical pointer/keyboard qualification are outside
this generic handoff gate.

Earlier macOS verification (preserved; Windows follow-up is below):

All driver/harness full suites and native/aggregate commands used the shared exclusive native lock. Native opt-ins were unset for portable runs. Focused review tests used the untouched default TMPDIR; full suites/aggregate used project-local scratch with matching GIT_CEILING_DIRECTORIES.

Exact package commands Result
yarn workspace @fluentui-react-native/desktop-driver format
yarn workspace @fluentui-react-native/desktop-driver lint
yarn workspace @fluentui-react-native/desktop-driver build
Each passed
yarn workspace @fluentui-react-native/desktop-driver test --runInBand 1,233 passed; 66 skipped
yarn workspace @fluentui-react-native/desktop-test format
yarn workspace @fluentui-react-native/desktop-test lint
yarn workspace @fluentui-react-native/desktop-test build
Each passed
yarn workspace @fluentui-react-native/desktop-test test --runInBand 382 passed; two skipped
yarn workspace @fluentui-react-native/desktop-driver-mcp format
yarn workspace @fluentui-react-native/desktop-driver-mcp lint
yarn workspace @fluentui-react-native/desktop-driver-mcp build
Each passed
yarn workspace @fluentui-react-native/desktop-driver-mcp test --runInBand 32 passed

Default-TMPDIR review regressions:

  • yarn workspace @fluentui-react-native/desktop-driver test 'authority/(grants|delegation)|server/(runnerHandoff|delegation)' --runInBand — 51 passed, including 4,101 drained delegation cycles, retained pending-descendant proof, no issuance on busy/failure, and protected shared holders.
  • yarn workspace @fluentui-react-native/desktop-driver-mcp test server --runInBand — 31 passed, including preempt → runner drain → fresh MCP child and stale-resource rejection.
  • yarn workspace @fluentui-react-native/desktop-test test runner --runInBand — two passed, one native opt-in skipped; actual WDIO handoff/crash/lost-response and hook/spec-child credential probes.
Exact repository command Result
yarn lage test-links --verbose --grouped Passed: 90 tasks
yarn lint-repo Passed
yarn clean-lage-cache Passed
TF_BUILD=1 yarn lage buildci --concurrency 4 Passed: all 178 tasks; 2m 2.60s

Historical native evidence, superseded only where covered by the rebased qualification above:

  • FURN_NATIVE_DRIVER_TEST=1 yarn workspace @fluentui-react-native/desktop-driver test serviceIdentity.contract applicationIncarnation.contract nativeDriver --runInBand — 27 passed; 15 Windows cases skipped.
  • FURN_NATIVE_DRIVER_TEST=1 FURN_NATIVE_HANDOFF_APP_PATH=<signed-fixture> yarn workspace @fluentui-react-native/desktop-test test nativeRunner.contract --runInBand — failed/environment-blocked before session creation, no supported click input mode. Doctor: Accessibility/PostEvent false, ScreenCapture true. Native worker-crash scenario not run. One stale-fixture readiness failure preceded the corrected-fixture attempt; no privacy changes were made.

Cleanup preserved the external fixture through service shutdown, removed both descriptors, released the claim, then stopped only the test's exact spawned process. Earlier unlocked CLI claim collisions passed on locked retry and the complete locked rerun. Earlier formatting/Git-fixture isolation failures were corrected without baseline source changes. Detailed history is in the owning current-status references; local evidence is under artifacts/desktop/f11/{qualification,review}/ and native-handoff-*/evidence.json.

Before After
Exchanging MCP and standalone WDIO control required service restart. Generic attached apps reuse the listener only after confirmed drain; reservations prevent overlap, including between workers.
Long-lived services could exhaust a lifetime grant budget and preempted MCP bindings stayed revoked. Settled drains restore bounded capacity; preempted MCP opens with a fresh child. Generic macOS and Windows native fixture gates pass; Storybook/F9 handoff remains outside this PR.

Windows qualification — 2026-11-12 (source b1bbb26df, evidence 11820d633):

Part of #4441. Part of #4435. The F11 scope remains Part of #4448.

  • Historical Ctrl+C regression: the borrowed-scope fixture reproduces the old Storybook composition. With the exact pre-Fix desktop CLI errors, shutdown hangs, and run verdicts #4478 cli.ts/services.ts (586e4c385^, f14e2542d), it hangs for 15 seconds after its resource settles: active claim, borrowed close pending, nonterminal incomplete report. The byte-identical fixture passes on the branch: borrowed close settles, claim releases, terminal report, natural exit 0. The runtime repair came from Fix desktop CLI errors, shutdown hangs, and run verdicts #4478; this adds regression proof, not another runtime fix. These semantic tests are distinct from the physical qualification below.
  • Windows nativeRunner and input: the plain Win32 fixture covers handoff, operator preemption, worker crash, lost successful runner-grant response and optional capture, preserving the macOS path. With FURN_NATIVE_DRIVER_TEST=1 and FURN_NATIVE_HANDOFF_APP_PATH=<verified-fixture>, locked yarn workspace @fluentui-react-native/desktop-test test nativeRunner.contract --runInBand passed 5/5, zero skips, including real target capture. All four non-crash modes executed both inner ownership/accessibility-input specs: 2 executed, 2 passed, zero skipped each. Worker crash deliberately produces a terminal failed inner run; its outer drain/reuse/cleanup contract passed. Every case released its claim, withdrew both descriptors, preserved the attached fixture through service shutdown, then ended only its own fixture. This qualifies generic native ownership, not a React Native renderer or Storybook/F9 runner handoff.
  • Native identity/backend recheck: with FURN_NATIVE_DRIVER_TEST=1, locked yarn workspace @fluentui-react-native/desktop-driver test serviceIdentity.contract applicationIncarnation.contract nativeDriver --runInBand passed 24, skipped 19 macOS-only cases. Explicit helper build/doctor and built ESM fixture provisioning passed. The selection includes the portable built-import regression, not 24 purely native cases.
  • Real physical console Ctrl+C: both Windows Fabric packaged app (run 75c40800-571c-4d8f-9fa1-debf876f0664) and Win32 Paper REX (9a5c618f-d54d-4599-b36f-e3fd5b5436b9) passed with an active unlocked RDP session (sessionKind: remote). Inside the W1 campaign and with-native-lock.ps1 -Lane W1 -RequirePhysical, the real app's desktop-test serve --agent first completed authenticated Button story/native-marker selection and native MCP observation. MCP was closed before interrupting the still-running service. An isolated visible console was verified foreground, then received four real SendInput key events (Ctrl down/C down/C up/Ctrl up); the observer received console SIGINT. No GenerateConsoleCtrlEvent or injected Node signal was used. Exact CLI/Yarn/observer exits were 0/0/0; run.json became terminal passed, claims released, descriptors withdrew, and no owned service/app survived. The attached apps were preserved through service cleanup, then their recorded launchers closed them. Fabric reused the registered native build only after identity/source equivalence checks; Paper used a serving-instance/manifest-matched fresh bundle and prebuilt REX. Two earlier Fabric setup attempts were Not run for Ctrl+C, then resolved with declared prep and explicit registered identity.
  • Hosted corrections, not flakes: workflow 43279226602 initially failed before nativeRunner on extensionless ESM imports/__dirname; the ordinary-Node regression proved the provisioning repair red/green. Workflow 43284867711 then executed both native consumers (Windows 131415841258, Win32 accessible 131415842551): handoff, preemption and crash recovery passed, but lost-response failed before WDIO on a raw-message expectation. Source b1bbb26df shares the actual successful-response loss with the portable HTTP runner and asserts the typed transport error's exact original cause instead. That regression was red before/green after and the repaired native lost-response case passed above. Full portable desktop-test: 396 passed / 12 skipped. No flake rerun was used.
  • Hosted execution gate: Windows Storybook PR and Win32 Storybook PR (accessible) select all four ownership cases. The action also requires handoff/preemption/lost-response each to execute/pass both inner specs, zero skips, with accessibilityClick: passed; an outer Jest pass alone is insufficient. Hosted capture is policy-skipped. Corrected-head workflow 43297198219 passed both selected jobs: Windows Storybook PR 131458546719 and Win32 Storybook PR (accessible) 131458546805. Downloaded artifacts prove 4 ownership cases passed / 1 capture-policy skip / 0 failures in each job. Handoff, operator-preempt and lost-response each executed/passed both inner specs (2/2/0 skipped), with accessibilityClick: passed; worker-crash recovery passed around its deliberately failed inner run. All four modes in each job confirmed claim release, descriptor withdrawal, exact fixture exit and cleanup. The checkout receipt is merge SHA c174b6797, corresponding to branch head 2bf750f9e. No flake rerun was used. Full hosted driver selection in the Windows job also passed 1,255 / 45 skips. The complete workflow finished successfully, with zero failed jobs. Windows native/input jobs 131458546719 and 131458546805 both passed on the first attempt; no flake rerun was used. This hosted success does not erase the separately disclosed local default-aggregate readiness failure.
  • Portable acceptance — follow-up: the final locked default-environment cmd.exe /d /c "yarn clean-lage-cache && yarn lage buildci" passed all 178 tasks, zero failed, at source 2bf750f9e (20:52:21–20:55:29 UTC). TEMP/TMP/TMPDIR and concurrency stayed at inherited defaults; no native opt-in, Git-ceiling, Lage pool, source or test-timeout workaround was used. The three earlier readiness failures remain disclosed above/in the owning ledger. A fresh detached main baseline (505a2187b) first failed a different driver cancellation/reuse assertion (unique expected, inconclusive received), then its unchanged default repeat passed 178. The first baseline left Storybook incomplete, so no same-readiness reproduction on main is claimed. Persistent-state inventory found no live descriptors, claims or generated leases; verified native APIs matched the two own campaign epochs to their exact exited application incarnations and compare-and-removed only those records, retaining eleven unrelated records. No app, firewall or loopback setting was changed. Scratch worktree removed; final broad process audit passed, no FURN processes found. Exact earlier readiness-failure causality remains unproven: 96% aggregate CPU load supports a timing inference, not proof that deleting recovery records repaired it. No unrelated runtime change was made. Follow-up receipts: artifacts\desktop\f11\w1-buildci-followup. The exact ledger-only publication head 11820d633 was independently rechecked at 21:01:37–21:04:42 UTC: 178 tasks passed, zero failed, again with inherited default TEMP/concurrency and no overrides; its final audit also passed.

Owning Windows ledgers contain exact commands, IDs and boundaries. Receipts are retained under artifacts/desktop/f11/w1-native; app reports are under apps/storybook/artifacts/desktop/<run-id>. These Windows results do not substitute for macOS coverage; the independent rebased macOS qualification is recorded above. Refreshed CI and the disclosed local aggregate failure remain part of the coordinator's readiness decision.

Pull request checklist

This PR has considered (when applicable):

  • Automated Tests
  • Documentation and examples
  • Keyboard Accessibility
  • Voiceover
  • Internationalization and Right-to-left Layouts

@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Bundle size report

Tree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.

Scenario Modules-Mac (Δ) Modules-Win (Δ) Size-Mac (Δ) Size-Win (Δ)
components-button 79 (+1) 80 (+1) 72.92k (-702b) 72.85k (-702b)
components-catalog 228 (+1) 229 (+1) 229.66k (+349b) 229.59k (+349b)
design-themed-root 55 (+4) 56 (+4) 56.26k (+998b) 56.18k (+998b)
design-color-lib 6 (+0) 6 (+0) 6.27k (+0b) 6.27k (+0b)
design-theme-state-legacy-source 49 (+1) 50 (+1) 52.96k (-841b) 52.89k (-841b)
design-legacy-theme 42 (+0) 42 (+0) 39.11k (+0b) 42.91k (+0b)
design-legacy-theme-from-flex 58 (+4) 58 (+4) 60.70k (+824b) 64.51k (+822b)
design-fluent-light-theme 7 (+0) 7 (+0) 18.74k (+0b) 22.59k (+0b)
design-fluent-theme 35 (+0) 35 (+0) 27.46k (+4b) 31.25k (-1b)
design-fluent-hc-theme 32 (+0) 32 (+0) 27.34k (+0b) 31.13k (+0b)
design-flex-theme 29 (-4) 29 (-4) 14.30k (-9.07k) 14.29k (-9.07k)
design-flex-cool-theme 26 (New) 26 (New) 12.51k (New) 12.50k (New)
design-flex-warm-theme 26 (-7) 26 (-7) 12.28k (-11.15k) 12.27k (-11.15k)

The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail.


View bundle-size workflow run

@JasonVMo

Copy link
Copy Markdown
Contributor Author

CI diagnosis for 23f974a72 (macOS coordinator; I'm not pushing to this branch, since W1 owns it)

The previous head 04d8d8b13 was green; this head fails Windows Storybook PR and Win32 Storybook PR (accessible). Both fail at the new Provision Windows native runner fixture step in .github/actions/setup-desktop-driver/action.yml:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '…\packages\agentic\desktop-driver\lib\hosts\native\NativeDesktopHost'
imported from …\lib\native\windows\win32FixtureSupport.js

The step loads the compiled lib/native/windows/win32FixtureSupport.js with plain Node ESM. That test-support module uses extensionless relative imports, which resolve under Jest but not under Node ESM. Production modules already use explicit .js specifiers, and the four modules it loads at runtime (hosts/native/NativeDesktopHost.js, native/filesystem.js, native/nativeDriver.js, native/windows/buildWindowsDriver.js) have no extensionless relative imports.

Suggested fix: in packages/agentic/desktop-driver/src/native/windows/win32FixtureSupport.ts, add .js to the runtime imports on lines 8, 10, 11 and 14 ('../../hosts/native/NativeDesktopHost.js', '../filesystem.js', '../nativeDriver.js', './buildWindowsDriver.js'). The type-only imports could match for consistency. Then rerun the fixture step's import on Windows before pushing.

@JasonVMo

Copy link
Copy Markdown
Contributor Author

Coordinator: the user has explicitly requested rebasing the conflicted PRs onto current main and completing qualification. I am taking the rebase/qualification pass for this branch from 11820d6, preserving all Windows additions. Please hold concurrent pushes during this pass. Publication will use the original exact lease; any remote advance will stop the push for reconciliation. No PR merge is authorized.

Jason Morse (JasonVMo) and others added 23 commits November 12, 2026 22:21
Keep the existing service and workload claim while MCP explicitly relinquishes or an authorized operator preempts. Fence admission until prior work and leases drain, reserve the target across WDIO workers, and revoke/drain crashed-worker grants from their parent.

Part of #4448. Storybook integration and retained launched applications remain separate phases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicitly provisioned AppKit fixture, real native identity verification, MCP SDK, and standalone WDIO. Retain scoped evidence for busy admission, relinquish, stale resources, crashed worker drain, credential confinement, and exact external-app preservation. Native scenarios remain opt-in and unsupported endpoints are not counted as passes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bound settled grant history without evicting pending cleanup, reserve before issuance, and protect shared descriptor holders. Recover rejected MCP child bindings and isolate WDIO worker credentials before hooks, specs, and child processes run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record default-TMPDIR regressions, complete locked package suites, credential inheritance coverage, and the passing clean-cache 178-task aggregate. Retain the native Accessibility block and Windows qualification gap without repeating the blocked contract.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record Windows Fabric and Win32 Paper handoff evidence and the remaining Windows native consumer CI coverage gap. No implementation changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Cover protected agent-serve shutdown, repeated interrupts, failed cleanup fencing and child-first failure. Enable the native MCP/WDIO consumer on Windows with explicit Win32 readiness, preemption, crash and lost-response cases, capability gates and hosted CI selection. The historical Ctrl+C self-wait repair is already present; the new baseline regression passes without another runtime change. Part of #4441, #4448 and #4435.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Prove the historical borrowed-scope Ctrl+C self-wait, preserve optional macOS capture, bound native-case cleanup with exact-owner descriptor recovery, and require inner accessibility execution in Windows CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
This reverts commit d94c878.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
This reverts commit 8cbead3.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Use Node ESM specifiers and the existing package-root anchor in the test-only Win32 fixture support module. Reproduce the hosted setup failure with a portable built-module import regression before repairing it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
…alidation

Keep nativeRunner and accessibility-input coverage explicitly not run for the original failed hosted jobs. Record the portable red/green repair and fresh 178-task default-environment acceptance separately from pending native and physical qualification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Share the successful-response loss fault between portable and native consumers. Verify the typed transport error and exact injected cause while preserving busy fencing, cleanup and fresh-session assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Record all native consumer modes, identity contracts, both physical Ctrl+C endpoints, and final process cleanup. Disclose the repeated default aggregate readiness failure separately from passing native and owning-package evidence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Record controlled main baseline, ownership-safe campaign-state audit, and the final unchanged-default 178-task head pass without overclaiming the readiness failure cause.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3be5f341-831b-40d4-9582-337c8ea65709
Preserve Windows and F6 receipts, record the five positive native handoff modes and disclose default aggregate failures without unrelated test workarounds.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@JasonVMo

Copy link
Copy Markdown
Contributor Author

Rebase published at 7c95c6b onto main 041ac8b with the exact original lease. All fourteen Windows additions are patch-equivalent; Windows fixture/provisioning code and historical evidence are preserved. The real macOS native handoff gate now passed 5/5 with zero skips, including preemption, worker crash, lost response and capture, with exact cleanup confirmed. PR verification has the commands and boundaries. Local plain aggregate still hit the unchanged boundedCommand SIGKILL/SIGTERM assertion; that is disclosed, not counted as passed. Refreshed CI is running and the PR remains draft pending the readiness decision.

@JasonVMo

Copy link
Copy Markdown
Contributor Author

Coordinator rebase complete at 7c95c6b on main041ac8b98. All Windows additions were preserved; only evidence-ledger append conflicts required resolution. Real signed macOS nativeRunner qualification passed5/5 with zero skips, and the known failed plain local aggregate remains disclosed in the body. Fresh CI is still being monitored. The temporary publication hold is released: reconcile any Windows local branch to the published rewrite before another push. No merge or auto-merge was enabled.

@JasonVMo
Jason Morse (JasonVMo) marked this pull request as ready for review November 12, 2026 23:35
@JasonVMo
Jason Morse (JasonVMo) merged commit f2a3037 into main Nov 13, 2026
19 checks passed
@JasonVMo
Jason Morse (JasonVMo) deleted the user/jasonvmo/desktop-runner-handoff branch November 13, 2026 06:52
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.

2 participants