spec-resume · diff
git:20260824.b2e1e5e to git:20260910.a57f970
12 added, 8 removed. Audit A to A.
---
name: spec-resume
- description: Resumes a paused change — deletes its .paused marker (after checking the single-active-change slot is free) and reports where the work left off so re-entry is instant.
+ description: Switches the current change (writes the spec/changes/.current pointer) and, when the target is paused, deletes its .paused marker — then reports where the work left off so re-entry is instant. The switcher for parallel changes; no argument lists what there is to switch to.
---
<!-- GENERATED from core/commands/resume.md — edit the core file and run node tools/generate.mjs; hand edits will be overwritten -->
# $spec-resume
- Change name (optional, for disambiguation): $ARGUMENTS
+ Target change name (optional): $ARGUMENTS
## Process
- 1. **List paused changes**: dirs under `spec/changes/` carrying `.paused`. None → report "nothing paused". Multiple → ask which (or use $ARGUMENTS).
- 2. **Check the slot**: if another change is currently ACTIVE (not paused, not a light-tier fix/quick dir), refuse — resuming would create two active changes and the gates would block both. Suggest pausing or archiving the occupant first.
- 3. **Delete the marker** `spec/changes/<name>/.paused`.
- 4. **Report re-entry context** (read, don't recompute): the `.paused` line (when + why it was parked), proposal state (APPROVED or not), verify.md's latest round + open findings, unchecked tasks.md items if present — then the natural next command (`$spec-apply` to continue implementing, `$spec-verify` to re-audit, `$spec-archive` to close out).
+ 1. **No argument** → list the switchable changes: active dirs (with the current one marked) and paused dirs (with their paused-line), then ask which — per SKILL Interrogation rules, each option carrying its state (stage / open findings / archive candidate).
+ 2. **Named target**:
+ - Paused → delete `spec/changes/<name>/.paused`
+ - Active → nothing to unfreeze; this is a pure switch
+ - Nonexistent → report, list what exists (never guess a near-match silently)
+ 3. **Write the pointer**: `spec/changes/.current` ← the target name (one line). This is the switch — gates and the Stop reminder now target this change; other active changes coexist untouched (no stash ritual required).
+ 4. **Report re-entry context** (read, don't recompute): proposal state (APPROVED or not), verify.md's latest round + open findings, unchecked tasks.md items, the paused line if it was parked — then the natural next command (`$spec-apply` to continue, `$spec-verify` to re-audit, `$spec-archive` to close out).
## What it does NOT do
- - Does not run any stage itself — it only unfreezes and orients; the user picks the next command
- - Does not resurrect archived changes (archive is a different state; a returned-from-archive workflow is not supported — that is what pause exists to avoid)
+ - Does not run any stage itself — it only switches and orients; the user picks the next command
+ - Does not resurrect archived changes (archive is a different state; parking is what `.paused` exists for)
+ - Does not touch the other changes' artifacts or markers