Skip to content

ASCII Box release hides bounded cleanup progress for stale claims #1730

Description

@shunkakinoki

Summary

ASCII Box release can spend its full bounded cleanup window without progress output, including when the native Box has already been deleted and the only remaining state is a stale Crabbox claim. To an operator, both automatic --stop-after always cleanup and explicit crabbox stop appear hung.

Observed incident

During the 2026-09-02 incident recorded in #1727 (comment):

  1. The pre-fix run exhausted its 20-minute SSH-readiness ceiling.
  2. Cleanup emitted no terminal result for more than two additional minutes.
  3. After interrupting the owner, explicit crabbox stop --provider ascii-box --target linux --id cbx_9463a02d8f1d also emitted no progress for two minutes.
  4. Native box delete --yes --json bx_gxym9gf4 was accepted, and box info bx_gxym9gf4 --json returned 404.
  5. A second explicit stop using the patched endpoint build still produced no progress while reconciling the stale local claim.

The release path is bounded by boxReleaseTimeout, so this is not proven infinite execution. The defect is that a bounded multi-minute reconciliation is operationally indistinguishable from a hang, and an authoritative native deletion does not provide a fast claim-reconciliation path.

Expected behavior

  • Emit periodic, structured release progress including the current phase and remaining deadline.
  • Return promptly when an exact native-not-found result plus complete provider inventory proves the originally claimed Box is absent.
  • Retain the claim when absence is uncertain, inventory is incomplete, identity changed, or provider access failed.
  • Preserve cancellation and the existing exact-ownership fencing.
  • Never start a replacement lease as part of cleanup recovery.

Suggested regression coverage

  • Exact GetBox not-found plus complete inventory absence removes only the unchanged original claim without issuing another delete.
  • Not-found plus incomplete/failing inventory retains the claim.
  • Replacement identity in inventory retains the claim.
  • Progress output is emitted during a slow bounded release and stops after cancellation/timeout.
  • ReleaseLease remains bounded when the Box CLI child does not settle.

Related execution-routing fix: #1728

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal priority bug or improvement with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.no-staleExempts this issue from stale automation.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions