fix(review): reconcile labels from completed review receipts - #1236
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
|
Codex review: needs maintainer review before merge. Reviewed September 1, 2026, 5:49 AM ET / 09:49 UTC. ClawSweeper reviewWhat this changesThe PR lets completed exact reviews reconcile managed status, rating, proof, and merge-risk labels when their source, timeline, head, and activity receipts still match. Merge readinessThis is a viable, focused fix for the still-open label-reconciliation issue, with no discrete correctness blocker found and sufficient current-head real GitHub transport proof. Priority: P1 Review scores
Verification
How this fits togetherClawSweeper publishes completed Codex reviews to GitHub and derives managed PR labels from those reports. The freshness gate sits between the durable review record and the batched GitHub label mutation, preventing stale reviews or later human activity from changing routing labels. flowchart LR
A[Completed review record] --> B[Receipt matching]
B --> C[PR head and activity check]
C --> D[Human activity safeguard]
D --> E[Managed label batch]
E --> F[GitHub PR routing labels]
Before merge
Agent review detailsSecurityNone. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Land the receipt-based reconciliation while retaining complete receipt equality and the conservative same-second human-activity rejection. Do we have a high-confidence way to reproduce the issue? Yes, at high confidence: the focused fixture establishes the receipt-matched stale-label path and the PR body records a current-head real GitHub transport run with positive and no-op controls. Is this the best way to solve the issue? Yes. Reusing the existing freshness and receipt machinery is the narrowest maintainable repair, and the added second-precision guard preserves the human-activity boundary. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against e038329b3fb1. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (8 earlier review cycles)
|
|
Added the requested real-transport trace. It shows label reconciliation through the GitHub API and verifies that both same-second and later human activity prevent the automated action. The trace was captured against the current head without changing the implementation. |
a5d575f to
cff385b
Compare
Use the native fetch deadline through response body consumption. Share native HTTP timeout fixtures and finish fast-ack cleanup before restoring mocks. Co-authored-by: Peter Steinberger <steipete@gmail.com>
…#1302) Use the child environment for timeout selection and preserve native process failure semantics. Keep fractional explicit budgets positive after rounding. Co-authored-by: Peter Steinberger <steipete@gmail.com>
…enclaw#1295) Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix(dashboard): make telemetry coverage explicit * fix(dashboard): fail closed during telemetry recovery * fix(dashboard): reject contradictory freshness metadata * fix(dashboard): harden cached telemetry freshness * style(dashboard): format reconciliation guard
* fix(dashboard): correlate exact-review queue failures * test(dashboard): retain queue failure proof * fix(dashboard): keep queue log calls statically bounded * fix(dashboard): retain telemetry reconciliation correlation
* fix(review): bootstrap pinned local scanner * test(review): preserve scanner refusal coverage * fix(review): reject in-checkout scanner caches * fix(review): bound scanner bootstrap downloads * fix(review): validate preflight scanner cache * fix(review): reject symlinked scanner cache entries * fix(review): require private scanner cache authority * fix(review): preserve bootstrap proxy settings * fix(review): allow read-only cache ACLs
…claw#1324) * fix(queue): use saved lease authority for direct requeues Follow up on openclaw#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
) Share leading-front-matter structure across report metadata, repair intake, workflow selection, and decision packets while preserving each reader's decoding and legacy promotion guards. Keep duplicate and competing metadata fail-closed without treating ordinary body examples as authority. Add regression coverage and inspectable consumer proof. Exact-head controlled apply proof also verifies that a persisted conflicting record is rejected before GitHub transport, while valid controls reach the close boundary on synthetic state. Co-authored-by: Dwin Gharibi <dwin.gharibi@email.kntu.ac.ir>
…aw#1323) * fix(review): classify test support consistently * test(review): preserve unknown surface counts after integration
* fix(review): provision pinned Codex source * fix(review): refresh OpenClaw review caches
) Fix hosted exact-event review ancestry acquisition for pull requests that merge the base branch. Preserve complete blobless history while retaining bounded fail-closed hydration for genuinely incomplete ancestry. Co-authored-by: Goutam Adwant <8672451+goutamadwant@users.noreply.github.com> Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com> Co-authored-by: Vito Cappello <3279061+VACInc@users.noreply.github.com>
* refactor(review): let Codex judge changed PR content Remove the compiler-backed semantic cache and its patch, tree-mode, revalidation, telemetry, and runtime-install plumbing. Keep exact-input caches, restricted checkout hydration, scanner admission, and durable publication gates. Bundle matching runtime configuration, prompts, and schemas. * docs(review): describe exact-input cache ownership
Keep the runtime-budget preload fixed and move timestamps and paths into sibling JSON state. Pass the terminal fixture's checkout directory directly as inherited fd 9 instead of constructing a shell command. Remove the unnecessary temporary Node helper module while retaining all clock, readiness, descriptor and cleanup assertions. This is test-only fixture hardening with no production, configuration, dependency, deadline or threshold change. The maintainer cleanup removes four lines and one temporary program lifecycle relative to the contributor proposal; the final two-file change is +61/-57 against its integrated base. Validated published head 2e11ef4 on fresh AWS: 34/34 focused fixture cases, 4,248 full-check passes with eight explicit platform/capability skips, and 13/13 changed-coverage script tests. Exact-head CI and both CodeQL analyses passed. Precommit and committed Codex reviews had no accepted/actionable P0 findings. The unchanged macOS viewport cleanup deadline failure remains documented; it passed on AWS, and no workaround was added here. The current ClawSweeper review found no patch defect but reported missing blobs in its partial clone. Maintainer verification independently materialized all 25 relevant historical/current blobs without lazy fetch and confirmed that current main 1bcce8b leaves the fixture, helper, terminal-cleanup and runtime-budget owners unchanged from the integrated base. That covers this PR's source-review gap without claiming the reviewer infrastructure itself is fixed. Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
…w#1139) Use the existing code-unit comparator for surviving label additions and removals so the recorded issue_labels_sync business identity does not vary with runner locale or collator ties. Preserve exact values, batching, freshness guards, and distinct mutation receipts; this does not introduce an execution-deduplication gate. Current-head AWS producer-to-persisted-recorder proof passed in en-US and sv-SE, alongside focused regressions, the full pnpm check gate, exact-head CI/CodeQL, and managed Codex review. No Bay API or UI contract changes. Related: openclaw#1136 Co-authored-by: Dwin Gharibi <dwin.gharibi@email.kntu.ac.ir>
…#1331) Remove the host-side scorecard filter, per-review Node process, and generated scratch helper. Codex reads the checked-out scorecard and taxonomy directly; existing M4/M5, primary-owner, and broken-existing-behavior requirements remain. Missing or ambiguous evidence means no maturity label. Real authenticated production-runner proof completed one read-only Codex turn for each synthetic issue: M4 selected maturity:stable with source citations; M3 selected no maturity label. Both checkouts stayed clean with no helper file. Focused prompt policy tests and managed P0 Codex review passed. Bay schemas and label contracts are unchanged. No new dependency or compatibility path.
Allow completed exact reviews to refresh managed status, rating, proof, and merge-risk labels when the source, timeline, head, and activity receipts still match. Keep the entire review-completion second ambiguous for newer human activity, matching GitHub timestamp precision. Reuse the current receipt checks and extend the existing publication fixture instead of adding another reconciliation mechanism. Co-authored-by: goutamadwant <workwithgoutam@gmail.com>
|
@clawsweeper re-review The PR body now includes real GitHub transport proof against head Full CI and CodeQL are green. No product source changed during the additional proof. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Closes #1226
An exact re-review can publish a current verdict but leave the old status, rating, proof, and merge-risk labels behind. The freshness check compared activity with the older item snapshot even when the completed review had already captured that discussion.
Use the existing complete source, timeline, head, and review-activity receipts to admit label reconciliation. All receipts must still match, and a complete activity read must show no substantive human activity in or after the review-completion second. Rounding a millisecond timestamp down to GitHub's whole second preserves that boundary. Legacy and close-proposal handling remain on their existing paths.
The implementation adds ten production lines and reuses the existing publication fixture. Historical standalone proof scaffolding is removed from this proposal. Original contributor credit is preserved for @goutamadwant.
Behavior proof
Ran the built production apply/publication command with identical controlled GitHub inputs before and after, intercepting all external I/O. This exercises the real freshness, receipt, publication, and label-batching code without changing a live item's labels.
The comparison uses Node 24.20.0 and the same pinned fixture inputs; only valid lease wall-clock timestamps and isolated paths differ. It proves the stale-label fix and the preserved negative controls. It does not claim that current main overwrites labels in those negative cases.
Real GitHub owner-boundary proof
Tested
c3f3db1d6664d076313643d019110aef88399772with Node 24.20.0 against disposable draft #1334 (fixture head0c61c2fef38150b1cfceda89c5e3661b6bd0cf4b). GitHub reads, label mutations, timeline events, and readbacks were real. Only local review metadata, desired labels, and completion barriers were synthetic; no fabricated Codex verdict was published and no production apply/close lane was run.The harness imported the actual
createApplySourceFreshness, livecollectItemContext, and existing status/rating sync plus batch-flush owners. Its runtime adapter appended exports to the unchanged compiled module. The first-parent freshness function evaluated the same captured GitHub context for comparison.Positive mutation trace (one production batch; no repository label definitions changed):
GitHub recorded the positive replacement at 09:33:13Z as events 30336073929, 30336073947, 30336073962, and 30336074011.
All three captured contexts had matching source revision
5639c4ed6a9e4e747b034c3bd3655d8b487715181b1a5122694d201116f2f236, timeline revision086c7cd69c5779af227fd86bfddfae28b7f1adad6d8af85eed085cae8482863b, and v2 activity cursorv2:0:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945. This demonstrates why matching receipts still need the separate human-activity time guard for managed-label events.The forwarding recorder initially truncated a large check-runs response because it exited after an asynchronous stdout write. Only the recorder was corrected to synchronous fd writes; subsequent complete control reads succeeded. The diagnostic is retained as a harness limitation, not a ClawSweeper/GitHub defect. This proof covers the selected owners and real GitHub transport; it does not claim Codex inference, distributed lease/queue behavior, full-lane execution, or a merge test.
Cleanup is verified: original empty labels restored, fixture 1334 closed at 09:39:18Z, and its task-created remote branch deleted. The fixture was never merged.
Validation
Build, eight focused tests, targeted format/lint, and diff checks pass. Focused coverage also rejects changed timeline receipts, changed heads, later human activity, and close proposals. Managed Codex review is scoped-clean at P0. Full CI, sparse repair builds, and Windows launcher passed at https://github.com/openclaw/clawsweeper/actions/runs/33490397445; CodeQL passed at https://github.com/openclaw/clawsweeper/actions/runs/33490397519.