From 851032b6dbbfc45960b12f2d2bb520f6dd871ea3 Mon Sep 17 00:00:00 2001 From: Jason Morse Date: Thu, 12 Nov 2026 03:45:51 +0000 Subject: [PATCH 1/3] docs(desktop): record F15 macOS non-AX evidence and permission block Retain exact signed-helper, strict-clear refusal, identity, and doctor evidence without claiming Fabric/Paper requalification. Add empty changeset metadata required by the release check; no version bump. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .changeset/tired-knives-make.md | 6 +++ .../references/current-status.md | 18 +++++++ .../references/current-status.md | 51 +++++++++++++++++++ .../desktop-test/references/current-status.md | 31 +++++++++++ 4 files changed, 106 insertions(+) create mode 100644 .changeset/tired-knives-make.md diff --git a/.changeset/tired-knives-make.md b/.changeset/tired-knives-make.md new file mode 100644 index 0000000000..111e0cb5b8 --- /dev/null +++ b/.changeset/tired-knives-make.md @@ -0,0 +1,6 @@ +--- + +--- + +Record F15 macOS non-Accessibility supporting evidence and the remaining +permission blocks. Documentation only; no package release. diff --git a/packages/agentic/desktop-driver-mcp/references/current-status.md b/packages/agentic/desktop-driver-mcp/references/current-status.md index be788a2ea1..711ddef998 100644 --- a/packages/agentic/desktop-driver-mcp/references/current-status.md +++ b/packages/agentic/desktop-driver-mcp/references/current-status.md @@ -338,3 +338,21 @@ out before the observed bridge retirement; the subsequent attempt waited for retirement. No raw image or grant is retained in this reference. Driver shutdown, app cleanup, and the failed Win32 app-run reports are recorded in `packages/agentic/desktop-test/references/current-status.md`. + +## F15 macOS Paper measurement block — 2026-11-12 + +Source `505a2187b0a2451aed7081c9260b343d55742f93`; macOS 27.2.1 +(26B131), arm64. The stable-signed helper's noninteractive doctor reported +Accessibility=false and PostEvent=false, with ScreenCapture=true. The +driver ledger at `packages/agentic/desktop-driver/references/current-status.md`, +section "F15 non-AX macOS supporting evidence — 2026-11-12", +retains the exact diagnostic command and signing identity; its local artifact +is `artifacts/desktop/f15-20261112/doctor.json`. + +**Blocked:** macOS Paper MCP interaction/text/latency measurements requiring +the app's accessibility tree or physical input need owner permission action. +No Paper Storybook app or MCP session was launched, no measurement command +was run, and 0 tests were selected/executed (no new pass, failure, or skip +counts). Cleanup is N/A for MCP; the diagnostic helper exited. The non-AX +helper self-test does not qualify the adapter or change historical measurement +claims. diff --git a/packages/agentic/desktop-driver/references/current-status.md b/packages/agentic/desktop-driver/references/current-status.md index 507829248c..9175e37d01 100644 --- a/packages/agentic/desktop-driver/references/current-status.md +++ b/packages/agentic/desktop-driver/references/current-status.md @@ -472,3 +472,54 @@ after the disconnect, so fresh-preview fencing remains Partial. The first probe timed out after 10 seconds; bridge retirement occurred about 19 seconds after injection. A later attempt waited for retirement and retained the same Partial result. Physical Ctrl+C and DPI changes were not exercised. + +## F15 non-AX macOS supporting evidence — 2026-11-12 + +Source `505a2187b0a2451aed7081c9260b343d55742f93`; macOS 27.2.1 +(26B131), arm64 (`sw_vers`). App: `FurnDesktopDriverHost.app` and +process-identity contract children, not Storybook. Renderer: N/A. +Feasibility was recorded before execution in the machine-local ignored +artifact `artifacts/desktop/f15-20261112/feasibility.md`. + +All native commands ran serially through the machine-wide native lock. +From the repository root, the shared environment was: + +```sh +export FURN_DESKTOP_DRIVER_MACOS_SIGNING_IDENTITY="FURN Desktop Driver Development" +export FURN_DESKTOP_DRIVER_CACHE_ROOT="$PWD/artifacts/desktop/f15-20261112/native-cache" +``` + +| Command / selection | Passed / failed / skipped | Cleanup / artifact locator | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `yarn workspace @fluentui-react-native/desktop-driver exec desktop-driver --reporter json build-driver --platform macos` | Passed build and signature verification; 0 tests selected | Build exited; `artifacts/desktop/f15-20261112/helper-build.json` and `helper-build.stderr` | +| `yarn workspace @fluentui-react-native/desktop-driver exec desktop-driver --reporter json doctor --platform macos --permissions` | Passed diagnostic invocation; 0 tests selected. Accessibility=false, PostEvent=false, ScreenCapture=true; no prompt requested | Diagnostic helper exited; `artifacts/desktop/f15-20261112/doctor.json` and `doctor.stderr` | +| Signed helper `--self-test`, resolved from `helper-build.json`; exact invocation below | 448 / 0 / 0 checks, including 8 strict-clear refusal/negotiation assertions | Helper exited; `artifacts/desktop/f15-20261112/signed-self-test.log` and `signed-self-test.stderr` | +| `FURN_NATIVE_DRIVER_TEST=1 yarn workspace @fluentui-react-native/desktop-driver test --runInBand nativeDriver.test applicationIncarnation.contract serviceIdentity.contract` | 27 / 0 / 15 tests; 3 passed suites, 2 platform-skipped suites; default TMPDIR | Test/helper children exited; `artifacts/desktop/f15-20261112/native-contracts.log` | + +The stable-signed self-test invocation retained the selected artifact as data, +with a 120-second subprocess timeout: + +```sh +python3 -c 'import json,subprocess; from pathlib import Path; root=Path("artifacts/desktop/f15-20261112"); artifact=json.loads((root/"helper-build.json").read_text()); print("helper="+artifact["artifactId"]); result=subprocess.run([artifact["executablePath"],"--self-test"],stdout=(root/"signed-self-test.log").open("w"),stderr=(root/"signed-self-test.stderr").open("w"),timeout=120); print("signed-self-test exit="+str(result.returncode)); raise SystemExit(result.returncode)' +``` + +Stable helper artifact: +`bdc07c7c4333eeef6cf5da683128591da0564cf978cf813335b5c63494dc7903`; +source digest: +`b1d5233de326faf886c8d6310c2844c6857e4936686dfd493ff898f9e5ec6b9a`. +Its designated requirement was +`identifier "com.microsoft.fluentui-react-native.desktop-driver" and certificate leaf = H"ab592605f8619fcaa952b4a2525ae6d41296fdd7"`. +The doctor reported the same artifact and signing requirement, an unlocked +console session, and `promptRequested=false`. Its `ready=true` describes +artifact availability, not permission readiness. + +Strict-clear coverage here is limited to four invalid-mechanism refusals, +semantic/keyboard missing-element refusals with no effect, and probe/hello +negotiation. **Blocked:** successful real-element clears, Fabric/Paper +Storybook descriptor lifecycle and smoke, physical input, and Paper MCP +interaction measurements require Accessibility/PostEvent owner action. +They were not launched or credited as passes. No privacy settings changed. +Process inspection after the contracts found no surviving test/helper +processes from this worktree. This supporting evidence is **not macOS +requalification**, native positive strict-clear qualification, or a reliability +window; the existing F15 acceptance gaps remain open. diff --git a/packages/agentic/desktop-test/references/current-status.md b/packages/agentic/desktop-test/references/current-status.md index 2b58da4e1a..c4a4ad184e 100644 --- a/packages/agentic/desktop-test/references/current-status.md +++ b/packages/agentic/desktop-test/references/current-status.md @@ -1026,3 +1026,34 @@ macOS Accessibility block above remains unchanged; no local smoke was repeated. `pwsh` is unavailable locally, so its parser check remains not run; the actual scripts executed in these CI lanes. Keep the PR draft until the documentation follow-up's CI passes and the coordinator changes its status. + +## F15 macOS feasibility and permission block — 2026-11-12 + +Source `505a2187b0a2451aed7081c9260b343d55742f93`; macOS 27.2.1 +(26B131), arm64 (`sw_vers`). The app exercised was +`FurnDesktopDriverHost.app`, not a React Native consumer; renderer N/A. +The pre-run feasibility artifact is +`artifacts/desktop/f15-20261112/feasibility.md`. + +| Item | Needs Accessibility/PostEvent? | Plan / actual result | +| -------------------------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | +| Stable helper build, signature verification, handshake and synthetic self-test | No | Passed under the machine-wide native lock; signed self-test 448 passed, 0 failed, 0 skipped checks | +| Strict-clear refusal and negotiation assertions | No | Passed 8 supporting assertions within the self-test, not successful real-element clears | +| Native service/application identity contracts | No | Targeted native driver selection passed 27 tests, failed 0, skipped 15; default TMPDIR | +| Noninteractive `doctor --permissions` | No | Completed without prompting; Accessibility=false, PostEvent=false, ScreenCapture=true | +| Real-element clears, Fabric/Paper Storybook descriptor lifecycle/smoke, physical input | Yes; keyboard/pointer input also needs PostEvent | Blocked: helper lacks Accessibility/PostEvent; owner action required. Not launched, 0 selected/executed | +| Paper MCP interaction measurements | Yes | Blocked by the same helper permissions; no fresh measurement | +| Windows / Win32 matching-OS contracts | Windows host required | Not run on this macOS host | + +The driver evidence ledger at +`packages/agentic/desktop-driver/references/current-status.md`, section +"F15 non-AX macOS supporting evidence — 2026-11-12", +records the exact commands, signing requirement, source/artifact digests, +counts, and cleanup. Machine-local artifacts are under +`artifacts/desktop/f15-20261112/`, including `helper-build.json`, +`doctor.json`, `signed-self-test.log`, and `native-contracts.log`. +All commands exited and subsequent process inspection found no surviving +test/helper children. No Storybook, Metro, driver service, or MCP session was +started for these mainline checks, and no privacy settings changed. +These are supporting helper contracts, **not Fabric/Paper requalification**; +the remaining acceptance matrix and historical evidence are unchanged. From 4088dc5f51bd154d4f96e0c3eefb63cf404bee2b Mon Sep 17 00:00:00 2001 From: Jason Morse Date: Thu, 12 Nov 2026 03:49:14 +0000 Subject: [PATCH 2/3] docs(desktop): align ledger dates and surface macOS permission gate Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../agentic/desktop-driver-mcp/references/current-status.md | 2 +- .../agentic/desktop-driver/references/current-status.md | 6 +++++- packages/agentic/desktop-test/references/current-status.md | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/agentic/desktop-driver-mcp/references/current-status.md b/packages/agentic/desktop-driver-mcp/references/current-status.md index 711ddef998..bda60bc727 100644 --- a/packages/agentic/desktop-driver-mcp/references/current-status.md +++ b/packages/agentic/desktop-driver-mcp/references/current-status.md @@ -7,7 +7,7 @@ owner_paths: # Current adapter and measurement status -**Work in progress, updated 2026-11-08.** The adapter is a thin client, not a +**Work in progress, updated 2026-11-12.** The adapter is a thin client, not a supervisor. Keep this package name until actual harness-owned management tools land; a later `desktop-mcp` facade must retain driver-only use and plan published compatibility. Done below describes implementation, not full native qualification. diff --git a/packages/agentic/desktop-driver/references/current-status.md b/packages/agentic/desktop-driver/references/current-status.md index 9175e37d01..b12635f187 100644 --- a/packages/agentic/desktop-driver/references/current-status.md +++ b/packages/agentic/desktop-driver/references/current-status.md @@ -7,7 +7,7 @@ owner_paths: # Current capability and qualification status -**Work in progress, updated 2026-11-08.** "Done" below means the stated +**Work in progress, updated 2026-11-12.** "Done" below means the stated implementation exists, not that every native endpoint is qualified or that the complete orchestration product is ready for submission. Historical measurements remain tied to their original revision; they were not rerun by this update. @@ -46,6 +46,10 @@ added. Management/run schemas stay in the harness, not this package. ## Native evidence and full-submission gates +macOS AX-dependent requalification is **Blocked**: the stable-signed helper +needs owner permission action; see the +[2026-11-12 supporting evidence](#f15-non-ax-macos-supporting-evidence--2026-11-12). + | Lane | Recorded evidence through 2026-11-06 | Still required before full submission | | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | macOS Fabric | M3 evidence at `41fc7473f`; bounded F4 marker, stale-preview/chrome and authenticated-incarnation restart checks at `6fca14788` | Native cancellation/fault injection, fresh preview after lost context, secondary windows, physical input, supervisor crash, generic AppKit fixture and reliability window. | diff --git a/packages/agentic/desktop-test/references/current-status.md b/packages/agentic/desktop-test/references/current-status.md index c4a4ad184e..f5fb799547 100644 --- a/packages/agentic/desktop-test/references/current-status.md +++ b/packages/agentic/desktop-test/references/current-status.md @@ -7,7 +7,7 @@ owner_paths: # Current lifecycle and qualification status -**Work in progress, updated 2026-11-08.** Done means the listed implementation, +**Work in progress, updated 2026-11-12.** Done means the listed implementation, not full cross-platform qualification. This package is the intended neutral workload host; the existing Storybook lifecycle takeover is transitional. No new coordinator package, daemon, dynamic plugin loader, or package rename From 1bf3da2b941bc2d27f087a2abf604e40a49c80b7 Mon Sep 17 00:00:00 2001 From: Jason Morse Date: Thu, 12 Nov 2026 12:25:48 +0000 Subject: [PATCH 3/3] Record permission-enabled macOS qualification evidence and gaps Preserve the non-AX history, document both renderer smoke failures and the Paper keyboard-clear finding, and add real-descriptor input, lifecycle and MCP measurement evidence without changing product code. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .changeset/tired-knives-make.md | 5 +- .../references/current-status.md | 157 +++++++++++++++- .../references/current-status.md | 167 +++++++++++++++++- .../desktop-test/references/current-status.md | 152 ++++++++++++++-- 4 files changed, 457 insertions(+), 24 deletions(-) diff --git a/.changeset/tired-knives-make.md b/.changeset/tired-knives-make.md index 111e0cb5b8..42ec9c848a 100644 --- a/.changeset/tired-knives-make.md +++ b/.changeset/tired-knives-make.md @@ -2,5 +2,6 @@ --- -Record F15 macOS non-Accessibility supporting evidence and the remaining -permission blocks. Documentation only; no package release. +Record F15 macOS supporting evidence, the resolved permission prerequisite, +and bounded native/consumer qualification results and remaining gaps. +Documentation only; no package release. diff --git a/packages/agentic/desktop-driver-mcp/references/current-status.md b/packages/agentic/desktop-driver-mcp/references/current-status.md index bda60bc727..5507cbf309 100644 --- a/packages/agentic/desktop-driver-mcp/references/current-status.md +++ b/packages/agentic/desktop-driver-mcp/references/current-status.md @@ -73,7 +73,8 @@ tokenizer/version, serialized UTF-8 bytes and characters, text tokens, instructions overhead, projection/budgets, sample count, cold/warm timing, success/retry/cancellation/cleanup counts, and approved artifact locator. Do not claim token reductions from reducing information scope or omitting -discovery. macOS Paper measurements are currently **not recorded here**. +discovery. New macOS Paper samples are recorded in the dated F15 +permission-enabled follow-up below; they do not fill earlier provenance gaps. ### Windows Fabric and Win32 Paper - 2026-11-08 UTC @@ -339,7 +340,7 @@ retirement. No raw image or grant is retained in this reference. Driver shutdown, app cleanup, and the failed Win32 app-run reports are recorded in `packages/agentic/desktop-test/references/current-status.md`. -## F15 macOS Paper measurement block — 2026-11-12 +## F15 macOS Paper measurement prerequisite — 2026-11-12 Source `505a2187b0a2451aed7081c9260b343d55742f93`; macOS 27.2.1 (26B131), arm64. The stable-signed helper's noninteractive doctor reported @@ -349,10 +350,156 @@ section "F15 non-AX macOS supporting evidence — 2026-11-12", retains the exact diagnostic command and signing identity; its local artifact is `artifacts/desktop/f15-20261112/doctor.json`. -**Blocked:** macOS Paper MCP interaction/text/latency measurements requiring -the app's accessibility tree or physical input need owner permission action. -No Paper Storybook app or MCP session was launched, no measurement command +The initial pass was **blocked**: macOS Paper MCP interaction/text/latency +measurements needed Accessibility/PostEvent. That prerequisite was resolved +later the same day; it is no longer an owner-action block. +In the initial pass no Paper Storybook app or MCP session was launched, no measurement command was run, and 0 tests were selected/executed (no new pass, failure, or skip counts). Cleanup is N/A for MCP; the diagnostic helper exited. The non-AX helper self-test does not qualify the adapter or change historical measurement claims. + +### F15 permission-enabled MCP follow-up — 2026-11-12 + +**Observed, partial; not macOS requalification.** Source: +`141b88b4b81a1bd9a0472de533681f9274d8cb00`; macOS 27.2.1 (26B131), +arm64. App: Agentic Components Storybook / ReactTestApp, bundle +`com.microsoft.fluentui.agenticstorybook.id915e78595`. +Fabric target: `macos-a6dfeaccb13e643a`; Paper target: +`macos-de43c71d45415315`. Nonprompting doctor reported +Accessibility/PostEvent/ScreenCapture true; no privacy changes were made. +All native/GUI commands used the machine-wide native lock and the stable +`FURN Desktop Driver Development` identity/cache described in the driver +ledger's F15 follow-up. + +The local evidence root is `artifacts/desktop/f15-20261112T115411Z/`. +The session-local probe used the public MCP SDK 1.32.2 and shipped +desktop-driver-mcp 0.1.3 stdio CLI with the real private +`agent-connection.json` descriptor. No grant or descriptor contents were +printed or copied to evidence. Tokenizer: `gpt-tokenizer` 4.1.0, +`o200k_base`; compact JSON for discovery, newline-joined MCP text blocks for +operation text. UTF-8 bytes and JavaScript characters were recorded +independently. These bounded samples are not a controlled cold-start +benchmark, reliability window or cross-client qualification. + +Fabric command, from the repository root: +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs fabric lifecycle`. +It starts `yarn storybook driver --macos --agent --reporter json`, then +`yarn storybook run --macos --reporter json` in `apps/storybook`. +Results: **10 passed, 1 failed, 0 skipped manual checks** in +`fabric-lifecycle-qualification.json`. Revocation, dispose-during-open, +ambiguous CREATE and failed DELETE before/after dispatch used the SDK +in-memory transport with the real native service and verified descriptor: +response loss was injected at the public typed-client method boundary, +not with a TCP proxy or by forcing native cleanup failure. Each connection +drained and the target reservation could be reacquired. + +The stdio pass observed same-port service replacement, authoritative +invalidation of the old session, fresh verified discovery, `no-session` +refusal of the old mutation, target capture/resource reading, session-close +resource expiry and read cancellation. The first group-SIGTERM harness +attempt retained a descriptor and failed restart; it remains recorded in +`fabric-qualification.json`, with exact-record reconciliation in +`descriptor-reconciliation.json`. It is not a successful ordinary shutdown. + +Fabric's physical checkbox click **failed**, not passed: the sequence stopped +before dispatch (`element click intercepted`, `obscured`, effect `none`). +Its 107-token / 438-byte / 1,187.5-ms response measures a refusal. +No successful physical click/check/observe interaction cost is claimed. +The driver's F15 open finding records the reproduction and routing. + +| Fabric measurement | Observed result | +| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| Six-tool discovery | 4,693 tokens; 20,287 UTF-8 bytes / characters | +| Server instructions, additional to discovery | 120 tokens; 591 UTF-8 bytes / characters | +| First attach after discovery | 846.4 ms; one sample, excludes service/app startup | +| Default observe, 20 calls per story | Median 21.9–27.8 ms across stories; p90 1,127.7–1,669.0 ms; maximum 1,680.2 ms; 905–948 tokens, 2,778–3,061 bytes per call | +| Idle delta, 20 calls per story | Median 21.5–26.3 ms; p90 1,122.0–1,671.9 ms; maximum 1,688.1 ms; 151–152 tokens, 464–469 bytes per call | +| Read cancellation | Caller aborted after 301.5 ms; subsequent observe passed; no mutation cancellation claim | + +The three stories were `components-button--appearance`, +`components-checkbox--constrained-text` and `components-menu--default`. +The default 100-node projection completed in all 60 observations and all +60 deltas; no retries. The slow maxima are retained rather than hidden by +the medians. These samples do not establish equal information content to +historical Windows or other story projections. + +#### Paper descriptor, interactions and completeness + +From the repository root, +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper` +used `yarn storybook driver --macos --paper --agent --reporter json` +and `yarn storybook run --macos --paper --reporter json`. +It recorded **14 passed, 4 failed, 0 skipped manual assertions** +(`paper-qualification.json`), not selected suite tests. The four failures +were keyboard clear, its dependent semantic-clear precondition, refused +physical Checkbox click and unsupported semantic Checkbox activation. +The latter two sequences were `stopped` despite non-error MCP envelopes; +they were not accepted as interactions. + +The same real-descriptor lifetime/fault boundaries described for Fabric +passed on Paper, including same-port invalidation, fresh discovery, +`no-session` old-mutation refusal, read cancellation followed by a usable +session, target PNG resource reading/hash verification and expiry on close. +The exact app PID/start-time/executable survived session and service close. +Paper's channel survived one 22-second idle interval. The fault probes +wrapped public typed-client methods, not native cleanup or TCP failures. + +Discovery independently matched Fabric: six tools, **4,693 tokens / +20,287 UTF-8 bytes / characters**, plus 120 tokens / 591 bytes of server +instructions. First attach was 831.6 ms, excluding service/app startup. +All latency values below are client wall time; p90 uses nearest rank. +Each row has 20 calls, zero retries and zero call failures. Defaults used +the 100-node projection, not a full-tree request. + +| Paper story / operation | p50 / p90 / max, ms | Text tokens | UTF-8 bytes | Complete projections | +| ------------------------------------------------ | ------------------------ | ----------- | ----------- | -------------------- | +| `components-button--appearance`, observe | 31.8 / 1,142.7 / 1,689.3 | 1,188–1,189 | 3,533–3,537 | 20 / 20 | +| Same story, delta | 31.5 / 1,152.0 / 1,671.9 | 151–152 | 465–467 | 20 / 20 | +| `components-checkbox--constrained-text`, observe | 34.1 / 1,688.0 / 1,698.8 | 1,201–1,202 | 3,750–3,752 | 20 / 20 | +| Same story, delta | 33.9 / 1,696.4 / 1,701.6 | 151–152 | 465–467 | 20 / 20 | +| `components-menu--default`, observe | 34.1 / 1,158.7 / 1,706.5 | 1,313–1,322 | 3,862–3,866 | **0 / 20** | +| Same story, delta | 36.4 / 1,159.7 / 1,710.1 | 151–152 | 468–470 | 20 / 20 | + +**Observed:** each Paper Menu observation emitted 100 of 103 matching +nodes, `maxNodes`, three omitted; these are incomplete observations, not +full-information comparison samples. Complete deltas do not repair that +truncation. Fabric's complete projections and these Paper projections are +not equivalent scopes. Window dimensions and display scale were not +retained for this run; the cached stable helper and running app make these +warm operation samples, not controlled cold-start measurements. +Paper read cancellation took 302.2 ms; post-dispatch mutation cancellation +was **Not run**. + +The Paper physical-click refusal cost 1,172.4 ms / 106 tokens / 438 bytes; +the provider's **Unsupported** semantic activation cost 743.9 ms / +79 tokens / 329 bytes. Neither is a successful click/check/observe cost. +The independent +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper input` +probe recorded **4 passed, 1 failed, 0 skipped manual checks**: +semantic clear, physical-input delivery, protected args and the following +real stdio MCP interaction passed; Paper keyboard clear still failed after +bounded polling. Exact harnesses and defect reproduction are retained in the +driver and consumer ledgers. + +| Successful Paper Input interaction, one sample | ms | Tokens | UTF-8 bytes | +| --------------------------------------------------------------- | ------- | ------ | ----------- | +| `desktop_act` type `F15`, keyboard mechanism, applied/completed | 837.5 | 74 | 261 | +| `desktop_check` value equals `F15`, passed on first read | 30.1 | 96 | 322 | +| Closing default `desktop_observe`, complete, 90 emitted nodes | 1,148.2 | 1,201 | 3,611 | +| Sum of those three calls | 2,015.7 | 1,371 | 4,194 | + +This sum excludes discovery, attach, story reset and close. No mutation was +retried; each measured call ran once. It is a successful text-entry/value +interaction, **not physical Checkbox activation** and not directly comparable +to historical toggle costs or projections. Artifact: +`paper-input-qualification.json`. + +**Cleanup passed:** `cleanup-audit.json`, 2026-11-12T12:20:26Z, records no +worktree processes, no listeners on 39860/23935/28029, no descriptor and +no per-user workload claim; the native-lock wrapper exited and the lock +was unheld afterward. Reliability, durable TCC continuity, other MCP clients, +native cleanup/survivor faults and the outstanding F3/F4/F5 acceptance +cases listed in the consumer ledger remain **Not run** on this source. +Both renderer smokes failed; the permission prerequisite is resolved but +#4441's macOS acceptance is not met. diff --git a/packages/agentic/desktop-driver/references/current-status.md b/packages/agentic/desktop-driver/references/current-status.md index b12635f187..88b4cc7c96 100644 --- a/packages/agentic/desktop-driver/references/current-status.md +++ b/packages/agentic/desktop-driver/references/current-status.md @@ -46,8 +46,9 @@ added. Management/run schemas stay in the harness, not this package. ## Native evidence and full-submission gates -macOS AX-dependent requalification is **Blocked**: the stable-signed helper -needs owner permission action; see the +The macOS permission gate was **resolved, observed 2026-11-12**: the +stable-signed helper reports Accessibility/PostEvent true without prompting. +This alone is not requalification; see the [2026-11-12 supporting evidence](#f15-non-ax-macos-supporting-evidence--2026-11-12). | Lane | Recorded evidence through 2026-11-06 | Still required before full submission | @@ -517,13 +518,165 @@ The doctor reported the same artifact and signing requirement, an unlocked console session, and `promptRequested=false`. Its `ready=true` describes artifact availability, not permission readiness. -Strict-clear coverage here is limited to four invalid-mechanism refusals, -semantic/keyboard missing-element refusals with no effect, and probe/hello -negotiation. **Blocked:** successful real-element clears, Fabric/Paper +Strict-clear coverage in this initial pass is limited to four invalid-mechanism +refusals, semantic/keyboard missing-element refusals with no effect, and +probe/hello negotiation. Successful real-element clears, Fabric/Paper Storybook descriptor lifecycle and smoke, physical input, and Paper MCP -interaction measurements require Accessibility/PostEvent owner action. -They were not launched or credited as passes. No privacy settings changed. +interaction measurements were blocked on Accessibility/PostEvent during that +pass and were not launched or credited as passes. The later permission recheck +below resolves that prerequisite, not the unexecuted acceptance cases. +No privacy settings changed. Process inspection after the contracts found no surviving test/helper processes from this worktree. This supporting evidence is **not macOS requalification**, native positive strict-clear qualification, or a reliability window; the existing F15 acceptance gaps remain open. + +### F15 permission-enabled follow-up — 2026-11-12 + +**Observed, partial qualification, not macOS requalification.** Product source: +`141b88b4b81a1bd9a0472de533681f9274d8cb00` (main plus this PR's +documentation); macOS 27.2.1 (26B131), arm64. No sibling-branch evidence is +included. The pre-execution feasibility note and ignored machine-local +artifacts are under `artifacts/desktop/f15-20261112T115411Z/`. +The signing identity/cache environment above was reused. Every native, +GUI and physical-input command ran through +`$HOME/Library/Caches/furn-overnight/with-native-lock.sh`; +unit tests retained the default TMPDIR. No privacy settings changed and no +permission prompts were requested. + +| Check / exact command from the repository root | Observed result / passed, failed, skipped | Artifact beneath the follow-up directory | +| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | +| `yarn workspace @fluentui-react-native/desktop-driver exec desktop-driver --reporter json doctor --platform macos --permissions` | Passed diagnostic: Accessibility=true, PostEvent=true, ScreenCapture=true; unlocked, onConsole=true, promptRequested=false; 0 tests | `doctor.json`, `doctor.stderr` | +| `FURN_NATIVE_DRIVER_TEST=1 yarn workspace @fluentui-react-native/desktop-driver test --runInBand` | Passed: 1,240 / 0 / 47 tests; 75 passed, 6 platform-skipped suites; includes native build/identity contracts and portable fake-host tests | `native-tests.log` | +| `node artifacts/desktop/f15-20261112T115411Z/qualify.mjs fabric strict` | Passed: 3 / 0 / 0 manual checks: real-element keyboard clear/input, semantic clear, protected args refusal | `fabric-strict-qualification.json`, `fabric-strict.log` | +| `node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper` | Failed: 14 / 4 / 0 manual assertions; includes a dependent semantic-clear precondition failure and unsupported Checkbox activation, not four independent product defects | `paper-qualification.json`, `paper-qualification.log` | +| `node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper input` | Failed overall: 4 / 1 / 0 manual checks; semantic clear, independent physical-input delivery, args refusal and MCP type/check/observe passed; keyboard clear failed | `paper-input-qualification.json`, `paper-input.log` | + +The doctor resolved the same stable helper artifact and source digest as the +initial pass. **Inferred:** this preflight is authority for the current +responsible process tree (Rex Server.app), not proof of helper-owned durable +TCC continuity. + +The real element was Storybook `components-input--default`, +`agentic-storybook-input`. The physical session verified typed text, cleared a +nonempty value to empty with the required keyboard mechanism, then exercised +element-relative pointer down/up, an arrow key and one wheel event. +Its input receipt was `{ keyboard: 4, pointer: 1, wheel: 1 }`. +A subsequent accessible session verified the nonempty value and cleared it to +empty with exactly `{ "semantic-clear": 1 }`, no keyboard fallback. +**Observed:** wheel delivery succeeded; its visual scrolling effect was not +asserted. These are manual real-element checks, not synthetic self-test +assertions. The strict run stopped the exact owning CLI with SIGTERM (exit 0), +then terminated and verified exit of its own app. + +Paper's first keyboard clear returned success but changed the verified +synthetic value `F15` to `F1`, not empty. Its next semantic check incorrectly +required the original `F15`, so that assertion failed **before semantic +clear was attempted**. The separate `paper input` probe made the semantic +precondition independent and polled the value after typing and clearing, +without retrying either mutation. **Observed:** keyboard clear still left +two characters after 100 reads separated by 50-ms waits; its receipt was +`{ keyboard: 2 }` for typing and clear. Semantic clear then passed from a +nonempty value to empty with exactly `{ "semantic-clear": 1 }`. +A separate Paper physical session verified text and delivered pointer, +arrow-key and wheel actions with +`{ keyboard: 2, pointer: 1, wheel: 1 }`; visual scrolling was not asserted. +Thus real-element keyboard clear passed on Fabric, not Paper; semantic +clear passed on both. Receipt delivery is not proof of successful clearing. + +Fabric descriptor follow-up: +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs fabric lifecycle` +recorded **10 passed, 1 failed, 0 skipped manual checks**; +`fabric preservation` added **1 passed, 0 failed, 0 skipped**. +The protected descriptor/native helper was real throughout. +CREATE/DELETE response-loss and delayed-open injections wrapped the public +typed client method boundary; they were not TCP fault proxies or forced +native cleanup failures. Grant revocation, terminal drain/reacquisition, +same-port replacement fencing, read cancellation and target-only PNG +resource reads passed. A separate PID/start-time/executable comparison proved +the exact externally attached app survived session and service close. +Artifacts and consumer commands are detailed in the harness ledger's +"F15 permission-enabled consumer follow-up". + +The Fabric and Paper full `stories-and-tests` smokes each failed: +**223 passed, 2 failed, 0 skipped**, 225 selected/executed per renderer, +no retries/flaky entries. +The 223 passes were navigation; later authored callbacks remained not run. +This does not invalidate the separate real-input delivery receipts, but it +does leave successful physical control activation unqualified. + +#### Open F15 native findings + +**Observed, unresolved; no product fixes in this docs-only PR.** + +- `packages/agentic/desktop-driver/src/operations/act.ts`, `physicalClick` + / `obscuredRejection`: through either real renderer's MCP descriptor, select + `components-checkbox--default`, find `agentic-storybook-checkbox`, then + `desktop_act` with one `click` step citing its unique ref/sample. + The sequence returns `stopped` at step 0, `element click intercepted`, + reason `obscured`, mutation `rejected` / effect `none`, not quarantined. + The refusal measured 1,187.5 ms, 107 text tokens, 438 UTF-8 bytes in the + lifecycle follow-up; this is **not a successful click measurement**. + Evidence: `fabric-lifecycle-qualification.json`, `physical-click` measurement. + Paper reproduced the same refusal in 1,172.4 ms, 106 tokens, 438 bytes + (`paper-qualification.json`). Paper semantic `activate` was separately + **Unsupported** by this element's provider (743.9 ms, 79 tokens, + 329 bytes); that response is not a successful alternative activation. +- `packages/agentic/desktop-driver/native/macos/Sources/DesktopDriverHost/Driver.swift`, + `clear`, and `Input.swift`, `pressCommandADelete`: reproduce with + `node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper input`, + using the instance-aware Paper app. Create a physical session, select + `components-input--default`, find `agentic-storybook-input`, type and + verify `F15`, then clear with required mechanism `keyboard`. The helper + returns success and records keyboard input, but the value remains + nonempty through bounded read polling. Accessible semantic clear succeeds + independently. Evidence: `paper-input-qualification.json`; exact local + harness `paper-input-harness.mjs`, SHA-256 + `183d2ef5f943c8d384598dc1f5976611f9df72c5bc8481ef83345d39fc0fc278`. + **Inferred routing:** macOS driver keyboard-clear/focus owner with the + Paper Input provider owner; the root cause is not established. +- `packages/agentic/desktop-driver/native/macos/Sources/DesktopDriverHost/Driver.swift` + (activation) and + `packages/agentic/components/src/components/accordion/accordion.stories.tsx` + (`KeyboardDisclosure`): reproduce with + `yarn storybook smoke --macos --mode stories-and-tests --reporter json` + from `apps/storybook`. Its two keyboard callbacks fail in the initial + `focusByTab` click: own-window obstruction, then failure to make the target + foreground. Report: + `apps/storybook/artifacts/desktop/8e1bfc4a-3037-42af-8d52-47739db9065d/run.json`. + The matching Paper smoke (`--paper`) reproduced own-window obstruction + in both callbacks: + `apps/storybook/artifacts/desktop/9f8bb135-907f-419c-8c23-d543fc201230/run.json`. + +**Inferred routing:** macOS desktop-driver hit-testing/geometry and activation +owners, with the Accordion story/focus-test owner for the callback +reproduction. Whether the cause is provider geometry, app state or an +environmental foreground transition is not established; no root cause or +component defect is asserted. The coordinator should route these open +findings under #4441/#4435. Semantic activation must not replace the missing +physical-click evidence. + +#### F15 remaining acceptance and cleanup + +**Not run on this source:** forced native failed-cleanup claim retention; +startup/shutdown survivor and channel/helper/Metro crash reconciliation; +unknown-effect story quarantine/trusted recovery; post-dispatch mutation +cancellation; correlated readiness/render faults; lost-context fresh-preview +fencing and authenticated app-relaunch recovery; registered secondary +windows; anonymous/foreign HTTP/WebSocket protected ingress; launch-capable +discovery and explicit legacy-lane separation. Read cancellation and normal +shutdown are narrower than these cases. Fabric's idle-channel interval was +not measured in this follow-up; Paper passed a single 22-second interval. +The reliability window, durable TCC continuity, and clients beyond the MCP +SDK are **Not run**; Windows and Win32 are **Not run** on this host. +Failed smokes, successful Checkbox/Accordion physical activation, remaining +authored callbacks and Paper keyboard clear remain unqualified. Permissions +are no longer the blocker. This does not meet #4441's macOS acceptance. + +**Observed cleanup, passed:** the isolated +`node artifacts/desktop/f15-20261112T115411Z/audit-cleanup.mjs` command, +under the native lock, found no worktree processes or listeners on +39860/23935/28029, no default descriptor and no per-user workload claim at +2026-11-12T12:20:26Z (`cleanup-audit.json`). Every launched app had been +terminated after exact-incarnation verification. The wrapper exited 0; +subsequent `lsof` found no holder of the machine-wide `native.lock`. diff --git a/packages/agentic/desktop-test/references/current-status.md b/packages/agentic/desktop-test/references/current-status.md index f5fb799547..43fd9ced5a 100644 --- a/packages/agentic/desktop-test/references/current-status.md +++ b/packages/agentic/desktop-test/references/current-status.md @@ -1027,7 +1027,10 @@ repeated. `pwsh` is unavailable locally, so its parser check remains not run; the actual scripts executed in these CI lanes. Keep the PR draft until the documentation follow-up's CI passes and the coordinator changes its status. -## F15 macOS feasibility and permission block — 2026-11-12 +## F15 macOS feasibility and resolved permission block — 2026-11-12 + +The table below preserves the initial, non-AX pass. The permission prerequisite +was resolved later the same day; see the permission-enabled follow-up below. Source `505a2187b0a2451aed7081c9260b343d55742f93`; macOS 27.2.1 (26B131), arm64 (`sw_vers`). The app exercised was @@ -1035,15 +1038,15 @@ Source `505a2187b0a2451aed7081c9260b343d55742f93`; macOS 27.2.1 The pre-run feasibility artifact is `artifacts/desktop/f15-20261112/feasibility.md`. -| Item | Needs Accessibility/PostEvent? | Plan / actual result | -| -------------------------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | -| Stable helper build, signature verification, handshake and synthetic self-test | No | Passed under the machine-wide native lock; signed self-test 448 passed, 0 failed, 0 skipped checks | -| Strict-clear refusal and negotiation assertions | No | Passed 8 supporting assertions within the self-test, not successful real-element clears | -| Native service/application identity contracts | No | Targeted native driver selection passed 27 tests, failed 0, skipped 15; default TMPDIR | -| Noninteractive `doctor --permissions` | No | Completed without prompting; Accessibility=false, PostEvent=false, ScreenCapture=true | -| Real-element clears, Fabric/Paper Storybook descriptor lifecycle/smoke, physical input | Yes; keyboard/pointer input also needs PostEvent | Blocked: helper lacks Accessibility/PostEvent; owner action required. Not launched, 0 selected/executed | -| Paper MCP interaction measurements | Yes | Blocked by the same helper permissions; no fresh measurement | -| Windows / Win32 matching-OS contracts | Windows host required | Not run on this macOS host | +| Item | Needs Accessibility/PostEvent? | Plan / actual result | +| -------------------------------------------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------- | +| Stable helper build, signature verification, handshake and synthetic self-test | No | Passed under the machine-wide native lock; signed self-test 448 passed, 0 failed, 0 skipped checks | +| Strict-clear refusal and negotiation assertions | No | Passed 8 supporting assertions within the self-test, not successful real-element clears | +| Native service/application identity contracts | No | Targeted native driver selection passed 27 tests, failed 0, skipped 15; default TMPDIR | +| Noninteractive `doctor --permissions` | No | Completed without prompting; Accessibility=false, PostEvent=false, ScreenCapture=true | +| Real-element clears, Fabric/Paper Storybook descriptor lifecycle/smoke, physical input | Yes; keyboard/pointer input also needs PostEvent | Initial pass: not run, 0 selected/executed; permission prerequisite subsequently resolved below | +| Paper MCP interaction measurements | Yes | Initial pass: not run; permission prerequisite subsequently resolved below | +| Windows / Win32 matching-OS contracts | Windows host required | Not run on this macOS host | The driver evidence ledger at `packages/agentic/desktop-driver/references/current-status.md`, section @@ -1057,3 +1060,132 @@ test/helper children. No Storybook, Metro, driver service, or MCP session was started for these mainline checks, and no privacy settings changed. These are supporting helper contracts, **not Fabric/Paper requalification**; the remaining acceptance matrix and historical evidence are unchanged. + +### F15 permission-enabled consumer follow-up — 2026-11-12 + +**Observed, partial; not macOS requalification.** Source: +`141b88b4b81a1bd9a0472de533681f9274d8cb00`, macOS 27.2.1 (26B131), +arm64. Consumer: Agentic Components Storybook / ReactTestApp, instance +`d915e78595`, bundle `com.microsoft.fluentui.agenticstorybook.id915e78595`; +targets `macos-a6dfeaccb13e643a` (Fabric) and `macos-de43c71d45415315` +(Paper). The stable-signed nonprompting doctor +now reports Accessibility/PostEvent/ScreenCapture true, an unlocked console +and `promptRequested=false`. This is evidence from this PR's tree only. + +Native/GUI commands were serialized by +`$HOME/Library/Caches/furn-overnight/with-native-lock.sh`, with +`FURN_DESKTOP_DRIVER_MACOS_SIGNING_IDENTITY="FURN Desktop Driver Development"` +and `FURN_DESKTOP_DRIVER_CACHE_ROOT="$PWD/artifacts/desktop/f15-20261112/native-cache"` +set from the repository root. The feasibility note, qualification harness, +logs and redacted JSON are retained in the ignored machine-local directory +`artifacts/desktop/f15-20261112T115411Z/`. No permission prompts or privacy +changes were made. + +| Renderer / command from `apps/storybook` | Result / passed, failed, skipped | Report under `apps/storybook/artifacts/desktop//run.json` | +| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | +| Fabric: `yarn storybook bundle --macos --reporter json` | Passed stage; 0 tests | `22ed99ad-99d3-464b-91e0-b0e41f426674` | +| Fabric: `yarn storybook prep --macos --reporter json` | Initial stage failed before selection: installed Ruby JSON 3.1 removed `fast_generate`; 0 tests | `ebf07ee0-38df-4c79-85cb-3d3b3d4dd42c` | +| Fabric: same `prep`, with `RUBYOPT="-r$PWD/artifacts/desktop/f15-20261112T115411Z/pin-json.rb"` set at the repository root | Passed using already installed JSON 2.18.0; no package/product changes; 0 tests | `e5e4aeea-dd87-4088-ab19-de09a740e338` | +| Fabric: `yarn storybook smoke --macos --mode stories-and-tests --reporter json` | **Failed**: 225 selected/executed, 223 passed, 2 failed, 0 skipped; 0 retries/flaky; later callbacks not run | `8e1bfc4a-3037-42af-8d52-47739db9065d` | +| Paper: `yarn storybook bundle --macos --paper --reporter json` | Passed stage; 0 tests | `f0d64be2-6b22-4692-9ddb-97dbe827a2a5` | +| Paper: `yarn storybook prep --macos --paper --reporter json` with the same Ruby selection | Passed stage; 0 tests | `2bdd101c-6269-4c3d-8e1c-edb2bd3ba34a` | +| Paper: `yarn storybook smoke --macos --paper --mode stories-and-tests --reporter json` | **Failed**: 225 selected/executed, 223 passed, 2 failed, 0 skipped; 0 retries/flaky; later callbacks not run | `9f8bb135-907f-419c-8c23-d543fc201230` | + +Each renderer's 223 passing entries were story traversal, not authored input +passes. Each report recorded zero unsupported, declared-unsupported, +quarantined and incomplete work; those zero counters do not mean the later +authored callbacks ran. Selection excluded ten platform entries for each +renderer and one additional scope entry for Paper. Both failed callbacks belong to +`components-accordion--keyboard-disclosure`: `focusByTab`'s initial +physical click was rejected as obscured by the app's own native window; +Fabric's second callback instead reported foreground activation failure. +Later authored work was not +silently counted as skipped or passed. **Open finding:** see the driver's F15 +follow-up for reproduction and suggested ownership. + +The separate real-descriptor command +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs fabric lifecycle` +(repository root) recorded **10 passed, 1 failed, 0 skipped manual checks**. +It used `yarn storybook driver --macos --agent --reporter json` and +`yarn storybook run --macos --reporter json`, never `build` as a substitute +for the instance-aware `run`. Passing cases included grant revocation, +failed DELETE before/after dispatch, ambiguous CREATE, disposal during open, +read cancellation, target capture/resource expiry, attached-app preservation +and same-port service replacement. The failure was a refused MCP checkbox +physical click, not a successful interaction. Fault-injection probes used the MCP SDK +in-memory transport with the real verified descriptor/native service; normal +operations used the shipped stdio adapter. + +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs fabric preservation` +added **1 passed, 0 failed, 0 skipped manual check**: select/reset and stale +preview rejection through the protected descriptor, then helper-described +PID/start-time/executable equality after session and service close. +Artifacts: `fabric-lifecycle-qualification.json` and +`fabric-preservation-qualification.json` in the follow-up directory. + +Paper's separate command, +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper`, used +`yarn storybook driver --macos --paper --agent --reporter json` and +`yarn storybook run --macos --paper --reporter json`. It recorded +**14 passed, 4 failed, 0 skipped manual assertions**: +revocation, delayed-open disposal, ambiguous CREATE, both DELETE-loss +boundaries, owned select/reset, stale-preview rejection, read cancellation, +capture/resource expiry, attached-app preservation and same-port replacement +passed. The real channel survived 22 seconds idle. This is a bounded lifetime +check, not a reliability window. The physical Checkbox click was refused +before dispatch (`obscured`); semantic activation was **Unsupported** by the +provider. The keyboard-clear assertion failed with a nonempty value, and the +next semantic-clear assertion failed its dependent precondition without +attempting that mutation. Do not count these as four independent defects. + +The independent follow-up, +`node artifacts/desktop/f15-20261112T115411Z/qualify.mjs paper input`, +recorded **4 passed, 1 failed, 0 skipped manual checks**. Value polling +confirmed the keyboard-clear failure was not merely the immediate read: +100 reads with 50-ms waits still found two characters. Semantic clear, +independent physical pointer/keyboard/text/wheel delivery, protected-args +refusal and a successful MCP type/value-check/observe interaction passed. +No mutation was retried. The driver ledger records receipts, reproduction +and suggested ownership; the MCP ledger records the Paper measurements. +Original results remain in `paper-qualification.json`, with the exact full +harness archived as `paper-harness.mjs` (SHA-256 +`d43c92e080896d4c29ea64b1c7cf5226009e807fe131ab68d6c2059e7fbe77e5`); +the follow-up is `paper-input-qualification.json` / `paper-input-harness.mjs`. +Paper driver runs were `53a421b0-d2f2-4037-97f0-d32b4c557dbd` +and `600456f7-575b-4f2b-877e-07387a0004c4`; their companion +`run.json` files report zero selected suite tests, not these manual counts. + +Routine shutdown signalled only each exact owning CLI, which exited 0; +driver/channel/Metro exited and the descriptor was withdrawn. The app's +exact incarnation was preserved until this operator terminated its own app. +Apps were quit before another `run` and before renderer changes. +An earlier harness attempt broadcast SIGTERM to its whole process group, +leaving a stale descriptor and failing restart. It is retained as **9 passed, +4 failed, 0 skipped manual checks** in `fabric-qualification.json`; initial +context-readiness and dependent clear checks also failed there. +After proving service PID 51504 exited and its three ports had no listeners, +the exact stale record was removed with validated storage's compare-and-remove +API (`descriptor-reconciliation.json`). This is operator reconciliation, not +automatic recovery or a clean shutdown pass for that attempt. + +**Observed final cleanup, passed:** after all app/service runs, +`node artifacts/desktop/f15-20261112T115411Z/audit-cleanup.mjs` ran +under the native lock at 2026-11-12T12:20:26Z. It found no processes from +this worktree, no listeners on 39860/23935/28029, no default descriptor +and no per-user workload claim (`cleanup-audit.json`). The first audit +mistook a concurrently running evidence-summary shell for a survivor; +that diagnostic is retained in `cleanup-audit-initial.json`. The isolated +audit passed without killing or ignoring any process. The wrapper exited 0, +and subsequent `lsof` found the machine-wide `native.lock` unheld. + +**Remaining qualification:** the failed authored Accordion callbacks and +unexecuted later callbacks, refused physical Checkbox activation and Paper +keyboard clear must be resolved. Native cleanup-failure retention, injected +startup/shutdown survivors, story quarantine/recovery, mutation cancellation, +correlated readiness/render faults, lost-context fencing/recovery, registered +secondary windows, protected HTTP/WS ingress, launch-mode discovery and +explicit legacy separation were **Not run** on this source. Fabric idle +lifetime, the reliability window and durable TCC continuity were **Not run**. +Windows/Win32 were **Not run** on this macOS host. Typed-client response-loss +tests do not establish native failure containment. #4441's macOS acceptance +remains open; no sibling-branch evidence or successful smoke is inferred.