No disk-preserving recovery for a storage-wedged sprite: restore unreachable, no stop/restart API, documented DELETE exec returns 404
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- api, cli, documentation
Research direction
Start by comparing the documented DELETE exec endpoint and available CLI/API recovery operations with the reported rc47/rc48 behavior. Reproduce the checkpoint, exec-delete, idle-suspend, and container-stop cases; done means a disk-preserving recovery path exists, wedged requests can time out without blocking suspension, and the endpoint documentation matches reality.
Written by the indexing model from the issue text.
Description
Companion to the disk-I/O-wedge report in #230. When a sprite's storage wedges while the VM stays running, every disk-preserving remedy turns out to be unreachable, and the owner's only exit is sprite destroy — losing checkpoints, credentials, caches, everything. Verified on supervisor 0.0.1-rc47 (2026-08-24) and again on rc48 (2026-09-01), org junchao-yan:
-
Checkpoint restore routes through the wedged overlay manager.
GET /v1/sprites/{name}/checkpointshangs forever, andrestoreneeds the same manager — so the one mechanism designed to recover a broken overlay is unavailable precisely when the overlay is broken. -
There is no stop / suspend / restart verb in the CLI or the public API (checked rc47 and rc48; docs confirm). A plain machine stop/start preserving the volume would very likely clear the wedge (it is VM-side mount state, not necessarily volume data), but there is no way to ask for one.
-
DELETE /v1/sprites/{name}/exec/{id}returns 404 despite being documented (verified on rc47), so the zombie exec sessions that pile up from client retries cannot be cleared. -
The container cannot be stopped either:
POST .../services/container/stop→ "service not found" (the user container is a hooks-managed service, not in the services API). -
Idle-suspend never fires as an escape hatch. After quieting all clients, phantom
http:activity sources persisted for 25+ minutes — server-side request handlers stuck on wedged reads (one hung checkpoints GET holds an activity source forever) plus pooled keep-alive connections — so the sprite never reaches the quiet window that would let it suspend and cold-boot. -
Killing the container's init hold-open from inside (08-24, when exec still worked) SIGKILLed the container tree and destroyed its mount namespace — and the supervisor never logged a container exit and never recycled the VM; its teardown appeared stuck unmounting the wedged overlay.
Ask
- A supervisor- or platform-side hard recycle (stop + start with the volume intact), exposed via API/CLI, that does not depend on the overlay manager being healthy.
- Request handlers that block on storage should time out and not count as idle-blocking activity, so a wedged sprite can at least drain to suspend.
- Fix or un-document
DELETE /v1/sprites/{name}/exec/{id}.
- Dominant language
- TypeScript
- Stars
- 51
- Forks
- 4
- Avg merge
- 23h 57m
- Merged PRs (30d)
- 12
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from superfly/sprites-docs
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
superfly/sprites-docs#226 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
superfly/sprites-docs#220 ·
-
superfly/sprites-docs#237 · 1 assignee ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
superfly/sprites-docs#230 · 2 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
superfly/sprites-docs#229 ·
All issues in superfly/sprites-docs
Similar issues
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 76/100
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
vercel/react-tweet#225 ·