Repository navigation
Desktop driver: typed resources, process lifelines, story lifetimes, exclusive agent ingress, and native qualification runbook - #4463
Open
Jason Morse (JasonVMo) wants to merge 51 commits into
Conversation
Use one harness factory for generic and Storybook native services, preserve uncertain mutations across restart, and fail closed for corrupt sibling records. Refs #4436. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use stable private recovery storage and exact native application probes for renderer-specific restart guidance without inferring readiness or clearing quarantine. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve F4 epochs and mainline F7, F8 and F12 status evidence.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retain protected args refusal, isolate legacy channels, and preserve epoch-aware settlement for direct authenticated dispatch. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> # Conflicts: # packages/agentic/storybook-desktop/config/server.cjs
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve correlated process readiness, settled disposal and F4 recovery while integrating owned agent-mode ingress and driver-backed traversal. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep baseline smoke separate from descriptor acceptance and require fresh-preview fencing after context loss. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> # Conflicts: # packages/agentic/desktop-test/package.json # packages/agentic/desktop-test/references/current-status.md
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve F3 process-control exports and containment status alongside F2 resource and ownership contracts, F4 recovery, F5 controlled ingress, and F15 qualification guidance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… error Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
On Windows a self-directed SIGTERM terminates without running handlers, so a lifeline stop killed delegated Storybook children before they sent their reporting terminal and flush. The lifeline now dispatches installed SIGTERM handlers directly when no disposer is registered. Give the first manifest-backed smoke story the same cold-bundle render budget as the CLI traversal, and stop every owned smoke process before reporting a cleanup failure. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The Windows smoke relaunches the app between its stories and tests phases. This PR made driver navigation fail fast with bridge-unavailable until the runtime authenticates and renders, so the first authored test raced the relaunch. The tests phase now performs one safe pre-dispatch-retried selection with the initial-render budget before authored tests start. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… on Windows Node --import rejects raw absolute Windows paths. libuv places non-detached Windows children in a kill-on-close job, so a crashed owner hard-terminates them before cooperative disposal can run. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
On Windows, removing the contract directory immediately after SIGKILL raced file release and failed with EPERM under load. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…me awaits its initial render A relaunched runtime's hello is accepted before its first storyRendered event. In that window requireBridge reported relaunch-required, which traversal does not retry, so the Windows tests-phase readiness select failed. An open, unfenced, uninitialized replacement connection now reports bridge-unavailable with no dispatch; fenced bridges still report relaunch-required. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… authenticates first A runtime reload can authenticate its new socket before the old socket reports close. The valid hello was dropped while the stale bridge stayed selected, so a select reached the dead context and timed out with an unknown effect. The new hello now fences the old socket, rejects its pending work, and adopts the replacement after its initial render. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add Windows parameters to the native qualification runbook and record the Windows Fabric and Win32 Paper descriptor matrices, retry history, and cleanup evidence in the desktop-test, desktop-driver, and desktop-driver-mcp status ledgers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Jason Morse (JasonVMo)
marked this pull request as ready for review
November 7, 2026 01:45
Jason Morse (JasonVMo)
marked this pull request as draft
November 7, 2026 01:46
…ication evidence Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Vladimir Morozov (vmoroz)
approved these changes
Nov 7, 2026
This was referenced Nov 7, 2026
Open
Open
Open
Integrate input-lane declarations while preserving typed resource ownership, alias registration identities, and settled shutdown. Complete the supervisor fixture and normalize generated changelog whitespace. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Jason Morse (JasonVMo)
marked this pull request as ready for review
November 7, 2026 08:43
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Platforms Impacted
Platform impact is not complete platform qualification.
Description of changes
Combined implementation of desktop foundation tracks F2, F3, F4, F5 and the F15 native qualification procedure. Relates to #4435, #4442, #4444, #4437, #4443 and #4441. References remain intentionally non-closing: review readiness does not close native acceptance or the remaining desktop program.
Main integration: normal merge
ac6c9f661e2900ecba50932f4f5e5844f7ac072bincorporatesmainat8574d22eec9b42c5c22d4d89a7a91c3e13c1aff3, including #4464's input/platform/scope declarations and selection. Conflict resolutions preserve both the new./jasmineAPI and typed-resource exports, outer-config/alias registration identities and test scopes, and abortablewaitForStop()shutdown. The incoming supervisor fixture now supplies its required registration identity. F1, F7, F8 and F12 implementation is already merged (#4455, #4454, #4457, #4456).desktop-test): dependency-ordered resource contributions, cycle/duplicate/unknown-dependency rejection, reverse disposal, cancellation and late-cleanup accounting, and exact fenced workload claims. Failed or timed-out disposal retains the claim; no automatic reclaim. Public./resourcesand./ownershipentries.desktop-test,storybook-desktop): cooperative service-only Node preload, parent lifeline, correlated typed readiness receipts, descriptor settlement and drain-confirmed shutdown. Readiness is service-ready, not app-ready or context-ready. Incomplete withdrawal remains failed and fenced. Public./process-controlentry.storybook-desktop-runtime,storybook-desktop,desktop-driver): provider lifetime/cancellation context, authenticated connection epochs, versioned native markers, durable bridge-epoch records and exact application-incarnation checks. A verified same-live-app restart requires renderer-specific relaunch; uncertain/replaced identities fail closed. Old preview refs stay stale after select/reset, even after re-observing a surviving native element. Chrome/window refs and immutable PNG resources keep their distinct lifetimes. No transparent reconnection promise.storybook-desktop,desktop-driver): the controlled channel serves onlyGET /index.json, returns value-free 403 responses elsewhere, never relays client WebSocket frames, and keeps authenticated connections alive with bounded heartbeats. Driver-owned selection and manifest-backed traversal respect settlement/cancellation and never fall back to HTTP after driver failure. Protected args are refused. Non-agent mode is deliberately legacy/unprotected.CI and qualification repairs included in the branch
process.kill(..., 'SIGTERM')hard-terminated Windows child services before the producer terminal-result/flush handshake. The lifeline dispatches installed SIGTERM listeners first so reporting and owned-service settlement can complete; missing handshakes remain errors.storyRendered. Smoke now waits for authenticated readiness before initial and relaunched traversal, retrying onlybridge-unavailable, which proves no dispatch occurred. Ambiguous mutations are not retried.Remaining limitations are assigned, not waived. #4435 and the existing follow-up issues now record current acceptance and actual dependency gates.
Status: Blockedis applied to #4443, #4444, #4445, #4446, #4447, #4448, #4449, #4450 and #4451, with their native blocked-by relationships verified. F3/F5 can co-land with their prerequisites here; delivered F1 is not retained as an active blocker merely because its issue remains open. F15 is not globally blocked.Verification
Merged tree: the following local checks passed before pushing
ac6c9f661e2900ecba50932f4f5e5844f7ac072b. Full interactive/native descriptor qualification was not rerun for this main merge. JavaScript tests, declared lanes and hosted smoke do not replace that evidence.yarn install --immutableyarn buildregistrationId; the first TS2322 failure is retained.yarn --cwd packages\agentic\desktop-test test 'contracts|supervisor|collector|lane'yarn --cwd packages\agentic\storybook-desktop test 'DesktopStorybookCli|sourceConfig|inputLane|storySelection|agentIngress'packages\agentic\desktop-test:yarn format && yarn lint && yarn build && yarn testpackages\agentic\storybook-desktop:yarn format && yarn lint && yarn build && yarn testyarn clean-lage-cache && yarn lage buildci --concurrency 4yarn lage test-links --verbose --groupedyarn change:checkgit diff --cached --check,git diff --check,git status --shortHosted checks on the merge SHA:
gh pr checks 4463 --repo microsoft/fluentui-react-native --watch --interval 30passed: all 18 checks succeeded atac6c9f661e2900ecba50932f4f5e5844f7ac072b, including Windows Fabric, Win32 Paper, macOS Fabric and macOS Paper Storybook. PR run 42354573970 and CodeQL run 42354574053 both succeeded. The earlier passing checks at7b7ef4c5aremain historical.Historical native qualification, not an all-pass claim
The harness ledger, driver ledger and MCP ledger record additive probes at their exact source revisions. Publication in
7b7ef4c5adoes not mean every probe ran on that SHA.a19fd3e1a19fd3e1No wholly unrun Windows row means neither full subcase coverage nor physical-input acceptance. Broader input/capture, console Ctrl+C, mixed/200% DPI, minimized/negative-origin windows, lock/RDP/elevation, popups, capture cancellation and containment remain unqualified. Windows/Win32 doctor
--permissionsand Win32 production-bundle Metro reload are Unsupported.Final historical hosted-style local smoke commands from
apps\storybook:yarn storybook smoke --windows --mode stories-and-tests- Passed: 312 selected, 234 executed/passed, 78 skipped, no failed tests; one recovered report-sharing warning. Report:apps/storybook/artifacts/desktop/1825d9aa-2c25-4a2c-8524-ceadcf52ad68/run.json.yarn storybook smoke --win32 --mode stories-and-tests- Passed: 266 selected, 214 executed/passed, 52 skipped, no failed tests. Report:apps/storybook/artifacts/desktop/8c6f58e1-3591-4f1b-b008-c52a718d3ca2/run.json.Failure and retry history retained
9506772a-d3f9-4f53-966e-b6c75799b463failed its physical test. Win32's later descriptor click passed but does not erase the earlier failing physical smoke7a737861-c31b-4eeb-ac6d-b21b8a96739d.3c780cfd1: Fabric 2 Pass, 5 Partial, 1 Inconclusive, 1 Fail, 15 Not run; Paper 4 Pass, 8 Partial, 12 Not run. Missing reference-kind/session-continuity evidence keeps the accepted-old-ref probe Inconclusive, not attributed to the deterministic reference fix. Foreign-WebSocket and protected-args retries remain in the ledger with unknown cause.a19fd3e1, Fabric physical input remained Partial (no retained per-step proof); same-port replacement/live restart remained Partial because fail-closed rejection was shown but rediscovery was not. Legacy macOS smoke passed 211/211 on both renderers, not protected-ingress acceptance. Grant revocation and protected args passed on earlier Paper but were not rerun on that candidate.privateStorage10000 ms andwdioRunner7000 ms aggregate deadlines passed on isolated/retry runs; their causes remain unconfirmed. Corrected iteration failures included missing dependencies, unmatched selection, temporary type/lint/Knip/format issues, Windows file-URL/argv failures, native stimulus/control failures and atomic-report sharing failures. Later passes do not erase them; exact native retries and cleanup remain in the ledgers.Pull request checklist
This PR has considered (when applicable):
Accessibility/localization UI checklist items are not applicable to this tooling change. Physical-input qualification is reported separately and is not complete.