feat: surface node reapproval in Command Center - #752
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 13, 2026, 10:54 PM ET / 02:54 UTC. Summary Reproducibility: not applicable. This PR is a feature and workflow change, not a current-main bug report. The changed behavior is source-verifiable in the PR diff and the PR body supplies AWS Windows Crabbox plus hosted CI proof. Review metrics: 3 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this only after exact-head Windows validation completes and maintainers accept the explicit approval and reconnect upgrade path. Do we have a high-confidence way to reproduce the issue? Not applicable: this PR is a feature and workflow change, not a current-main bug report. The changed behavior is source-verifiable in the PR diff and the PR body supplies AWS Windows Crabbox plus hosted CI proof. Is this the best way to solve the issue? Yes, conditionally: separating pending declarations from effective surfaces and making node-trust approval explicit matches the trust-boundary goal. The compatibility change still needs maintainer acceptance and exact-head validation before merge. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against ff38d8499c48. Label changesLabel justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
…r-reapproval-ux # Conflicts: # tests/OpenClaw.Tray.Tests/TrayMenuWindowMarkupTests.cs
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Land-ready verification for head
The core contract was checked directly in |
Depends on
Depends on openclaw/openclaw#92547. That core diagnostics PR adds the
optional
node.list/node.describeapproval-state and pending-declarationfields consumed here. Land this Windows PR after the core contract.
Summary
separately from pending declared surfaces
page with a validated, copy-only approval command and manual reconnect action
openclaw nodes pendingguidancenarrowly typed device-pair role-upgrade autoapproval
explicit node reconnect, and exact effective-surface readiness checks
reapproval reconnect, then explicitly refresh the visible cached node list
classifying them as approved/effective
Pending declarations never populate effective fields or counts, and the tray
does not auto-approve command trust.
Behavior
caps,commands, andpermissionsremain approved/effective only.declaredCommandsis never treated as effective.caps: []remains empty; the legacycapabilitiesfallback is used only whencapsis absent.pending-approvalandpending-reapprovalreplace only ordinary active orgeneric node-pair cards. Device-pair role upgrades and off/error/rejected/
rate-limited states retain priority.
openclaw nodes approve <pendingRequestId>.openclaw nodes pendingguidance and do not claim to approve anything.and outside this runtime trust-boundary change.
SetupAndConnectTests; production node command-trust autoapproval is notrestored.
it can request the post-handshake
node.list; changed gateway URL, record, orSSH tunnel still resets the old lifecycle.
AppState.Nodesrefresh so the visible local cache reflects the approved effective surface.
Verification
Initial feature validation, AWS Windows Crabbox provider/id:
aws/cbx_7ee1bb820effrun_2edf3909038erun_56e43890ad02./build.ps1Setup-connect E2E follow-up validation, AWS Windows Crabbox provider/id:
aws/cbx_ee15cfc7388e(amber-lobster,m7i.4xlarge)run_75ca5456a119./build.ps1: passed; Shared, CLI, WinNodeCli, SetupEngine, and WinUI builtrun_5a40ee52f232because the AWS
m7i.4xlargehost does not expose WSL2 nestedvirtualization (
HCS_E_HYPERV_NOT_INSTALLED)Final reconnect/cache validation, AWS Windows Crabbox provider/id:
aws/cbx_c9d8f40c8339(golden-hermit,m7i.4xlarge)run_ae452aebfe28run_7495ac86f546./build.ps1: passed; Shared, CLI, WinNodeCli, SetupEngine, and WinUI builtfixture setup because WSL is unavailable on the AWS Windows Server host
run_16517948e561./build.ps1: passed; Shared, CLI, WinNodeCli, SetupEngine, and WinUI built27453209336, setup-connect job81152595877app.nodesrefresh reaches the exact approved effective surface
win-arm64 packaging jobs passed
27453992205on exact head4bdc7b61b72ddf32e302e3e9678f90ff0e5ffab2test, setup-connect, revocation-recovery, network-recovery, win-x64, andwin-arm64 jobs passed
git diff --check: passedNodeConnector.ConnectAsyncdisposesthe prior client and generation-guards callbacks
node.listfields finding because declared dependencyfix(nodes): surface pending reapproval diagnostics openclaw#92547 emits the additive fields
.reswfiles parsed withxmllint --nooutAn earlier full shared-suite execution (
run_4e33375389e2) hit one unchangedprocess-global app-version override race; final required shared execution is
green in
run_56e43890ad02andrun_75ca5456a119.Real behavior proof
Behavior addressed: Windows Command Center distinguishes approved/effective
node surfaces from pending declarations, requires explicit command-trust
approval, and setup-connect E2E now models approve -> reconnect -> effective
readiness instead of relying on production autoapproval.
Real environment tested: AWS native Windows Crabbox leases
cbx_7ee1bb820eff,cbx_ee15cfc7388e, andcbx_c9d8f40c8339(
m7i.4xlarge).Exact steps or command run after this patch:
./build.ps1, focusedtrust/parser/visible-plan tests, required shared/tray tests, affected E2E project
build, and
dotnet test tests/OpenClaw.E2ETests --no-build -c Debug -r win-x64 --filter "FullyQualifiedName~OpenClaw.E2ETests.Setup.SetupAndConnectTests".Evidence after fix: build, focused parser/behavior/lifecycle/cache-refresh
tests, complete shared/tray suites, and affected E2E compilation passed.
Setup-connect runs
run_5a40ee52f232andrun_7495ac86f546selected all 15tests and recorded the AWS WSL environment blocker. Hosted Windows setup-connect jobs
81152595877and81154842202passed the strict external-tray effective-surface assertion.Observed result after fix: parser and behavior tests prove pending declarations
remain separate from effective surfaces, manual approval commands are validated,
higher-priority/off states are preserved, and the setup-connect harness performs
explicit node-trust approval followed by explicit reconnect and exact-node
effective-surface readiness checks. Same-gateway reconnect preserves the
operator and explicitly refreshes the tray's visible cached node list.
What was not tested: live activation of the new approval/reapproval UI against a
gateway emitting the additive fields until dependency openclaw/openclaw#92547
lands. The full setup-connect operator flow also could not execute on AWS lease
cbx_c9d8f40c8339because WSL is unavailable on the Windows Server host;hosted Windows CI supplied that E2E proof.