All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 4m27s
Docker Build & Deploy / Deploy to Production (push) Successful in 7s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 1s
155 lines
4.6 KiB
Markdown
155 lines
4.6 KiB
Markdown
---
|
|
description: Archive a completed change in the experimental workflow
|
|
---
|
|
|
|
Archive a completed change in the experimental workflow.
|
|
|
|
**Input**: Optionally specify a change name after `/opsx-archive` (e.g., `/opsx-archive add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
|
|
|
|
**Steps**
|
|
|
|
1. **If no change name provided, prompt for selection**
|
|
|
|
Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select.
|
|
|
|
Show only active changes (not already archived).
|
|
Include the schema used for each change if available.
|
|
|
|
**IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.
|
|
|
|
2. **Check artifact completion status**
|
|
|
|
Run `openspec status --change "<name>" --json` to check artifact completion.
|
|
|
|
Parse the JSON to understand:
|
|
- `schemaName`: The workflow being used
|
|
- `artifacts`: List of artifacts with their status (`done` or other)
|
|
|
|
**If any artifacts are not `done`:**
|
|
- Display warning listing incomplete artifacts
|
|
- Prompt user for confirmation to continue
|
|
- Proceed if user confirms
|
|
|
|
3. **Check task completion status**
|
|
|
|
Read the tasks file (typically `tasks.md`) to check for incomplete tasks.
|
|
|
|
Count tasks marked with `- [ ]` (incomplete) vs `- [x]` (complete).
|
|
|
|
**If incomplete tasks found:**
|
|
- Display warning showing count of incomplete tasks
|
|
- Prompt user for confirmation to continue
|
|
- Proceed if user confirms
|
|
|
|
**If no tasks file exists:** Proceed without task-related warning.
|
|
|
|
4. **Assess delta spec sync state**
|
|
|
|
Check for delta specs at `openspec/changes/<name>/specs/`. If none exist, proceed without sync prompt.
|
|
|
|
**If delta specs exist:**
|
|
- Compare each delta spec with its corresponding main spec at `openspec/specs/<capability>/spec.md`
|
|
- Determine what changes would be applied (adds, modifications, removals, renames)
|
|
- Show a combined summary before prompting
|
|
|
|
**Prompt options:**
|
|
- If changes needed: "Sync now (recommended)", "Archive without syncing"
|
|
- If already synced: "Archive now", "Sync anyway", "Cancel"
|
|
|
|
If user chooses sync, execute `/opsx-sync` logic. Proceed to archive regardless of choice.
|
|
|
|
5. **Perform the archive**
|
|
|
|
Create the archive directory if it doesn't exist:
|
|
```bash
|
|
mkdir -p openspec/changes/archive
|
|
```
|
|
|
|
Generate target name using current date: `YYYY-MM-DD-<change-name>`
|
|
|
|
**Check if target already exists:**
|
|
- If yes: Fail with error, suggest renaming existing archive or using different date
|
|
- If no: Move the change directory to archive
|
|
|
|
```bash
|
|
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
|
|
```
|
|
|
|
6. **Display summary**
|
|
|
|
Show archive completion summary including:
|
|
- Change name
|
|
- Schema that was used
|
|
- Archive location
|
|
- Spec sync status (synced / sync skipped / no delta specs)
|
|
- Note about any warnings (incomplete artifacts/tasks)
|
|
|
|
**Output On Success**
|
|
|
|
```
|
|
## Archive Complete
|
|
|
|
**Change:** <change-name>
|
|
**Schema:** <schema-name>
|
|
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
|
|
**Specs:** ✓ Synced to main specs
|
|
|
|
All artifacts complete. All tasks complete.
|
|
```
|
|
|
|
**Output On Success (No Delta Specs)**
|
|
|
|
```
|
|
## Archive Complete
|
|
|
|
**Change:** <change-name>
|
|
**Schema:** <schema-name>
|
|
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
|
|
**Specs:** No delta specs
|
|
|
|
All artifacts complete. All tasks complete.
|
|
```
|
|
|
|
**Output On Success With Warnings**
|
|
|
|
```
|
|
## Archive Complete (with warnings)
|
|
|
|
**Change:** <change-name>
|
|
**Schema:** <schema-name>
|
|
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
|
|
**Specs:** Sync skipped (user chose to skip)
|
|
|
|
**Warnings:**
|
|
- Archived with 2 incomplete artifacts
|
|
- Archived with 3 incomplete tasks
|
|
- Delta spec sync was skipped (user chose to skip)
|
|
|
|
Review the archive if this was not intentional.
|
|
```
|
|
|
|
**Output On Error (Archive Exists)**
|
|
|
|
```
|
|
## Archive Failed
|
|
|
|
**Change:** <change-name>
|
|
**Target:** openspec/changes/archive/YYYY-MM-DD-<name>/
|
|
|
|
Target archive directory already exists.
|
|
|
|
**Options:**
|
|
1. Rename the existing archive
|
|
2. Delete the existing archive if it's a duplicate
|
|
3. Wait until a different date to archive
|
|
```
|
|
|
|
**Guardrails**
|
|
- Always prompt for change selection if not provided
|
|
- Use artifact graph (openspec status --json) for completion checking
|
|
- Don't block archive on warnings - just inform and confirm
|
|
- Preserve .openspec.yaml when moving to archive (it moves with the directory)
|
|
- Show clear summary of what happened
|
|
- If sync is requested, use /opsx-sync approach (agent-driven)
|
|
- If delta specs exist, always run the sync assessment and show the combined summary before prompting
|