daily-fix: persist resume state before multi-hour pod stop
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by /daily 2026-07-21 from the #1112 vanished-stopped-pod incident (transcript 24ae2158).
Goal
Treat a STOPPED RunPod volume as NON-durable for multi-hour parks: require uploading the run's done-JSONs / resume sentinels to HF before pod.py stop whenever a park may outlast ~1 hour.
Workflow gap
- Bug observed: pod-1112 was stopped 2026-07-21T07:25Z with volume preserved,
keep-runningtag set, and "Will auto-terminate after 7 days idle" — yet ~22h later both the ephemeral record and the live RunPod API showed it GONE ({"data": {"pod": null}}), losing the volume (done-JSONs, resume state) and forcing a full re-run.keep-runningwas set and the 7-day window hadn't elapsed, so project janitors shouldn't have fired; most consistent with RunPod-side reclaim of a stopped pod. - Why it is a workflow gap: the pause/stop recipes treat a stopped pod's volume as durable park state; nothing requires persisting resume sentinels off-pod before a multi-hour stop. Persist-by-default covers artifacts but not RESUME STATE explicitly.
- Confidence: medium (root cause of the vanish is not transcript-derivable; the mitigation is valid regardless — the science loss was bounded only because smoke/capture artifacts happened to be on HF).
- verified-at-filing:
grep -n 'stop\|durab\|resume state\|volume' .claude/rules/pod-config.md→ no stopped-volume durability guidance (2 unrelated hits: a stale-port polling incident, a registry migration note — absence claim, in-target probe 2026-07-22).git log --oneline --since='7 days ago' -- .claude/rules/pod-config.md→ no such duty landed.
Proposed change (candidate diff sketch — refine in planning)
Add to .claude/rules/pod-config.md (and/or the /issue pause recipe § User pause affordance): before pod.py stop for a park that may outlast ~1h, upload the run's done-JSONs + resume sentinels to the HF data repo (extends persist-by-default to resume state); on resume, prefer the off-pod copies. A stopped RunPod volume can be reclaimed provider-side despite keep-running + the 7-day idle window.
Scope / surfaces
- Primary target:
.claude/rules/pod-config.md - Possible sibling:
.claude/skills/issue/SKILL.md§ User pause affordance (the planner decides whether to touch it).
Constraints / invariants
- Workflow-surface only; consistent with
.claude/rules/upload-policy.mdpersist-by-default. - This session runs under a
workflow_fix_target:Provenance line — recursion guard applies.
Provenance
-
fingerprint: e6462a51211f
-
workflow_fix_target: .claude/rules/pod-config.md
Origin evidence: transcript 24ae2158 — 2026-07-21T07:25Z ("Stopped. Will auto-terminate after 7 days idle") vs 2026-07-22T05:36Z ("No ephemeral pod recorded for issue 1112" + live-API {"data": {"pod": null}}).