Skip to content

fix(queue): keep the owed source-drift review when a completion callback is lost - #1251

Merged
steipete merged 2 commits into
openclaw:mainfrom
yetval:fix/exact-review-completion-metadata-fallbacks
Aug 31, 2026
Merged

fix(queue): keep the owed source-drift review when a completion callback is lost#1251
steipete merged 2 commits into
openclaw:mainfrom
yetval:fix/exact-review-completion-metadata-fallbacks

Conversation

@yetval

@yetval yetval commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Fixes #1245.

When a review publishes successfully but its queue-completion callback is lost, the workflow reconciler currently uses only the green run conclusion. It deletes the lease even when the accepted publication receipt says a source-drift follow-up is owed.

The queue now reads that durable receipt and reuses its existing requeue operation. Accepted or deduplicated requeue receipts preserve one fresh review; superseded receipts and newer queued revisions do not manufacture another review. The workflow also reports queue-completion failures separately from Codex/content failures, without changing which runs fail or introducing another retry loop.

This refresh incorporates current main, preserves the contributor's implementation and credit, consolidates repeated regression setup, and retains the one-off runtime drivers in their immutable original commit rather than adding them to the maintained tree. The final diff is about 300 lines including tests and documentation, versus over 1,100 in the original proposal.

Current behavior proof

  • Candidate head: 7cbe4493cf05142ee3338c63e64bbb291e2e7da1; tree 2e0888cdcc4280894627530b9b6fb6521890541b.
  • Baseline: 0d07398d4fabc829c25e22c19a06a0656f49030b.
  • Provider: AWS Crabbox; lease cbx_7031f88109bf; image ami-0461d919be7deb53c; Node v24.18.1, pnpm 11.10.0, Wrangler 4.107.0.
  • Environment: fresh isolated checkout, no instance role (IMDS credential endpoint returned 404), no Tailscale, synthetic items, disposable SQLite, no production credentials or state mutations.
  • Surface: production Worker signed publication/completion/reconcile HTTP routes and the real ExactReviewQueue Durable Object under local workerd.
  • Commands: the immutable docs/proof/exact-review-completion-metadata/run-proof.sh and annotation-proof.mjs from commit 138eacf9b30ced7465be928d9d6022f5647fa7d9, run separately against the baseline and integrated candidate. Reproduction commands are in the compact proof README retained by this PR.
  • Proof run: run_a106148f5b89; artifacts: proof-summary.json, transcript.md, and annotation output. The original contributor head was independently checked first in run_400419e5dd76.
Scenario Baseline Candidate
Completion callback delivered Pending source-drift revision 5 Same
Callback lost after accepted requeue receipt requeued: 0, completed: 1; item deleted requeued: 1, completed: 0; pending revision 5, cleared lease, source_drift_requeue, terminal disposition requeue
Callback lost after superseded receipt Completes without requeue Same

The real workflow annotation shell emitted queue_completion_failure for a successful review whose completion failed and for a held deferral whose completion failed. A genuine review failure remained codex_or_content_failure. The original failure-gate expression is unchanged.

Limits: initial lease setup and state inspection use proof-only seams. All subsequent signed HTTP, storage, receipt, reconciliation, and lifecycle transitions use production code. The proof supplies the terminal-run payload rather than calling GitHub's run lookup. Workflow expressions are evaluated locally and the shell executes under bash. This proves local workerd behavior, not Cloudflare edge availability; it does not induce an outage in production. The baseline ran from an archive of the stated main SHA and the candidate proof ran before commit, with the reviewed source tree carried unchanged into the candidate head.

Validation and review disposition

  • pnpm run check: passed; 4,140 tests passed, 8 skipped (4,148 total), plus all 13 static test cases.
  • Focused lifecycle/workflow regression coverage passed. The consolidated receipt matrix covers accepted, repeated/deduplicated, superseded, and absent-requeue plans; repeating reconciliation creates no extra revision.
  • Documentation checks passed after the final proof-instruction edit.
  • Current-main conflict resolved while retaining the newer queue failure-reason argument.
  • Original review's superseded-receipt finding remains fixed. No broader retry policy or capacity setting changed.
  • The remaining rank-up/monitoring request is accepted: verify the Worker deployment and inspect live reconciliation/queue health after landing.

OpenClaw Bay needs no code change: the real before/after proof confirms that a requeue terminal fact leaves Bay event/pending tables empty and the public snapshot unchanged. Bay remains observer-only, with no new browser calls or mutation controls.

@yetval
yetval requested a review from a team as a code owner August 26, 2026 03:57
@clawsweeper

clawsweeper Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

@clawsweeper clawsweeper Bot added merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. P1 Urgent regression or broken agent/channel workflow affecting real users now. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Aug 26, 2026
@clawsweeper

clawsweeper Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed August 30, 2026, 8:26 PM ET / August 31, 2026, 00:26 UTC.

ClawSweeper review

What this changes

The PR makes lost exact-review completion callbacks preserve an accepted source-drift requeue and labels queue-completion failures separately from review-generation failures.

Regression provenance

Possible regression — probable (reproduction; failure trace). No predecessor PR is attributed.

Merge readiness

⚠️ Ready for maintainer review - 2 items remain

Keep open for maintainer landing: current main still takes the bare terminal-run completion path, while this active branch preserves the owed source-drift review from the durable receipt. The current diff is narrowly covered and has strong before/after Worker proof; no blocking patch defect was found.

Priority: P1
Reviewed head: 7cbe4493cf05142ee3338c63e64bbb291e2e7da1

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused recovery fix with strong real behavior evidence and targeted receipt-state regression coverage.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (logs): The changed production owner is ExactReviewQueue reconciliation; the PR supplies an AWS Crabbox/local-workerd before/after trace through the signed publication and reconcile routes, showing recovery of one owed review after a lost callback while delivered and superseded controls remain correct.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (logs): The changed production owner is ExactReviewQueue reconciliation; the PR supplies an AWS Crabbox/local-workerd before/after trace through the signed publication and reconcile routes, showing recovery of one owed review after a lost callback while delivered and superseded controls remain correct.
Evidence reviewed 6 items Current-main behavior remains affected: The PR base's reconcile handler passes a successful terminal run directly to the generic finisher, which deletes a non-requeued item and does not inspect direct-publication lifecycle metadata.
Introduced recovery is receipt-gated: The branch requeues only successful leased runs with a requeue plan and an accepted or deduplicated receipt; superseded receipts continue through normal completion.
Regression matrix covers receipt outcomes and idempotence: Focused tests exercise accepted, deduplicated, superseded, and no-plan receipts, then repeat reconciliation to confirm it does not create a second revision.
Findings None None.
Security None None.

How this fits together

The exact-review workflow publishes review results to a Durable Object queue, then completes its lease. If that callback is lost, terminal-run reconciliation now consults the durable publication receipt to decide whether a fresh source-drift review remains owed.

flowchart LR
  A[Exact review workflow] --> B[Publication receipt]
  B --> C[Durable review queue]
  D[Lost completion callback] --> E[Terminal-run reconciler]
  C --> E
  E --> F{Receipt requires requeue}
  F -->|accepted or deduped| G[Fresh source-drift review]
  F -->|otherwise| H[Complete leased item]
Loading

Before merge

  • Resolve merge risk (P1) - This changes failure recovery in production review automation; the supplied local-workerd proof is strong, but deployment should monitor source-drift requeue counts and queue-completion classifications at the Cloudflare edge.
  • Complete next step (P2) - No discrete repair blocker was found; the PR is ready for ordinary maintainer approval and post-deployment observation.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Patch composition 304 added, 12 removed across 8 files The change is concentrated in one queue recovery path, one workflow annotation, focused regression coverage, and supporting documentation.
Receipt outcomes covered 4 scenarios The lifecycle test covers accepted, deduplicated, superseded, and absent-requeue receipt states, including repeat reconciliation.

Root-cause cluster

Relationship: fixed_by_candidate
Canonical: #1245
Summary: This PR is the active implementation candidate for the source-drift callback-loss bug tracked by the linked issue.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge-risk options

Maintainer options:

  1. Land with deployment monitoring (recommended)
    Accept the bounded automation risk because the receipt matrix and real Worker proof cover the recovery path, then inspect production reconciliation and classification telemetry after deployment.

Technical review

Best possible solution:

Land the receipt-aware reconciliation with its focused regression matrix, then monitor the first production deployment for unexpected requeue volume or completion-failure classifications.

Do we have a high-confidence way to reproduce the issue?

Yes. The supplied baseline run against the pinned current-main SHA records the lost-callback reconcile deleting the owed item, and the focused current-head matrix reproduces the same receipt states.

Is this the best way to solve the issue?

Yes. Reusing the already durable direct-publication receipt and existing requeue operation is narrower than changing retry policy or turning a successfully published review into a failed run.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 0d07398d4fab.

Labels

Label justifications:

  • P1: A lost callback can silently omit an owed review, affecting active review automation rather than a cosmetic path.
  • merge-risk: 🚨 automation: The patch changes Durable Object reconciliation and GitHub Actions failure classification in the review automation path.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (logs): The changed production owner is ExactReviewQueue reconciliation; the PR supplies an AWS Crabbox/local-workerd before/after trace through the signed publication and reconcile routes, showing recovery of one owed review after a lost callback while delivered and superseded controls remain correct.
  • proof: sufficient: Contributor real behavior proof is sufficient. The changed production owner is ExactReviewQueue reconciliation; the PR supplies an AWS Crabbox/local-workerd before/after trace through the signed publication and reconcile routes, showing recovery of one owed review after a lost callback while delivered and superseded controls remain correct.

Evidence

What I checked:

  • Current-main behavior remains affected: The PR base's reconcile handler passes a successful terminal run directly to the generic finisher, which deletes a non-requeued item and does not inspect direct-publication lifecycle metadata. (dashboard/exact-review-queue.ts:3507, 0d07398d4fab)
  • Introduced recovery is receipt-gated: The branch requeues only successful leased runs with a requeue plan and an accepted or deduplicated receipt; superseded receipts continue through normal completion. (dashboard/exact-review-queue.ts:3508, 7cbe4493cf05)
  • Regression matrix covers receipt outcomes and idempotence: Focused tests exercise accepted, deduplicated, superseded, and no-plan receipts, then repeat reconciliation to confirm it does not create a second revision. (test/dashboard-worker-publication-lifecycle.test.ts:974, 7cbe4493cf05)
  • Workflow failure classification is covered: The added workflow assertions distinguish a failed completion after a successful review from a genuine review-generation failure. (test/sweep-workflow.test.ts:1240, 7cbe4493cf05)
  • Current-head provenance: The reviewed head is a merge of the contributor implementation with the pinned current-main base, so the introduced diff is the verified base-to-head change rather than base drift. (dashboard/exact-review-queue.ts:3508, 7cbe4493cf05)
  • Real behavior proof supplied: The PR body records an AWS Crabbox/local-workerd before/after run through signed publication and reconciliation routes: the baseline deletes the owed item after callback loss, while the candidate creates one fresh source-drift revision; delivered and superseded controls retain their expected behavior. (docs/proof/exact-review-completion-metadata/README.md:1, 7cbe4493cf05)

Likely related people:

  • steipete: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (4 earlier review cycles)
  • reviewed 2026-08-26T04:00:34.450Z sha 1995f4f :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-26T18:25:51.042Z sha 18af960 :: needs changes before merge. :: [P1] Exclude superseded receipts from recovery requeues
  • reviewed 2026-08-29T17:06:15.729Z sha 138eacf :: needs maintainer review before merge. :: none
  • reviewed 2026-08-31T00:23:04.774Z sha 7cbe449 :: needs maintainer review before merge. :: none

@yetval
yetval force-pushed the fix/exact-review-completion-metadata-fallbacks branch from 1995f4f to 18af960 Compare August 26, 2026 18:21
@yetval

yetval commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

Refreshed against the verdict at 1995f4f779c3. New head 18af960afb1e. The verdict reported no findings and no security items, so the production diff and the regression tests are byte-identical to the reviewed head; only the proof material changed.

Add real behavior proof (Docker-backed runtime proof). Done. The in-memory driver is replaced by docs/proof/exact-review-completion-metadata/run-proof.sh, which runs under Crabbox local-container (provider local-container, image node:24-bookworm) and starts the real Wrangler Worker and its ExactReviewQueue Durable Object on workerd. Both scenarios are driven over the real signed /internal/exact-review/publication-results, /internal/exact-review/complete, and /internal/exact-review/reconcile routes against real Durable Object SQLite storage. Before half on pristine main afe976209aa5, lease cbx_f8b4d8594074, run run_3aaf48af0028: the reconciler reports requeued: 0, completed: 1 and the item is deleted. After half on 18af960afb1e, lease cbx_7a9d11ed8b8f, run run_29c8406b8f61: requeued: 1, completed: 0 and the same fresh source_drift_requeue revision the delivered callback produces. Artifact captured through --require-artifact. Full transcript is in the PR body.

Resolve merge risk (P1, in-memory seams). Same change addresses it. The only remaining substitution is the initial leased item, which is seeded through the production state writer inside the Durable Object because a real lease requires a GitHub dispatch; every transition after that point is real. That limit is stated in the body and in the proof README.

Resolve merge risk (P1, Bay impact). Stated and verified: no Bay change is needed and none is produced. recordLifecycleTerminal does call syncBayLifecycle, but bayLifecycleEvent maps only review_completed_routed and failure to a Bay outcome and returns null for requeue, so no Bay event, timing, or tide-buffer row is written, and there is no prior terminal fact to retract. The proof reads the exact_review_lifecycle_bay_event_v2, exact_review_lifecycle_bay_pending_v2, and exact_review_lifecycle_bay_tide_buffer_v2 tables and the public GET /api/durable-lifecycle-bay snapshot on both sides of the recovery: all zero rows, snapshot identical, on the healed path and the delivered-callback control alike.

Live Verification failure on the previous head. That was my proof artifact, not the patch. drift-proof.ts imported the shared test harness, which imports ../dist/repair/*.js, so it could not run in a checkout without a build. It has been removed rather than patched, because the container harness supersedes it with a strictly stronger version of the same two scenarios. annotation-proof.mjs is unchanged and depends only on repository dependencies.

Gates re-run inside the same local-container image: check:static and lint:scripts pass. node --test for the four queue and lifecycle suites is 230/230 and test/sweep-workflow.test.ts is 124/124 on a host with full tooling.

Nothing here is an open maintainer decision from my side. @clawsweeper re-review

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Aug 26, 2026
…ack is lost

The Complete exact-review queue lease callback is the only carrier of
direct_lifecycle_requeue, and both fallbacks that engage when it cannot reach
the durable queue ignore that metadata.

After an accepted direct publication the run stays green by design, so the
workflow_run reconciler heals the still-leased item from the bare run
conclusion and deletes it, discarding the source-drift follow-up review the
callback would have created and removing the lease-expiry backstop with it.
The accepted receipt already rewrote the leased item's decision to a
publication decision carrying its directLifecycle plan, so /reconcile now
recognises an owed requeue and heals it through the same
requeueDirectLifecyclePublicationSync the /complete handler calls, recording
the same requeue terminal fact on the fenced projection.

In the durable-queue lane the same callback loss reddens the run, and the fail
gate's single hardcoded annotation blamed classification=codex_or_content_failure
even when its own fields reported review_outcome=success, and also for held
reservations whose review never ran. The gate now derives the classification by
reusing its own review-lane clause, so a completion failure reports
queue_completion_failure while a genuine review failure keeps
codex_or_content_failure. The gate's if-expression is unchanged, so exactly the
same runs go red.

Adds regression coverage for the healed requeue, for an unchanged green-run
completion with no owed requeue, and for the classification expression staying
in sync with the gate clause it mirrors.

Replaces the in-memory drift driver with a Docker-backed Crabbox local-container
harness that runs the real Wrangler Worker and its ExactReviewQueue Durable
Object, drives both scenarios over the real signed routes against real SQLite
storage, and captures the Bay telemetry tables and the public
/api/durable-lifecycle-bay snapshot on either side of the recovery.

Fixes openclaw#1245
@yetval
yetval force-pushed the fix/exact-review-completion-metadata-fallbacks branch from 18af960 to 138eacf Compare August 29, 2026 17:02
@yetval

yetval commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

Refreshed against the verdict at 18af960afb1e. New head 138eacf9b30ced7465be928d9d6022f5647fa7d9, rebased onto main db14db010bf3044be85f25fe40a587a5ca77523a (43 commits, no conflicts). All 3 items are closed; nothing is left as a maintainer decision.

[P1] Exclude superseded receipts from recovery requeues (dashboard/exact-review-queue.ts:3478-3481): fixed, and the finding was correct. The recovery predicate now requires an accepted or deduped receipt outcome:

const directLifecycle = item.decision.publication?.directLifecycle;
const owedDirectLifecycleRequeue =
  run.outcome === "success" &&
  item.revision <= leaseRevision &&
  directLifecycle?.plan.kind === "requeue" &&
  (directLifecycle.receiptOutcome === "accepted" ||
    directLifecycle.receiptOutcome === "deduped");

Confirming your three evidence points independently, plus one more that makes the case stronger than stated. sweep.yml:1614 wraps the whole block that can set direct_lifecycle_requeue=true in if [ "${DIRECT_PUBLICATION_SUPERSEDED:-false}" != "true" ], so a superseded receipt sends a plain completion. But the closer analogue is the publication lane's own direct-lifecycle recovery step at sweep.yml:2392-2396, which short-circuits on if [ "$receipt_outcome" = "superseded" ] to completion_kind=superseded reason_code=remote_newer_tuple before it dispatches on lifecycle_kind. That is the same converted publication lease reading the same directLifecycle metadata, and it was already gated. /reconcile was the only path that was not, so this is now equivalent to the normal completion path rather than broader than it.

Resolve merge risk (P1) and Complete next step (P2): both closed by that same change. This is maintainer option 1, and the production delta is 3 lines.

Rank-up move, both controls in the Durable Object proof: done. run-proof.sh now runs a third scenario, completion-unreachable-superseded-receipt. The superseded receipt is a real one rather than seeded state: the driver publishes revision 5 on the same fence first, so the production direct-publication store settles the run's own revision-4 receipt as superseded while it still carries plan.kind === "requeue", which is exactly the shape the finding describes.

Before, on the previous head 18af960afb1e:

Proof assertion failed: superseded_receipt_completes_without_requeue
  {"item_afterwards":{"state":"pending","revision":5,"lease_id":null,"source_action":"source_drift_requeue","admission_delivery_id":"direct-lifecycle-requeue:openclaw/openclaw#707:4","has_publication":false},
   "terminal_disposition":"requeue","healer_response":{"ok":true,"reconciled":1,"requeued":1,"completed":0}}

After, on 138eacf9b3, identical inputs:

[completion-unreachable-superseded-receipt] healer /internal/exact-review/reconcile -> {"ok":true,"reconciled":1,"requeued":0,"completed":1}
[completion-unreachable-superseded-receipt] queue item afterwards: DELETED - no source-drift follow-up review remains anywhere
[completion-unreachable-superseded-receipt] lifecycle terminal disposition: superseded

The two existing scenarios are unchanged across both halves, so the accepted-receipt recovery this PR opened for still works and the delivered-callback control is unaffected.

Regression coverage (your note that the added test was accepted-path only): reconciling a lost completion callback completes a superseded direct receipt drives the real /internal/exact-review/publication-results route to a genuine superseded receipt, asserts the stored directLifecycle is {plan: {kind: "requeue"}, receiptOutcome: "superseded"}, then reconciles. It fails without the gate (requeued: 1, completed: 0) and passes with it (requeued: 0, completed: 1), keeping the superseded terminal disposition.

Acceptance criteria: node --test test/dashboard-worker-publication-lifecycle.test.ts 26/26, node --test test/sweep-workflow.test.ts 125/125, and the queue suites together 232/232. check:static, lint:dashboard, and lint:scripts pass.

One environment note on the third acceptance command: crabbox's local-container provider could not publish its SSH port on this host, so the driver was invoked with plain docker run on the same node:24-bookworm image instead. That changes the wrapper around the container and nothing inside it; the driver, the routes, and the artifact are the same, and proof-summary.json now records the head SHA 138eacf9b30ced7465be928d9d6022f5647fa7d9 itself.

Good catch on this one. It would have turned a lost callback into duplicate review work on items a newer publisher already owned.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Aug 29, 2026
Preserve the owed source-drift review using the durable receipt, retain current-main queue failure metadata, and consolidate receipt regression coverage.

Co-authored-by: yetval <yetvald@gmail.com>
@steipete

Copy link
Copy Markdown
Contributor

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@steipete
steipete merged commit 9f343df into openclaw:main Aug 31, 2026
14 checks passed
steipete added a commit that referenced this pull request Aug 31, 2026
* fix(queue): use saved lease authority for direct requeues

Follow up on #1251 by reading direct-requeue authority from the saved lease decision. Preserve accepted and deduplicated receipt ownership, reject superseded completion authority, and keep newer command decisions intact. The original lost-completion fix is already upstream; retain its existing contributor credit.

* test(queue): document the saved-lease authority repro
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. P1 Urgent regression or broken agent/channel workflow affecting real users now. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Lost lease-completion callbacks drop the owed source-drift follow-up review and misclassify completion-failure runs

2 participants