fix: reconcile absent ASCII Box claims - #1874
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 5, 2026, 12:36 AM ET / 04:36 UTC. ClawSweeper reviewWhat this changesAllow ASCII Box cleanup to remove an unchanged local ownership claim after an exact not-found lookup and complete inventory absence, without checking a retained deletion operation. Regression provenancePossible regression — suspected (reviewed change). No predecessor PR is attributed. Merge readiness⛔ Blocked before merge - 6 items remain The recovery problem remains on main, but this patch changes a shipped cleanup contract and introduces two blocking claim-finalization defects. Priority: P2 Review scores
Verification
How this fits togetherThe ASCII Box adapter translates Crabbox cleanup requests into native CLI operations and tracks unfinished cleanup in durable local ownership claims. Its release fence validates the resource and claim before authorizing remote cleanup or local claim removal. flowchart TD
A[Stop or automatic cleanup] --> B[Validate and lock ownership claim]
B --> C[Exact Box lookup]
C -->|Observable| D[Validate identity and deletion operation]
C -->|Not found| E[Check complete inventory]
D --> F[Retain claim or complete native deletion]
E -->|ID absent| G[Remove unchanged local claim]
E -->|Uncertain or present| F
Decision needed
Why: The requested shortcut changes the shipped meaning of successful release; source and live reconciliation output cannot establish maintainer acceptance of abandoning unfinished deletion tracking. 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: Keep ordinary release completion-based, preserve unfinished cleanup records, and consider independent claim-forgetting only as an explicitly approved recovery workflow. Do we have a high-confidence way to reproduce the issue? Yes, by source inspection of the candidate: a retained pending operation plus exact 404 and empty complete inventory reaches claim removal, as the new fixtures demonstrate. No tests or provider commands were executed during this read-only review. Is this the best way to solve the issue? No. Inventory absence does not distinguish completed deletion from a hidden pending operation, and the existing finalizer incorrectly promotes the new success outcome into durable completion evidence. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against a6021b3633b8. 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
|
Summary
Fix #1730 by reconciling a stale ASCII Box claim when both the exact native lookup reports a recognized 404 and complete
box list --allinventory omits the claimed Box ID.The release fence now checks native identity before consulting a retained deletion operation. Proven absence removes only the exact unchanged local claim; it does not read a stale operation, repeat SSH teardown, or issue another stop/delete. Observable Boxes still require valid operation evidence, while failed or partial inventory, cancellation, matching IDs, and replacement identities retain the claim.
Documentation and regression coverage encode the new provider boundary. No changelog entry is included, per contributor policy.
Verification
go test ./internal/providers/asciiboxgo test -race ./internal/providers/asciiboxgo vet ./...go build -trimpath -o /private/tmp/crabbox-ascii-absence-proof ./cmd/crabboxgit diff --checkThe full
go test ./...run completed the changed provider package, then stalled in the pre-existinginternal/cliharness with no live test process; it was interrupted after 156 seconds. The scoped race suite, repository-wide vet, and production build all completed successfully.Live provider proof
Built candidate
d9e3847ed84f6e3bc51e3862d0bbb205bcf172e0was run against the retained task-owned claim from the linked issue's earlier cleanup proof. The provider had already deleted its exact Box, while Crabbox still held a stale claim and blocked operation reference.box --json info <exact-id>still returnsstatus: 404.This exercises the repaired release path against real ASCII provider state and confirms no provider or local-claim residue for the exact lease.