fix(review): suppress owned activity churn - #1007
Conversation
|
Codex review: found issues before merge. Reviewed August 2, 2026, 4:55 AM ET / 08:55 UTC. ClawSweeper reviewWhat this changesRecords the GitHub item timestamp observed after ClawSweeper changes its own labels or durable review comment, then treats that exact timestamp as automation-owned in scheduler, hot-intake, and structural-cache decisions. Merge readinessKeep open: the PR has credible live proof for the reported review storm, but an equal Priority: P2 Review scores
Verification
How this fits togetherClawSweeper publishes labels and durable review comments to GitHub, then uses the resulting item activity timestamp to decide whether scheduled review work is new or already covered. The scheduler and structural cache feed that decision into review admission, so an ownership misclassification either causes redundant reviews or defers genuine follow-up activity. flowchart LR
A[GitHub item activity] --> B[Apply lane writes labels or review comment]
B --> C[Post-mutation item timestamp]
C --> D[Durable review record]
D --> E[Scheduler activity decision]
D --> F[Hot-intake snapshot guard]
D --> G[Structural cache]
E --> H[Review admission]
F --> H
G --> H
Decision needed
Why: The branch corrects a demonstrated automation storm, but choosing whether same-value activity may be deferred is a cross-lane review-policy tradeoff rather than a mechanical implementation detail. Before merge
Findings
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: Use a durable receipt that can distinguish the specific automation mutation from later item activity, or retain the existing fail-open rule whenever an exact timestamp alone cannot establish that distinction. Do we have a high-confidence way to reproduce the issue? Yes. The supplied production trace identifies an unchanged item being re-reviewed after a ClawSweeper mutation, and current-main source still uses the timestamp comparison that permits it; the branch’s own live proof reproduces the intended post-mutation behavior on its exact head. Is this the best way to solve the issue? No. Persisting only an exact timestamp fixes the demonstrated later-second case, but it cannot safely distinguish a later target update that GitHub reports with the same value; the safer design needs a discriminating receipt or must fail open. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 7e4d8cb7cee4. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (4 earlier review cycles)
|
Historical RCA: why the earlier fixes did not stop the review stormShort version: no single recent PR introduced the whole failure. A latent timestamp-provenance ambiguity dates to the April scheduler work; later throughput changes amplified it from an occasional redundant review into a visible storm. Timeline
Why #970 and #992 were insufficient
Why this PR closes the gapThis PR supplies the missing provenance rather than widening a time window. After an owned label or durable-comment mutation, ClawSweeper reads back and persists GitHub's authoritative So the attribution is:
This also explains why the system appeared healthy before the July scaling work: the false-positive edge existed, but the older scheduler did not have the cadence and throughput to hammer it repeatedly. |
What Problem This Solves
Scheduled hot intake can repeatedly run a full review on an unchanged issue or PR after ClawSweeper updates its own durable review comment or labels. GitHub may publish the item updated_at one second after the local sync timestamp, so the existing one-hour owned-activity guard eventually classifies that bot-owned timestamp as fresh target activity.
Fixes #1006.
Why This Change Was Made
Production run https://github.com/openclaw/clawsweeper/actions/runs/30704608131 reviewed openclaw/clickclack#117 at unchanged head d26c11abba773132c51defb6e647db3a69610003. The full review completed at 14:52:41Z, the durable review comment synced at 14:53:28Z, and GitHub advanced the PR updated_at to 14:53:29Z. Scheduled hot intake then saw that later server timestamp as uncaptured activity and ran the full review again with zero cache hits.
The apply lane now reads back and stores the authoritative GitHub item timestamp after each owned label or durable-comment mutation. Scheduler cadence, exact hot-intake planning, and the structural cache accept only an exact match to that stored timestamp as owned activity. Missing metadata and any later timestamp continue to fail open into review.
The new operational timestamp is excluded from PR-close proof prompt binding so persisting it cannot invalidate an otherwise exact precomputed proof. Semantic report changes remain bound.
User Impact
Evidence
AI-assisted
Implemented and reviewed with Codex. The production timestamp chain and GitHub state were inspected directly; tests and repository gates provide the after-fix proof.
Exact-head live GitHub proof
A disposable PR in the PollyBot13 fork exercised the exact upstream head
ca43c93fe837c0b008c8a4054512b40961cda77aagainst basedccfa528f0387431807818ba43823310b5e08f51: PollyBot13#1 (comment).18:00:00Z.updatedAtto18:00:16Z.automation_item_updated_at: 18:00:16Zand returnedscheduledReviewDue: false.updatedAtto18:00:44Z; using the same persisted automation timestamp, the branch scheduler returnedscheduledReviewDue: true.The proof PR is closed and disposable; its exact-head transcript and GitHub timeline remain inspectable. No production records or workflows were mutated.