feat(proof): collect selective evidence within the original review - #1425
feat(proof): collect selective evidence within the original review#1425roboclaw-bot wants to merge 26 commits into
Conversation
|
🦞👀 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: blocked before merge. Reviewed September 6, 2026, 4:19 PM ET / 20:19 UTC. ClawSweeper reviewWhat this changesAdds optional, review-selected Telegram and fixed Web UI checks that return verified observations to the original review, plus maintainer proof commands and compatibility reconciliation. Merge readiness⛔ Blocked before merge - 3 items remain This remains distinct, sponsored work absent from current main. The cached-owner finding is repaired, and the documented 20-minute ceiling addresses the previous timing disposition; no new blocking correctness defect was established. Priority: P2 Review scores
Verification
How this fits togetherClawSweeper reviews GitHub changes through a leased review queue. The new proof bridge sends bounded requests to trusted OpenClaw workflows and returns authenticated observations to the same reviewer before publication. flowchart TD
A[GitHub change or maintainer command] --> B[Leased review]
B --> C[Select relevant check]
C --> D[Validate owner and scope]
D --> E[Trusted proof workflow]
E --> F[Verify receipt and observations]
F --> B
B --> G[Normal review publication]
Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep proof optional and bounded within the original review, preserve inconclusive fallback, and coordinate consumer deployment with the reviewed producer contract. Do we have a high-confidence way to reproduce the issue? Not applicable as a feature request; the supplied controlled HTTP traces demonstrate consumer behavior and repaired ownership/deadline cases, but were not rerun during this review. Is this the best way to solve the issue? Yes for the stated consumer boundary: selective same-turn observations address the retired design's inability to inform the original decision while preserving ordinary publication authority. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against bb8bd3eb709b. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (16 earlier review cycles; latest 8 shown)
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
24d67d0 to
23860b0
Compare
0234803 to
d5aa763
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
What Problem This Solves
Let ClawSweeper request relevant behavioral checks during its original review and use their observations before making its decision. This does not restore the unconditional post-review step retired by ClawSweeper #1280.
Requested by @brokemac79 following @obviyus's feedback. Paired producer: OpenClaw #138953. Original documentation: merged OpenClaw #138210.
Consumer candidate:
d405f24703ad7a7fc1539d06304faefdd98ebe8d; base:bb8bd3eb709b093a10ff1336227e89986dbcbb0c; tree:30141944285f2b5dbfaa9032a6406266aee4ac4c. Exact-head local proof and review are complete; they do not establish deployed availability or current GitHub readiness.Why This Change Was Made
Eligible OpenClaw PR reviews gain two optional tools:
The reviewer invokes checks when relevant. Maintainers can also comment
@clawsweeper proof, or restrict the review toweb-ui-chat-proof,telegram-bot-e2e-proof, or both as a comma-separated list. The router captures the current head automatically; an optional SHA must match it. Commands queue the normal proof-focused review, not the old secondary batch consumer.The queue enforces the exact live owner, candidate and scenario allowlist independently of model instructions. Up to three distinct plans share one proof lifetime. Prepared dispatch and completed evidence require matching durable acknowledgements; expired or terminal updates cannot masquerade as accepted transitions. Cached evidence also requires a final read-only ownership confirmation after awaited GitHub checks, without rewriting the cache. The trusted Worker binds producer identity before dispatch, validates Actions OIDC and receipt/artifact provenance, and returns observations only to the owning review. Unknown dispatch outcomes are not blindly retried.
No second review is enqueued by a proof tool. Normal publication, proof assessment and readiness owners retain their authority. Legacy consumer/recipe code remains compatibility and reconciliation tooling; the legacy Markdown recipe is not a third inline tool.
User Impact
Useful behavioral evidence can inform the original review. Reviews that do not need checks skip them. Explicit commands need no manually typed head SHA. A completed process, artifact or video alone does not clear unrelated review, security or CI blockers.
Real Behavior Proof
Claim: evidence reaches the same original app-server turn; ownership, scenario scope, deadline and artifact boundaries fail closed.
Environment: Docker-backed Crabbox
local-container, Docker 29.5.2, imagenode:24-bookworm, observed image IDsha256:be23f54a88d34e8824c741b19b91064094f92c1c97b194144bfc8b50d67258e2, Node 24.20.0, pnpm 11.10.0. The disposable container verified the exact head/tree above before testing. Leasecbx_e58f16958013, runrun_654e2a4f0901.Executed commands:
pnpm run build:all node --experimental-strip-types --test test/dashboard-review-proof-execution.test.ts test/review-proof-client.test.ts test/review-proof-app-server-boundary.test.ts test/repair/proof-command.test.ts test/repair/direct-re-review-admission.test.ts test/dashboard-review-proof-requests.test.ts test/dashboard-review-proof-producer-auth.test.ts node --experimental-strip-types --test --test-name-pattern='inline proof returns real HTTP' test/codex-process.test.ts CI=1 NODE_OPTIONS=--max-old-space-size=6144 pnpm run checkObserved: 63 focused tests and the real-HTTP original-turn test passed. The compiled router/HTTP intake fixture exercised five selections: automatic, Web UI only, Telegram only, both, and unsupported-only. Each preserved the current SHA and corresponding backend scope and used
dispatch_clawsweeper, without a legacy proof dispatch.Current review finding fixed: cached delivery now has the same final owner fence as fresh delivery. The controlled proof pauses the run-metadata HTTP response after initial queue admission, changes the durable owner/scope/deadline, then resumes verification. Each rejected case asserts
inconclusive, no returned observations, and unchanged cache; the active owner receives the expected observations. Before repair the four changed-owner cases returned completed observations. Executed trace:The maximum-size case stores exactly 256 KiB through the actual durable queue and delivers it through the executor and real HTTP to the compiled client. This failed before the envelope correction. The 192 KiB observation and 256 KiB result limits remain unchanged; only 1 KiB transport headroom is reserved for the completion wrapper, including its authoritative expiry timestamp. A valid JSON response one byte beyond the wire cap is rejected.
Producer authentication ordering: the actual HTTP Worker/queue fixture proves missing, malformed, forged or wrong-scope OIDC tokens cause zero durable-object calls. This failed before repair because unauthenticated requests reached the queue lookup. Valid signed claims must then match the durable repository/workflow/run pins; a final redemption still fences an owner revoked during verification. No queue index, schema or cache was added.
Authorized 20-minute ceiling: controlled clocks exercise the actual queue/client boundaries without waiting 20 real minutes. Producer-record/redemption succeeds at minute 16 and rejects at minute 20; a later plan retains the first deadline. Pending proof continues after minute 15 and returns immediately on completion. A second call beginning at minute 16 cannot accept a response arriving at minute 20. Missing/invalid expiry fails closed; an earlier queue expiry cannot be extended by a later call. The existing stuck-HTTP app-server proof still returns inconclusive with time left for the original final decision. The shared-clock regression failed before repair; it and all new deadline checks pass in the container.
The expiry regressions failed before repair for the intended reason: 10 failed because rejected/expired acknowledgements permitted dispatch or evidence delivery. After repair, 27 owner tests passed, including durable expiry persistence across queue recreation.
Full check: exact candidate
pnpm run checkpassed: 5,292 tests, 5,274 passed, zero failed, 18 skipped. Coverage: 86.50% lines, 76.78% branches, 89.95% functions. All static/build/lint gates and 13 changed-coverage tests passed. The full-check phase took 5m16.620s; wrapper and command exited zero. Crabbox reportedleaseStopped=true, and Docker absence was independently verified.Artifacts: retained local reproduction script
csw152-consumer-final-preauth-check.sh, exact source bundlecsw152-consumer-final-preauth.bundle, stdout/stderr capturescsw152-consumer-final-preauth.stdout.logandcsw152-consumer-final-preauth.stderr.log, and validation recordcsw152-consumer-twenty-minute-proof.md. Inspectable excerpts are included above rather than relying on access to local filenames.Limits: controlled GitHub/model fixtures, actual HTTP/Worker/queue and archive verification prove the consumer contract—not live Telegram, deployed producer availability, semantic model-selection quality, or complete hosted latency. An earlier full run had one unchanged legacy tmux assertion failure; its same-container targeted rerun and this final complete run passed.
Codex Review
Mandatory dirty reviews were scoped-clean before both the cached-owner and envelope commits. Accepted findings were fixed and focused proof rerun. The final complete committed branch review uses:
Result: full committed branch scoped-clean at P2, both review partitions with zero accepted/actionable findings, exit zero. Dirty review first found the per-call clock reset; it was fixed and repeated clean before commit. Branch review then found producer authentication after queue lookup; that was fixed, regression-proved and dirty-reviewed clean before the final commit. A later report's outdated
return_run_detailsrecommendation was rejected against the pinned 2026-03-10 official GitHub API contract; the repeated full review independently confirmed that contract and finished clean. Earlier reports remain preserved, not relabeled clean. Final report:csw152-consumer-final-preauth-branch-review-r2.md/.json.A recommendation to restore
dispatch_proofwas rejected because it would restore the superseded secondary-review design. Its underlying stale documentation was corrected, and the actual intended command route was proved above.Risks and Rollout
Release-note context: selective Telegram and fixed Web UI checks inform the original review, with a maintainer command retained as an override.