Files
ss-tools/.opencode/command/speckit.resume.md
busya d874a4dca6 feat(speckit): workflow architecture upgrades + rework 038 spec per new flow
Add prototype/openapi/validate/resume commands, wire edge-failure matrix into UX,
enforce traceability + validation gates, mandate C4/C5 belief-runtime verification.
Rework 038-dashboard-scenario-model artifacts: applicability, structured edge cases,
24-class UX state matrix, interactive HTML prototype, standardized OpenAPI 3.1 (7 ops),
full RTM with coverage gate, 56-task backlog, and PASS validation report.
2026-07-31 11:25:43 +03:00

207 lines
8.5 KiB
Markdown

---
description: Reconstruct active feature and phase state after interruption. Read-only except for an optional specs/<feature>/resume.md bounded snapshot. Never mark tasks complete or rerun create-new-feature.
---
## User Input
```text
$ARGUMENTS
```
You **MUST** consider the user input before proceeding (if not empty).
## Principle
You are recovering state after an interruption — agent crash, context loss, session timeout, or user returning after a break. You do NOT modify user changes, mark tasks complete, or create new feature branches. Your job is to inspect what exists and report exactly where the workflow stands.
## Outline
### Phase 0: Read-Only Pre-Flight
1. **Run prerequisites**: Run `.specify/scripts/bash/check-prerequisites.sh --json --paths-only` from repo root. Parse `FEATURE_DIR`, `FEATURE_SPEC`, `IMPL_PLAN`, `TASKS`.
2. **Check git status** (do NOT modify working tree):
```bash
git status --short
git branch --show-current
git log --oneline -5
```
Report: current branch, uncommitted changes count, recent commits. If on a feature branch (`NNN-short-name`) that matches the detected `FEATURE_DIR`, confirm alignment. If branch and `FEATURE_DIR` mismatch, report the inconsistency (do NOT switch branches).
### Phase 1: Phase Detection — Which Workflow Phase Are We In?
Inspect artifacts to determine the current phase. Use this decision tree:
| Artifact Present? | Phase |
|-------------------|-------|
| No `FEATURE_DIR/spec.md` | **Pre-Spec** — run `/speckit.specify` |
| `spec.md` exist, no `plan.md` | **Specification** — after `/speckit.specify`, before `/speckit.plan`. Check for `/speckit.clarify` state. |
| `spec.md` + `plan.md`, no `tasks.md` | **Planning** — after `/speckit.plan`, before `/speckit.tasks` |
| `spec.md` + `plan.md` + `tasks.md`, no `validation.md` | **Task Decomposition** — after `/speckit.tasks`, before `/speckit.validate` or `/speckit.implement` |
| `validation.md` exists with PASS | **Ready to Implement** — run `/speckit.implement` |
| `validation.md` exists with BLOCKED | **Blocked** — resolve findings, re-run `/speckit.validate` |
| Tasks partially checked `[x]` | **Mid-Implementation** — some tasks done, some remaining |
### Phase 2: Artifact Inventory
Inspect all artifacts in `FEATURE_DIR/` and list their state:
| Artifact | Path | Exists? | Size | Last Content Change |
|----------|------|:-------:|------|---------------------|
| spec.md | `FEATURE_DIR/spec.md` | ✅/❌ | N lines | [date] |
| ux_reference.md | `FEATURE_DIR/ux_reference.md` | ✅/❌ | N lines | [date] |
| plan.md | `FEATURE_DIR/plan.md` | ✅/❌ | N lines | [date] |
| research.md | `FEATURE_DIR/research.md` | ✅/❌ | N lines | [date] |
| data-model.md | `FEATURE_DIR/data-model.md` | ✅/❌ | N lines | [date] |
| traceability.md | `FEATURE_DIR/traceability.md` | ✅/❌ | N lines | [date] |
| quickstart.md | `FEATURE_DIR/quickstart.md` | ✅/❌ | N lines | [date] |
| tasks.md | `FEATURE_DIR/tasks.md` | ✅/❌ | N lines | [date] |
| contracts/modules.md | `FEATURE_DIR/contracts/modules.md` | ✅/❌ | N lines | [date] |
| contracts/ux/ | `FEATURE_DIR/contracts/ux/` | ✅/❌ | N files | [date] |
| prototype/index.html | `FEATURE_DIR/prototype/index.html` | ✅/❌ | N bytes | [date] |
| contracts/openapi.yaml | `FEATURE_DIR/contracts/openapi.yaml` | ✅/❌ | N lines | [date] |
| validation.md | `FEATURE_DIR/validation.md` | ✅/❌ | PASS/BLOCKED | [date] |
| fixtures/manifest.md | `FEATURE_DIR/fixtures/manifest.md` | ✅/❌ | N lines | [date] |
| checklists/ | `FEATURE_DIR/checklists/` | ✅/❌ | N files | [date] |
For each artifact that exists, note whether it appears complete or truncated (does the last line look like a proper end-of-file or does it cut off mid-sentence?).
### Phase 3: Task Progress Inspection
If `tasks.md` exists:
1. **Parse task checkboxes**:
```bash
grep -c '\[x\]' FEATURE_DIR/tasks.md # completed
grep -c '\[ \]' FEATURE_DIR/tasks.md # remaining
grep -c '\[.\]' FEATURE_DIR/tasks.md # total
```
2. **Phase-by-phase breakdown**:
| Phase | Total | Done | Remaining | Status |
|-------|:-----:|:----:|:---------:|--------|
| Phase 1: Setup | N | N | N | ✅/🔄/⏳ |
| Phase 2: Foundational | N | N | N | ✅/🔄/⏳ |
| Phase 3: US1 | N | N | N | ✅/🔄/⏳ |
| ... | | | | |
3. **Inconsistent partial phase detection**: If a phase has some `[x]` and some `[ ]` tasks, that phase is **in progress**. Report which phase is partially complete and which specific tasks remain.
4. **Implementation evidence**: For each completed `[x]` task, check if the referenced file path exists:
```bash
# For each [x] task that mentions a file path:
ls -la <file_path> 2>/dev/null || echo "MISSING"
```
If a task is marked complete but the referenced file does not exist → **INCONSISTENCY**: flag as potential false completion.
### Phase 4: Axiom Health Check
1. `axiom_search({operation="status"})` — index status
2. `axiom_search({operation="workspace_health"})` — orphans, unresolved relations
Report: index freshness, orphan count, any unresolved relations that match this feature's scope.
### Phase 5: Test Evidence
If `FEATURE_DIR/quickstart.md` exists, run the applicable verification commands and report results:
```bash
# If backend work was in progress:
cd backend && source .venv/bin/activate && python -m pytest -v --co 2>/dev/null | tail -5
# If frontend work was in progress:
cd frontend && npm run test 2>/dev/null | tail -10
```
Report: test pass/fail counts, any regressions.
### Phase 6: Produce Resume Snapshot (Optional Write)
If the user wants a bounded snapshot (they say "save state" or explicitly request), write `specs/<feature>/resume.md`:
```markdown
#region Std.Opencode.ResumeSnapshot [C:2] [TYPE ADR] [SEMANTICS resume,snapshot,[DOMAIN]]
@BRIEF Workflow resume snapshot — current phase, completed items, remaining items, blockers.
**Feature**: [feature name]
**Branch**: [branch]
**Snapshot Date**: [DATE/TIME]
## Current Phase: [Phase Name]
## Completed
- Phase 1: Setup ✅ (N/N tasks)
- Phase 2: Foundational ✅ (N/N tasks)
- specs/xxx/contracts/modules.md ✅
## Remaining
- [ ] T017: Implement Core.Auth.Login (next task)
- [ ] Phase 3: US1 — N remaining tasks
- [ ] Phase 4: US2 — not started
- [ ] Phase N: Polish — not started
## Blockers
- [none / describe]
## Next Command
`/speckit.implement` — continue from Phase 3, task T017
## Verification Snapshot
- Backend tests: N passed, N failed
- Frontend tests: N passed, N failed
- Lint: clean / N warnings
- Axiom index: FRESH / STALE
#endregion Std.Opencode.ResumeSnapshot
```
**This is the ONLY write this command may perform.** All other operations are read-only.
### Phase 7: Report
Output a concise resume report:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 speckit.resume — Feature State Recovery
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Feature: [feature name]
Branch: [branch]
Artifacts: N present, N missing
📊 Current Phase: [Phase Name]
✅ Completed:
- Phase 1 Setup: N/N tasks
- Phase 2 Foundational: N/N tasks
- Contracts: modules.md, data-model.md
🔄 In Progress:
- Phase 3 US1: N/N tasks done (task T017 next)
⏳ Not Started:
- Phase 4 US2: N tasks
- Phase 5 Polish: N tasks
⚠️ Blockers: [none / list]
📋 Exact Next Command:
/speckit.implement — continue from Phase 3, task T017
OR (if pre-implementation)
/speckit.validate — run pre-implementation validation gate
OR (if blocked)
Resolve [blocker], then re-run /speckit.validate
📁 Uncommitted Changes: N files
💾 Axiom Index: FRESH / STALE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
## Behavior Rules
- **NEVER** mark tasks complete — this is read-only inspection.
- **NEVER** run `create-new-feature.sh` — the feature branch already exists.
- **NEVER** switch branches or modify `git` state.
- **NEVER** modify user changes — `git status` reports uncommitted work, preserve it.
- If no feature is detected (no spec.md, no feature branch), report: "No active feature detected. Run `/speckit.specify` to start a new feature."
- If the branch name does not match the `FEATURE_DIR` name, report the mismatch but do NOT resolve it automatically.
- If `tasks.md` is corrupt or unparsable, report the corruption and suggest re-running `/speckit.tasks`.