Repository navigation
Add scoped attach-only runner grants and drain-confirmed desktop handoff - #4491
Conversation
Bundle size reportTree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.
The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail. |
|
CI diagnosis for The previous head The step loads the compiled Suggested fix: in |
|
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. |
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>
11820d6 to
7c95c6b
Compare
|
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. |
|
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. |
Platforms Impacted
Description of changes
Part of #4448.
runnerEnvand 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 unchangedboundedCommandSIGKILL/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; finalledger-only head
7c95c6b6050e8a1cea1e2286b7582611735508f1, rebased ontomain
041ac8b9894aeaa7e1aa273baa2ece4e46298b94. All fourteen Windowsadditions 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.
yarn install --immutableyarn workspace @fluentui-react-native/desktop-driver exec desktop-driver doctor --platform macos --permissions --jsonFURN_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 --runInBandFURN_NATIVE_DRIVER_TEST=1 yarn workspace @fluentui-react-native/desktop-driver test serviceIdentity.contract applicationIncarnation.contract nativeDriver --runInBandyarn workspace @fluentui-react-native/desktop-driver test --runInBandyarn workspace @fluentui-react-native/desktop-test test --runInBandyarn workspace @fluentui-react-native/desktop-driver-mcp test --runInBandformat,lint, andbuildcommandsyarn lage test-links --verbose --groupedyarn check-agent-instructions;git diff --checkyarn clean-lage-cache && yarn lage buildci, followed byyarn lage buildciafter correcting documentation linksboundedCommand(expected SIGKILL, received SIGTERM) and a private-storage timeoutyarn lage buildcirepeatboundedCommandassertion; private storage passedyarn workspace @fluentui-react-native/desktop-driver test boundedCommand privateStorage --runInBandAll 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 matchingGIT_CEILING_DIRECTORIES.yarn workspace @fluentui-react-native/desktop-driver formatyarn workspace @fluentui-react-native/desktop-driver lintyarn workspace @fluentui-react-native/desktop-driver buildyarn workspace @fluentui-react-native/desktop-driver test --runInBandyarn workspace @fluentui-react-native/desktop-test formatyarn workspace @fluentui-react-native/desktop-test lintyarn workspace @fluentui-react-native/desktop-test buildyarn workspace @fluentui-react-native/desktop-test test --runInBandyarn workspace @fluentui-react-native/desktop-driver-mcp formatyarn workspace @fluentui-react-native/desktop-driver-mcp lintyarn workspace @fluentui-react-native/desktop-driver-mcp buildyarn workspace @fluentui-react-native/desktop-driver-mcp test --runInBandDefault-
TMPDIRreview 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.yarn lage test-links --verbose --groupedyarn lint-repoyarn clean-lage-cacheTF_BUILD=1 yarn lage buildci --concurrency 4Historical 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}/andnative-handoff-*/evidence.json.Windows qualification — 2026-11-12 (source
b1bbb26df, evidence11820d633):Part of #4441. Part of #4435. The F11 scope remains Part of #4448.
cli.ts/services.ts(586e4c385^,f14e2542d), it hangs for 15 seconds after its resource settles: active claim, borrowed close pending, nonterminalincompletereport. 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.FURN_NATIVE_DRIVER_TEST=1andFURN_NATIVE_HANDOFF_APP_PATH=<verified-fixture>, lockedyarn workspace @fluentui-react-native/desktop-test test nativeRunner.contract --runInBandpassed 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.FURN_NATIVE_DRIVER_TEST=1, lockedyarn workspace @fluentui-react-native/desktop-driver test serviceIdentity.contract applicationIncarnation.contract nativeDriver --runInBandpassed 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.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 andwith-native-lock.ps1 -Lane W1 -RequirePhysical, the real app'sdesktop-test serve --agentfirst 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 realSendInputkey events (Ctrl down/C down/C up/Ctrl up); the observer received consoleSIGINT. NoGenerateConsoleCtrlEventor injected Node signal was used. Exact CLI/Yarn/observer exits were 0/0/0;run.jsonbecame terminalpassed, 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.43279226602initially failed before nativeRunner on extensionless ESM imports/__dirname; the ordinary-Node regression proved the provisioning repair red/green. Workflow43284867711then executed both native consumers (Windows131415841258, Win32 accessible131415842551): handoff, preemption and crash recovery passed, but lost-response failed before WDIO on a raw-message expectation. Sourceb1bbb26dfshares 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.accessibilityClick: passed; an outer Jest pass alone is insufficient. Hosted capture is policy-skipped. Corrected-head workflow43297198219passed both selected jobs: Windows Storybook PR131458546719and 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), withaccessibilityClick: 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 SHAc174b6797, corresponding to branch head2bf750f9e. 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 jobs131458546719and131458546805both passed on the first attempt; no flake rerun was used. This hosted success does not erase the separately disclosed local default-aggregate readiness failure.cmd.exe /d /c "yarn clean-lage-cache && yarn lage buildci"passed all 178 tasks, zero failed, at source2bf750f9e(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 (uniqueexpected,inconclusivereceived), 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 head11820d633was 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 underapps/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):