Repository navigation
Conversation
…page Replace the flat notification list with the web Control UI Inbox model: only items that still need the user, action-first order, All/Approvals/ Mentions/Automations/System tabs, expandable rows, Dismiss shown, a notification settings shortcut and a 9+ capped badge that turns caution while an approval waits. - InboxProjection (WinUI-free) owns classification, order, tabs and badge - InboxView is shared by the bell flyout and the full Inbox page - Banner 'Show more' only appears when the Inbox has another entry - Strings localized in all six locales; ledger rows updated Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. What this changesAdds persisted Do not disturb controls and Windows device privacy alerts to the shared Inbox, including the preceding Inbox and approval layers. Example: Do not disturb is enabled when a channel warning and an exec approval arrive.
Review scores
ProductKind: Feature · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 4 items remain Keep open: this maintainer-authored PR adds useful capabilities absent from main, remains part of an explicitly paused landing stack, and has no confirmed new source finding from this review. Priority: P2 Before merge
Findings
Tests
Agent review detailsHow this fits togetherCompanion combines local notifications, authenticated Gateway facts and Windows privacy status into one Inbox; presentation policy controls banners and toasts, while approval decisions return through the existing operator WebSocket. flowchart LR
A[Local notifications] --> D[Inbox feed]
B[Gateway facts] --> D
C[Windows privacy status] --> D
D --> E[Inbox page and bell]
D --> F[Alert policy]
E --> G[Approval decision owner]
G --> H[Gateway WebSocket]
Technical reviewBest possible solution: Land the dependency stack in order, retaining the shared settings, notification and approval owners, after the scoped runtime and upgrade gates are satisfied. Do we have a high-confidence way to reproduce the issue? This is a feature request implemented by the PR; current main lacks the DND preference and This PC privacy-alert source, while supplied native images demonstrate parts of the cumulative Inbox behavior. Is this the best way to solve the issue? The design fits existing ownership: DND gates interruptions without discarding Inbox items, privacy alerts reuse notifications and allowlisted recovery routes, and approval decisions share one owner. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against e70292487958. Merge-risk optionsMaintainer options:
Provenance checked
TestingProof path: shipped entry point. SecurityNeeds attention: Native approval activation needs final-effect authority evidence before the security boundary can be cleared. EvidenceSecurity concerns:
What I checked:
Likely related people:
Preflight sourceSource unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified. Review metrics
LabelsLabel changes: No label changes. Label justifications:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment HistoryReview history (3 earlier review cycles)
Reviewed November 8, 2026, 5:37 PM ET / 22:37 UTC (Revision 4). |
InboxView unbound itself on Unloaded, and a late Unloaded from the previous close could disconnect the freshly opened flyout. Hosts now own the binding: the flyout unbinds on Closed and the page on its own Unloaded. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
00f4c9f to
247abef
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
e825aea to
5308060
Compare
…yout The full Inbox page restores the standard SelectorBar spacing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ount alerts Wire Gateway-sourced items into the web-aligned Inbox through the existing operator client: - Typed pending approvals (exec, plugin, system agent) from approval events, hydrated with *.approval.list on connect and removed on resolve, expiry or disconnect. Expanded rows show the expiry countdown, scope/effect text, warning, command preview and Open chat (decisions follow in layer 3). - Failed and overdue automations from cron.list/cron.status, matching the web Control UI rules, with Ask OpenClaw and Open Automations. - Expired or missing model-provider accounts from models.authStatus, with Ask OpenClaw and the matching sign-in or API key action. - InboxFeed combines app notifications and Gateway facts so rows, tab counts and the badge share one projection. Gateway text is never logged. - New strings localized in all six locales; ledger rows updated. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…sts and long commands Review fixes for the Gateway-sourced Inbox items: - Out-of-range epoch-ms times (e.g. 9007199254740991) are rejected or clamped through one GatewayUnixTime helper instead of throwing and freezing every Gateway Inbox item until disconnect. - Approvals expire on a local-clock deadline fixed at arrival (arrival plus the Gateway's own lifetime), so a skewed Gateway clock cannot end them early or keep them forever. Repeats keep the original deadline. - host "gateway" is labelled "Gateway" (localized), not "This computer"; the Gateway may be remote. - The approval command preview shows the complete command in a scrollable, selectable block; hidden control, bidi and format characters are shown as visible escapes instead of being trimmed or rendered invisibly. - WorkspaceWindow no longer creates a fallback InboxFeed that never unsubscribed from the notification service. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add Allow once / Always allow / Deny to Inbox approval rows and actionable Windows toasts for approvals that arrive while OpenClaw is in the background, with one authoritative decision path shared with the chat approval banner. - OperatorApprovalDecisions owns every operator decision: it revalidates the live pending approval (id, kind, unexpired, offered decision, explicit operator.approvals/admin grant, observed connection epoch) right before sending through the kind-aware OpenClawGatewayClient.ResolveApprovalAsync (exec.approval.resolve, plugin.approval.resolve, approval.resolve kind system-agent). Stale replies remove the row; other failures keep it for retry. - The chat banner routes through the same owner; the RPC-not-slash-command rule is unchanged. - Commands that cannot be reviewed in full are deny-only, matching the chat banner. A request that states unknown or malformed allowedDecisions offers nothing rather than the defaults. - Toasts carry only the approval id, decision and a one-shot token bound to the client and connection epoch; Allow once only for a fully shown exec command, never Always allow. Stale, forged or replayed activations open the Inbox. Toasts honor Show notifications and are withdrawn once decided or expired. - Local node exec approvals keep their separate in-process dialog. - New strings localized in all six locales; ledger rows updated. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
- Inbox Allow once / Always allow are offered and accepted only when the row shows the whole command; otherwise only Deny. - Chat banner decisions resolve against tracked approvals only (banner id or its correlated canonical id); untracked, expired or resolved ids are refused. Expiry uses the local per-approval deadline for rows, chat and toasts. - The chat banner offers only the decisions the owner accepts and shows the approval-access reason without an explicit grant. - Toasts offer Allow once only without a Gateway warning on a host confirmed to be this computer, and show that host; tokens are bound to the shown decisions. - Approval rejections log only the method and allowlisted codes. - Approval access is recomputed as soon as a reconnect's handshake arrives. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…rough Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
5308060 to
14bcce4
Compare
…ferences Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
Preserve complete approval disclosure and exact observation fences. Native hardware validation covers the integrated top-layer snapshot; per-layer CI and mounted UI proof remain explicit gates. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
Use gap-free native visible-range coverage while retaining every target rectangle and actual selection readback. Check the entire meaningful malformed-scope note and retain bounded non-content geometry diagnostics on failure. Native CI validates this test-only adapter correction. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Use provider-native case-sensitive FindText rather than translating UTF-16 offsets into structural UIA endpoints. Retain complete disclosure, selection endpoint readback, gap-free visible ranges and every target rectangle. Exact native CI remains required. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Exercise authenticated live and reconnect feeds, complete redacted disclosure, real local expiry and native actions. Use provider-supported Character movement with zero-content-only outer normalization, exact text and strict visible range/geometry checks. Preserve approval-review and lost-ack fixture admission. Native CI remains required. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Keep the successful native button observation and invoke once outside the existing bounded readiness poll. Preserve exact row/action identity, visibility, single-send receipts and all current time budgets. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Current native Inbox proof (eacfa34)Source: PR head The native scope facts completed ten Allow and six Deny decisions on page and flyout. Full text, actual selection endpoint readback, ordered gap-free visible ranges and every target rectangle are checked before decisions. Recipient full-document equality covers both entries; explicit selection targets the final recipient and audience. The live feed and reconnect/action journeys also passed, including the real local expiry and a single accepted explanation send. These are actual current WinUI controls against an authenticated synthetic Gateway. No command/plugin operation or external provider executed. The frames are current successful scenarios, not pre-repair comparisons. Complete standing commandListed recipients and external audienceLimits: the visible DND footer is not proof of native toast suppression, and the containment warning is not an MXC pass. Native toast final-I/O authority, real packaged privacy/settings/recovery, strict Gateway/MXC execution and the requested second-model review remain open. Browser image rendering verification is unavailable; uploaded asset bytes are checked against the inspected PNGs. Earlier host crashes remain retained rather than labelled fixed or flaky from this green run. |
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
Preserve shared Inbox and Back to app/Escape focus contracts, all six locale unions and layer-specific behavior. Carry bounded fixture cleanup, private native exit diagnostics and deterministic reconnect ownership tests without weakening assertions or deadlines. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve strict fixture selection and voice visibility contracts. Make queued-send proof causal and retain bounded exception metadata. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve strict selection, queue, and natural-tail assertions. Record bounded native bring observations without changing navigation policy. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve shared Inbox ownership and retain reminders until navigation is admitted. Include strict fixture data and existing runtime proof gates. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve the reviewed Inbox navigation admission and diagnostic corrections. Upstream changes are limited to DESIGN guidance and its docs-only classifier case. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Retain the primary Type.Method guard and document the companion host-wiring guard in the invariant. No runtime or test assertion changes. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve existing assertions, timeout budgets and production behavior. Source review and focused native evidence remain separately recorded; no OS toast-activation claim. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve all reviewed Inbox proof changes and explicitly compose the DND fixture selection tokens with upstream contract tests. No required runtime checks are waived. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Keep native selection, sidebar geometry, and deferred retry proof within the existing budgets. Add passive bring-option diagnostics without changing scroll policy. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Keep exit diagnostics and strict result admission inside the upstream animation preference lifecycle. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve transport deadlines and native accessibility assertions while recording safe prerequisite evidence. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Preserve native focus, Gateway oracles, and existing deadlines. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Keep native admission and exception propagation contracts intact. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
PR cleanup reviewReviewed head: Source cleanup review at 9d4b0d8 against main e59374c: this is not fully superseded. Main now contains the Inbox shell/live-fact layers from #2057 (feat: web-aligned Inbox for the footer bell and notifications page)/#2060 (feat: show live Gateway approvals, automation failures and account alerts in the Inbox), with 29 changed files already identical, but DND, This PC privacy alerts and the still-open #2063 (feat: decide approvals from the Inbox and background toasts) approval-decision layer remain. The current merge preview has 44 conflicting paths even though the body still describes an older conflict-free base. Current-head CI is green, but that does not replace Windows-delivered toast, actual packaged privacy denial/recovery, DND notification/sound exception and strict Gateway/MXC proof. Please reconcile the stack onto main and refresh those proof boundaries before landing. Action in this cleanup pass: leaving this PR open. No branch changes or runtime-proof waiver. The findings above come from source, discussion and recorded-CI review; Windows validation was not rerun in this pass. |


Original implementation by @bkudiess. Review repairs and additional verification by Roboclaw.
Work sessions
Review readiness (2026-11-09): preparing for author review, not merge-ready. Current head
9d4b0d8b2bf2is conflict-free against incorporated main045d13ac19b8. Fresh CI is pending for the independently reviewed diagnostic repair. Historical failures and source-bound proof remain below; fresh overall Platinum and remaining runtime proof are still required.Depends on #2063 (feat: decide approvals from the Inbox and background toasts), which depends on #2060 (feat: show live Gateway approvals, automation failures and account alerts in the Inbox) and #2057 (feat: web-aligned Inbox for the footer bell and notifications page). This is layer 4 of 4. The branch remains cumulative; the dependency must land first and the stack must be reconciled before the next landing.
What Problem This Solves
There was no way to silence OpenClaw alerts without also missing approvals, and nothing told you when Windows privacy settings blocked a device that an enabled node capability (camera, microphone, location) needs.
User Impact
User impact: the Inbox (bell flyout and full Inbox page) has a Do not disturb toggle. While it is on, Windows toasts, their sounds and in-app banners stay silent for everything except approvals and device pairing or scope-upgrade requests; the Inbox still collects items and the bell still counts them, and the bell switches to a slashed bell with help text "Do not disturb is on. N waiting". The System tab now shows This PC alerts (for example "This PC: camera access is off") with Open Windows privacy settings, which disappear when the block clears or the capability is turned off. This PC alerts work in the packaged (MSIX/Store) app; unpackaged development builds never show them (see Evidence).
Why This Change Was Made
DoNotDisturbPolicydecides;ToastService.ShowToastapplies it using the alert kindAppNotificationPublisherderives from the existing Inbox classification (so exec-approval Gateway notifications still toast), andAppNotificationInfoBarPresenterapplies it to banner eligibility without forgetting banners the user closed. Background approval toasts fromApprovalToastPresenterare never silenced. The Settings Send test notification button stays an explicit user test.SettingsData.DoNotDisturbis a field-scopedISettingsStoresave; hosts read and toggle it only throughInboxFeed, which ignores stale change events.AppCapability.CheckAccess(no prompt) only for devices an enabled capability needs while node or MCP mode is on: camera forcamera.*, microphone for speech-to-text and camera clips (they record sound by default), location forlocation.get. They re-read on settings saves and Windows access-change events; a dismissed row stays dismissed until its block clears or changes. The action opens only the matchingms-settings:privacy-*page.OPENCLAW_FIXTURE_DEVICE_ACCESSsupplies synthetic access for manual fixture proof.docs/ARCHITECTURE.mdgains the Do not disturb and This PC rows.Evidence
Earlier rating-repair evidence
Earlier native screenshots
Exact source, test assertions and limits. These are current successful states, not a pre-repair comparison.
Public asset bytes match the inspected PNGs. Browser rendering verification remains unavailable. The static DND footer, where present, does not prove native toast suppression or packaged privacy behavior.
The latest test-only correction waits within the existing observation budget for the exact row action to be visible and enabled, retains that native button handle, then invokes once outside the poll. It does not retry an action, increase a timeout, weaken an outcome check or change product behavior. Independent source review found no confirmed defect; the current native fixture suite passed 89/89 with zero skips.
Adds three real-client protocol facts and two mounted native journeys for live approval redaction on page/bell, real local expiry, initial/reconnect inventory hydration, native navigation and the actual restricted Ask OpenClaw send. These tests use the existing authenticated synthetic Gateway, not live providers or command execution. Complete meaningful text, gap-free native visible ranges and every finite positive viewport rectangle are required. Provider-supported Character round trips may remove only strictly zero-content outer positions; FindText is not used. Source, closure and joined-fixture reviews found no remaining confirmed finding. Current native execution and inspected images are documented in this source-bound proof comment.
The test adapter also restores checked native Character movement for approval selections, with content-preserving normalization of a zero-start target. Actual selection endpoint readback remains required. The previous unsupported FindText failures are retained below, not counted as a pass.
Addresses the latest source findings: complete scoped command, publication visibility, listed recipients and audience are displayed and included in permit gating; shared redaction covers Inbox/accessibility and non-exec toast text. Unknown or malformed scope stays deny-only. Recipient snapshots are immutable and structurally compared, and chat cannot permit consent it does not display. Independent source/proof reviews closed the known-field compatibility and snapshot-ownership follow-ups. Mounted tests use the supported plugin event shape. Both current scoped-consent facts now passed on this layer’s identified CI merge, including ten Allow and six Deny decisions. Earlier range failures are retained as historical attempts below.
Earlier visual evidence and source context
Prior repair evidence (historical)
Includes the reviewed approval disclosure, final-send fencing and uncertain-outcome repairs from the preceding layer. The original DND and This PC increment is preserved without unrelated changes.
Inspected native before/after comparison and limitations. The original approval head fails the complete-disclosure assertion; repaired source passes.
Earlier author evidence (historical)
Fixture Gateway (
chat-interactive,approval). The first two screenshots come from an earlier build of this branch, before the fix that attaches settings after the service provider exists (the bell badge path did not change); the rest come from the final code. Plain bell, nothing waiting:Amber count while an approval waits; the flyout shows the new Do not disturb row:
Do not disturb on: slashed bell, the amber count still shows, and the approval is still listed. The bell's help text reads "Do not disturb is on. 1 waiting" and
settings.jsonholds"DoNotDisturb": true:Do not disturb on the full Inbox page:
This PC row in the System tab with an accent (non-approval) count, from a fixture app launched with camera enabled and
OPENCLAW_FIXTURE_DEVICE_ACCESS=camera=denied-by-user:Change Type
Scope
winnodeRequired proof pools
windows-wsl-mxc: required approval/transport containment path. Blocked on Windows Server; needs an MXC-enabled Windows client runner.windows-winui-interactive: new Inbox Do not disturb states, the slashed bell and This PC rows need current-head visual, accessibility and notification proof in the WinUI app, including on-screen toast suppression and a real privacy block in the packaged app.Validation
Current diagnostic and review repair
Head
9d4b0d8b2bf25b77aef40dc003ca59bf07d42ae4, treed7ac34e4a7e1ab56f970d67cb7fc2d1ba84ea773. Build and Test 42669877128 is pending.The optional file sink no longer suppresses default exception reporting: a bounded, content-free stderr fallback preserves sanitized exception type and signed/hex HResult for disabled, unavailable, failed or overflowed capture. Original exception propagation and native event lifetimes remain unchanged. The real sink class now has29 cases, including ten added regressions. Exact translated-wording snapshots were replaced by required-key membership; all-locale parity/nonempty checks and native focus assertions remain. The later-layer OpenRoute callbacks remain because they serve live Gateway/approval/This PC actions; L1-only dead-code deletions and its closure guard were not copied into this layer.
Native whole-head validation remains pending for this layer. The common29-case sink regression passed on all three hosts using the L1 candidate, but that is not a substitute for this layer-specific closeout.
The bounded complete source review found no confirmed P0-P3 issue. Local build/Shared/Tray/focused attempts remain blocked by missing PowerShell/.NET; no local execution is claimed. Current native UI/animation lanes, historical crash and visibility failures, and fresh ClawSweeper assessment remain separate gates. The previous L1 review rated proof Platinum but patch quality/overall Silver; these are the repairs for its two findings, not a self-assigned new rating. Automatic review dispatch on this push failed to start, so no completed new review is claimed.
Previous joint-readiness revision (historical)
Head
c34c2cff28a107b138766b41b003a8f591edad58, tree311994c7398e8e387617e71c77f0d355595565eb. Build and Test 42616075814 failed.Current CI failed in Tray and UI. The main-identical voice-cancellation test missed its inner two-second callback wait, then completed outer cleanup; independent source classification does not establish an Inbox cause. The ordinary UI host reported0xC000027B while ReasoningPicker_ReflectsInheritedDefaultWithoutOverridingExplicitChoices was active after311 passes/6 skips. All three Back-to-app activation rows passed beforehand. The mounted fixture completed92 passes/1 failure: message240 was not visible at wide width. Stable-profile DND and unchanged compatibility each passed1/1; both animation lanes passed6/6 and1/1; Accessibility including About passed21 with13 existing skips. Current-head full hardware closeout is pending, and preceding-source hardware remains source-bound below. No rerun, weaker visibility oracle or cause claim.
The reviewed readiness correction preserves the original actions, real native focus/Gateway assertions and deadlines. L1 has only the Workspace helper change; the other layers also retain the same-page feed-tab wait and one native invocation. Local required/focused commands were attempted but blocked by missing PowerShell/.NET; zero local tests executed. Historical failures and source-bound prior passes remain below. The separate non-memory ObserveOnly draft has not run or been published; its two independent review findings are being corrected. No memory capture, debugger or failed-suite replay has occurred.
Previous prerequisite-observation revision (historical)
Head
454fab2e52de5556a9db7e2a1603b7bcf631a500, tree889e9e92ee79b43f1040a8966bc99edb12a6d75f. Build and Test 42606906277 passed. The reviewed change preserves transport250ms/two-second budgets and all existing assertions, adds prerequisite observations before cleanup, and starts the fixture accept pump eagerly. This is test readiness/instrumentation, not a proven cause-specific product fix.Exact current-source native closeout 42608459586 passed full
./build.ps1, Shared/Tray and cleanup on Azurex64 and both ARM64 hosts. Actual six TRX files confirm AzureShared5101 passed/25 existing skips, ARMShared5102/24 each, and Tray5709/zero skips on each host. All14 backoff cases and all13 production-owner/real-wire plus cleanup-policy cases passed on every host. This closes the current execution gap without claiming a cause for the earlier Azure timeout or proving OS-delivered notification activation.Current CI tested merge
4a7c5bd3062f70ed0d0ad21f4c6a286631d3ecb3. Ordinary UI passed771/7 existing skips, including81 named AxeHelper cases; enabled/disabled animation proof passed6/6 and1/1, full mounted fixture93/93, profile48/48, Functional19/19, DND released-profile1/1 and unchanged compatibility1/1. Accessibility passed21/13 existing skips, including About. The helper emitted33 diagnostic records in controlled ordinary-test cases and none in the real Accessibility step; no diagnostic record is attributed to the old About failure. The previous violation remains retained and its cause unresolved.The bounded Axe projection preserves the25-pixel rule, exclusions, original native reads and single conditional retry. Current DND/native save-restart and portable-profile proof is real; OS toast/sound exceptions, Windows-delivered approval activation, packaged privacy/settings recovery and strict Gateway/MXC remain distinct outstanding boundaries.
Local mandatory/focused commands were attempted but cannot execute without PowerShell/.NET on the Linux coordinator; no local pass is claimed. Retained earlier runs and their exact source limits remain below. No assertions, timeouts or test selections are relaxed, and no fresh ClawSweeper assessment is claimed. Private capture remains parked; only a separately reviewed non-memory ObserveOnly preflight draft is being prepared for the still-blocking, unattributed L1 process failure.
Retained diagnostic-revision scope and limits
Diagnostic revision before terminal results
Head
454fab2e52de5556a9db7e2a1603b7bcf631a500, tree889e9e92ee79b43f1040a8966bc99edb12a6d75f. Build and Test 42606906277 is running. This revision preserves every existing transport assertion and250ms/two-second budget, starts the test server accept pump eagerly, and records bounded prerequisite observations before cleanup. The reported historical line600 wait is RetryEntered, not evidence of missing HTTP headers. The focused source inventory is14 cases; native execution remains pending. Independent source review found no confirmed P0-P3 finding.This layer additionally records capped, content-free cached Axe geometry and the existing retry decision. All40 existing helper cases, the25-pixel rule, one conditional retry, native getter sequence and exclusions remain;41 new cases give81 expected focused cases. The console record is helper-scoped, so native delivery and association with the actual failing scan must be verified before interpreting it. This is instrumentation, not an About-page fix or permission to rerun an unchanged failed job.
Required local build/Shared/Tray and focused validation attempts remain blocked by absent PowerShell/.NET on the Linux coordinator; zero local execution is claimed. New exact-L3 hardware42607019175 is running after the preceding attempt finished. Other current-head native closeout follows serially; previous failures and proof identities remain below. Private memory capture is parked.
Immediately preceding validation and retained failures
Preceding source-bound readiness results
Head
697f1dfac0233a80fa1771f45a6458b82ec3267f, tree9e0dc43134f51f38be8d70f213816fa8f6d679e7, main045d13ac19b80523578ae9b2648d7dafa3460efc. Build and Test 42598022108 is failed. This is a reviewed source revision, not an unchanged retry. The merge preserves native exit diagnostics, animation-preference restoration, strict TRX admission and the new separate six-case enabled/one-case disabled animation lanes.The reviewed corrections retain a live owned assistant-selector peer while reading fresh selection state, require stable post-unpin geometry within the original limits, and drive genuine queued retry callbacks within the same single 300 ms budget. No action retries, timeout increases, weakened assertions or test exclusions were introduced. All twelve focused queue cases and nine new passive Boolean-observation cases passed in the exact-source L1/L2 three-host runs below. Source review remains separate from those executions. The voice observations do not change scrolling policy or establish a crash cause.
The preceding published head completed all required CI checks successfully; that earlier pass does not validate this new SDK/source combination.
Production decision-owner plus authenticated real-WebSocket proof: 11 authority cases + 2 cleanup-policy controls passed on all three native hosts in run 42583672049, exact previous L4 head
41f800e0cabf/tree483af600. The same test/consumed owner sources are retained. All builds/Shared/cleanup passed; one ARM64 Tray suite retained a queued-send probe failure, now corrected at its test driver. This is direct decision-owner plus real wire, not Windows-delivered toast activation, and not a fresh whole-head hardware pass.Current-head DND and UI proof: CI42598022108 tested merge
f435e92568da20b64e441fc49f6b64f5e81fbbc2, tree-identical to published697f1dfac023. Downloaded selected TRX/JSON receipts confirm ordinary UI730 passed/7 existing skips, animation-enabled6/6, disabled1/1 with preference restored, Functional19/19, profile48/48 and full fixture93/93 with zero skips. The twelve-cycle selector, post-unpin geometry and natural voice-tail facts passed. Native DND bell/page saves, banner/row/badge behavior and restarts passed; DND latest-stable portable-profile1/1 and unchanged compatibility1/1 also passed.legacyDndFieldAbsent=true, initialfalse, true/false saves across restarts, three Gateway records, identity hashes and unrelated preferences were preserved. Stable v2026.11.1 appSHAC8F4A14857177683D74C1E176D7C83E3584B658976F070D941E1CD0F99E14446and candidate appSHA5284422B9FB1FB4598883C400C26DAC42CA1872B44BA659A82EFDA9EC81871D0were verified. This is portable-profile/native UI evidence, not installer/Store, OS toast/sound exceptions or packaged privacy.The sole CI failure is Accessibility:20 passed/1 failed/13 existing skips. About context reported one unidentified Text peer below the25-pixel BoundingRectangleSizeReasonable requirement. The scan includes changed shared Workspace chrome, so equal About sources and passing main baselines do not establish an unrelated flake. A bounded metadata diagnostic is under development; the rule, existing retry policy and failed gate remain unchanged.
Required local commands (
./build.ps1, Shared and Traydotnet test --no-restore) cannot start on the Linux coordinator because PowerShell/.NET are absent; zero local tests are claimed. Exact-source native L1 42598243404 and L2 42599700292 passed full build/Shared/Tray/cleanup on Azure x64 and both ARM64 hosts. Actual six TRX files per run confirm L1 Shared4903/4904 passed with25/24 existing skips and Tray5436/zero skips each; L2 Shared4939/4940 with25/24 skips and Tray5497/zero skips each. Each host passed queue12/12 and passive options9/9.Exact-current L3 hardware 42601217991 retains one Azure Shared failure:5096 passed/1 failed/25 skipped in the PR-added pre-header negative control, before its manual phase. The stack maps to
RetryEnteredobservation, not evidence of missing HTTP headers. Azure Tray was not reached. Both ARM64 hosts passed Shared5098/24 existing skips and Tray5669/zero skips, including all13 real-wire/failure-policy cases. All builds/cleanup passed. This aggregate failure is not waived by those selected passes; L4 hardware remains held while the shared test is diagnosed.Not verified / blocked: the retained native test-control failure, L4 Accessibility gate, OS/security/runtime boundaries and fresh ClawSweeper rating. The passing PR CI runs do not substitute for these additional proof requirements. Private memory capture remains parked. The single non-memory comparison42590088617 did not reproduce the host crash but failed diagnostic admission; it remains incomplete, with no unchanged rerun planned.
Previous source-bound results and failures
Previous source-bound validation
Latest terminal readback: The published head still has only the Shared ledger and dependent CI Gate failures; full UI passed as recorded below. The unpublished DND proof now has full independent review plus closure of its visible-footer navigation precondition. Two native DND/profile cases remain unexecuted. The identical real-wire authority test file is composed into the local candidate after review, with consumed production/fixture owners verified equal to the L3 tested source. This does not establish OS notification delivery, packaged privacy, or a current-head passing run.
Head
901c71571cf7f845950c15651fd054fedd1f7cb2, treeb65f1fe192837a2496100f9c3fb3d3e761877521, incorporating mainb5c37e14. Build and Test 42571411224 is failed. GitHub reported the reconciled branch mergeable; required checks and proof still govern review readiness.Ordinary UI passed 720 cases/7 existing skips; full mounted fixture UI passed 92/92 with zero skips. All five new feed-admission cases passed. The only failed job was Core/CLI because of the malformed architecture-ledger guard reference; CI Gate correctly failed. The reviewed one-line ledger correction is locally committed. Additional DND proof is being prepared; no new DND runtime result is claimed.
The completed preceding/current source-bound Tray suite passed 5,644 cases with zero skips. Fixture profile integration passed 48/48, Functional UI 19/19, and the existing portable-profile compatibility case passed. These boundaries do not prove native OS toast authority, packaged privacy or DND-specific upgrade behavior.
The ledger correction preserves both real guard tests: one valid Type.Method stays in the machine-readable column, and the companion guard is named in the invariant. No production behavior, assertions, filters, cycles or timeouts are relaxed. Earlier test compiler/analyzer and positive-GUID-fixture corrections are included.
Three-host run 42571519795 on L1 tree bebd585e passed all builds/cleanup and metadata 19/19 per host, then failed the same ledger check (Azure Shared 4,902 passed/1 failed/25 skips; each ARM64 4,903/1/24). Tray was not reached. Earlier run 42569076140 passed full build/Shared/Tray on pre-main tree d2b8fa95; it remains supporting correction evidence, not a later-head pass.
Not verified / blocked: current passing full validation and fresh ClawSweeper assessment; all layer-specific proof and second-model limits below remain open. A passing UI run does not establish a historical crash cause. Separate main-only crash capture remains parked, with no memory capture performed.
Earlier diagnostic-source validation (historical)
Current head
b5fc44022df0ead4764bacd1861b82ded4fff5d5, tree7a232d919417f80b95c5d0b0ff4e9ff039e373aa, main parent1c7901f6cb1e743ad42e8528780824ffd23af214. CI run 42562512661 completed with failure. Current-source results below do not validate the later local corrections.Ordinary UI passed 720 cases / 7 existing skips, including all three Back-to-app mouse/Enter/Escape cases and all five new pure voice/selector observation cases. Mounted Gateway fixture UI passed 89/89, zero skips. Latest-stable portable profile compatibility passed 1/1; Local AI profile proof passed 12/12. These passing UI results do not override the Shared/Tray compilation failures or establish the cause of other runs’ native crashes.
Exact-source three-host full build/Shared/Tray closeout remains pending; another layer’s candidate result is not substituted for this tree.
No test filters, cycle counts, visible assertions, exception-handling outcomes or timeouts were relaxed. Independent source reviews covered components and composition, but native compiler/runtime evidence remains decisive. Private crash classification and the separate Windows runtime proof pools remain open. Prior screenshots and results below keep their original source identities.
Earlier combined-source native results
Current head
94008bf6c291756e62aa536b1aca862ba7f92a06, tree4417f348381e7dd01b55ee8c37c28e0b7b15205f, with main parenta39bd70aab55bfdc0053b278756a87c8a3305bcf. Current CI run 42554760126 completed with success. GitHub tested synthetic merge19957deaagainst maina39bd70a, not the branch tip alone.Shared: 5,095 passed / 8 existing skips / 0 failed. Tray: 5,596 passed / 0 skipped / 0 failed.
Diagnostic self-tests: 29 passed. Failure-lifecycle owner: 18 passed. Inbox/Settings composition: 7 passed. Fixture profile/app integration: 48/48 passed. Functional UI: 19/19 passed.
Mounted Gateway fixture UI: 89/89 passed, 0 failed, zero skips.
Latest-stable portable-profile compatibility: 1/1 passed. It does not establish installer/Store or DND-specific upgrade behavior.
Ordinary UI: 675 passed / 7 existing skips / 0 failed, including all three Back-to-app mouse/Enter/Escape cases. The final CI Gate passed. Native screenshots for the newly composed focus paths still require separate artifact inspection.
The complete native fixture lane passed all twelve repeated switching cycles and the existing scope, selection, redaction and decision assertions. This passing result does not establish the cause of earlier host crashes. Independent source reviews covered the composition, resource unions, failure ownership, exit diagnostics and causal reconnect tests. Required exact-source three-host full build/Shared/Tray closeout remains pending.
No assertions, cycle counts, test filters or timeouts were relaxed. No unchanged rerun was used to clear these failures. New local candidates are not included in the published source above. Previous screenshots and results below retain their historical source identities.
Earlier verified native validation
PR head
eacfa342e165394e970f573858cd62d227e0bff3, tree19df4da32d312e7208d6feb5b8129a86d1284fd0. CI run 42526534115 tested mergef64957c8dda5bc54eb2805812b17f61f7cadfbbfwith maine70292487958be9e70170e2f3affe7afc42056e8, not the branch tip alone.The complete three-PR proof delta and merged fixture admission passed independent source reviews. Required local commands were attempted but could not execute on the Linux coordinator; the native results above are separately identified. Historical crashes and failures remain retained below, not declared fixed from a later green run.
The unchanged authorized three-host exact-tree closeout completed successfully on validation commit
fc6b472a7ce689f0ed889e39b5630657e2ff7e99. Its tree19df4da32d312e7208d6feb5b8129a86d1284fd0exactly matches this PR head, distinct from the CI merge above../build.ps1: passed on Azure x64 and both native ARM64 hosts.--no-restore. Six exact TRX files were downloaded and parsed; all isolated-settings cleanup steps succeeded.Earlier validation and original author results
Earlier attempt logs remain available: initial native scope visibility, 86/87 after wrapped-range correction, unsupported FindText failures, and 88/89 before action readiness. These belong to their original source revisions and are not passing results for this head. The earlier ordinary UI host crashes remain unclassified; later green runs do not establish a root cause. Earlier three-host build/Shared/Tray proof also retains its original tree.
Earlier author validation (historical)
Run on head
e825aeaf(on #2063's review fixes,3e904ada) (Windows 11 ARM64, .NET SDK 10.0.403,OPENCLAW_REPO_ROOTset to the worktree):./build.ps1: passed (Shared, Cli, WinNodeCli, SetupEngine, WinUI; documentation and proof-pool validation passed).dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore: passed 4922, failed 0, skipped 25 (existing opt-in integration/MXC/GPU skips).dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore: passed 5407, failed 0, skipped 0.git diff --check: clean.DoNotDisturbTests(policy matrix, pairing and scope-upgrade requests come through while a standard alert stays silent, pairing results stay standard, both App pairing-request toasts tagged as approvals, approval tagging inAppNotificationPublisher, banner suppression/restore including closing an approval banner while on, persistence, settings attached later, stale change events, toast-service source guard),ThisPcAlertsTests(only enabled capabilities are read, unknown/allowed is not a block, camera needs the microphone, system-managed copy, route allowlist, fixture override parsing, publish/withdraw/dismiss/re-episode/replace throughThisPcAlertSource),GatewayFixtureIsolationContractTests(no host privacy reads or Settings launch in fixture mode),LocalizationValidationTests.Review fixes
DoNotDisturbPolicynow treats Inbox access requests as approvals, and App's node-pairing-pending and pairing-request toasts passAlertKind.Approval; paired/rejected results stay standard.e825aeafthe flyout and page footers show only the icon, label and toggle, left-aligned, and UI Automation reads the toggle asDo not disturbwith no help text. The screenshots above predate this removal and still show the note.Real Behavior Proof
Earlier rating-repair proof and limits
eacfa342e165394e970f573858cd62d227e0bff3, tree19df4da32d312e7208d6feb5b8129a86d1284fd0(test-only action-readiness follow-up).Historical behavior evidence and its original limits
Historical approval comparisons and their source limits remain in the original repair evidence. The current images above are separately source-bound. Earlier pictures and assertions below are the original author’s evidence, not fresh execution of this head.
Earlier author behavior proof (historical)
scripts/run-gateway-fixture.ps1 -Scenario chat-interactive -Interaction approval), plus a second fixture-isolated app on a copy of that profile withNodeCameraEnabledtrue andOPENCLAW_FIXTURE_DEVICE_ACCESS=camera=denied-by-user.00f4c9f2(the pre-rebase layer-4 commit). The review fix and the rebase onto feat: decide approvals from the Inbox and background toasts #2063 do not change the bell, toggle or This PC rendering; head247abef2was revalidated with the full test run above but not re-screenshotted.run approvalto trigger a real fixtureexec.approval.requested; opened the bell; switched Do not disturb on; opened Open Inbox; read the bell and toggle through UI Automation; read the profilesettings.json.Name: Do not disturb, value on/off;settings.jsonDoNotDisturb: true.Yes/No/N/A) YesAppCapabilitybehavior in the packaged MSIX app. A native probe from an unpackaged process returnedUserPromptRequiredfor webcam, microphone and location even though all are allowed, so unpackaged builds map to Unknown and show no This PC alerts (fail-safe, documented in the ledger). Clicking Open Windows privacy settings outside fixture mode was not exercised.Security Impact
Current cumulative repairs retain one decision owner and enforce exact observation, scope, expiry and connection checks after queue admission. Unknown transmitted outcomes retain application-lifetime quarantine, not durable exactly-once storage. No production dependency was added; UIA3 interop is private to the UI test project.
Yes/No) NoYes/No) Yes, display-only redaction uses the shared sanitizer; stored credentials and observed raw approval identity are unchanged.Yes/No) Yes, inherited connection-bound approval reconciliation; no new DND/device-probe RPC.Yes/No) Yes, inherited approval admission hardening; the DND/device-alert increment adds no execution surface.Yes/No) YesYes, explain the risk and mitigation: the app now reads Windows privacy access status for camera, microphone and location withAppCapability.CheckAccess, which never prompts, only for capabilities the user enabled and only while node or MCP mode is on. Only the status enum is logged; no notification or user content is logged or exported. The Inbox action launches only three allowlistedms-settings:privacy-*URIs, and never in fixture mode.Compatibility and Migration
Yes/No) YesYes/No) YesYes/No) Nosettings.jsongainsDoNotDisturb(defaultfalsewhen absent).OPENCLAW_FIXTURE_DEVICE_ACCESSis read only in Gateway fixture mode.Review Conversations
Current repair review is separate from the earlier author reviews. Confirmed source findings are addressed with regressions; remaining runtime requests stay open. Fresh ClawSweeper review will be requested after the current native evidence is complete. Existing review checkboxes remain unchecked until verified.