FIRE Status
Project: {project.name} Workspace: {workspace.type} / {workspace.structure} Autonomy: {workspace.autonomybias} Version: {project.fireversion}
Project: {project.name} Workspace: {workspace.type} / {workspace.structure} Autonomy: {workspace.autonomybias} Version: {project.fireversion}
--- name: status description: Display current FIRE project status and validate integrity of intents, work items, and runs. version: 2.0.0 ---
<objective> Display current FIRE project status and validate integrity across state.yaml and file system. Detect inconsistencies and offer interactive resolution. </objective>
<triggers>
</triggers>
<degrees_of_freedom> **LOW** — Report facts accurately. Never auto-fix without user confirmation. </degrees_of_freedom>
<llm critical="true"> <mandate>NEVER auto-fix inconsistencies — ALWAYS ask user first</mandate> <mandate>ALWAYS scan file system — state.yaml may be incomplete</mandate> <mandate>Report ALL findings before offering fixes</mandate> <mandate>state.yaml is source of truth for status — frontmatter may be stale</mandate> </llm>
<flow> <step n="1" title="Read State"> <action>Read .specs-fire/state.yaml</action> <check if="state.yaml not found"> <output>No FIRE project found. Run `/specsmd-fire` to initialize.</output> <exit/> </check> </step>
<step n="2" title="Display Status"> <output>
**Project**: {project.name} **Workspace**: {workspace.type} / {workspace.structure} **Autonomy**: {workspace.autonomy_bias} **Version**: {project.fire_version}
{for each intent}
| Work Item | Status | Complexity | Mode | |-----------|--------|------------|------| {for each work_item} | {title} | {status} | {complexity} | {mode} | {/for}
{/for}
{if runs.active is array and has items} {for each active_run in runs.active}
{/for} {else if active_run exists (legacy singular)}
{else} No active run. {/if}
</output> </step>
<!-- ═══════════════════════════════════════════════════════════════════════════ --> <!-- INTEGRITY VALIDATION (NEW) --> <!-- ═══════════════════════════════════════════════════════════════════════════ -->
<step n="3" title="Scan File System"> <critical> File system may have artifacts not tracked in state.yaml. state.yaml may reference artifacts that no longer exist on disk. </critical>
<substep n="3a" title="Scan Intents"> <action>Glob: .specs-fire/intents/*/brief.md</action> <action>Extract intent IDs from directory names</action> <action>Store as: intents_on_disk[]</action> </substep>
<substep n="3b" title="Scan Work Items"> <action>Glob: .specs-fire/intents/*/work-items/*.md</action> <action>Exclude design docs (*-design.md)</action> <action>Extract work item IDs and parent intents</action> <action>Store as: work_items_on_disk[]</action> </substep>
<substep n="3c" title="Scan Runs"> <action>Glob: .specs-fire/runs/run-*/run.md</action> <action>Extract run IDs from directory names</action> <action>For each run, check which artifacts exist:</action> <substep>plan.md, test-report.md, review-report.md, walkthrough.md</substep> <action>Store as: runs_on_disk[] with artifact_flags</action> </substep> </step>
<step n="4" title="Compare File System vs State"> <substep n="4a" title="Find Orphaned Artifacts (on disk but not in state)"> <action>Compare intents_on_disk with state.intents</action> <action>Compare work_items_on_disk with state work_items</action> <action>Compare runs_on_disk with state.runs.completed + state.runs.active</action>
<check if="intent on disk but not in state"> <add_issue type="orphaned_intent" severity="warning"> Intent '{id}' exists on disk but not tracked in state.yaml </add_issue> </check>
<check if="work item on disk but not in state"> <add_issue type="orphaned_work_item" severity="warning"> Work item '{id}' exists on disk but not tracked in state.yaml </add_issue> </check>
<check if="run folder on disk but not in state"> <add_issue type="orphaned_run" severity="warning"> Run '{id}' exists on disk but not tracked in state.yaml </add_issue> </check> </substep>
<substep n="4b" title="Find Missing Files (in state but not on disk)"> <check if="intent in state but no brief.md on disk"> <add_issue type="missing_intent_file" severity="error"> Intent '{id}' tracked but brief.md not found on disk </add_issue> </check>
<check if="work item in state but no .md file on disk"> <add_issue type="missing_work_item_file" severity="error"> Work item '{id}' tracked but file not found on disk </add_issue> </check>
<check if="completed run in state but no folder on disk"> <add_issue type="missing_run_folder" severity="error"> Run '{id}' marked complete but folder not found on disk </add_issue> </check> </substep> </step>
<step n="5" title="Validate Status Cascade"> <critical> Status must cascade correctly:
</critical>
<substep n="5a" title="Work Item Status Check"> <action>For each work item in state:</action>
<check if="work item in runs.completed but status != completed"> <add_issue type="status_mismatch" severity="error"> Work item '{id}' was completed in run '{run_id}' but status is '{current_status}' Expected: completed </add_issue> </check>
<check if="work item in runs.active as current_item but status != in_progress"> <add_issue type="status_mismatch" severity="warning"> Work item '{id}' is currently executing in run '{run_id}' but status is '{current_status}' Expected: in_progress </add_issue> </check>
<check if="work item status is completed but not found in any completed run"> <add_issue type="status_unverifiable" severity="warning" needs_code_check="true"> Work item '{id}' marked as completed but no completed run found May have been done outside FIRE or run data is missing </add_issue> </check> </substep>
<substep n="5b" title="Intent Status Check"> <action>For each intent in state:</action>
<derive_expected_status> IF any work_item.status == "in_progress": expected = "in_progress" ELSE IF all work_items.status == "completed": expected = "completed" ELSE IF all work_items.status == "pending": expected = "pending" ELSE: # mixed pending/completed expected = "in_progress" </derive_expected_status>
<check if="intent.status != expected_status"> <add_issue type="intent_status_mismatch" severity="error"> Intent '{title}' has status '{current}' but should be '{expected}' Based on work item statuses: {breakdown} </add_issue> </check> </substep> </step>
<step n="6" title="Validate Run Artifact Completeness"> <substep n="6a" title="Check Completed Runs"> <action>For each run in runs.completed (or runs_on_disk marked complete):</action>
<required_artifacts>
</required_artifacts>
<optional_artifacts>
</optional_artifacts>
<check if="completed run missing required artifact"> <add_issue type="incomplete_run_artifacts" severity="warning"> Run '{id}' is marked complete but missing: {missing_artifacts} </add_issue> </check> </substep>
<substep n="6b" title="Check Active Runs"> <action>For each run in runs.active:</action>
<check if="active run folder does not exist"> <add_issue type="active_run_missing" severity="error"> Active run '{id}' has no folder on disk Run may have been deleted or never initialized properly </add_issue> </check>
<check if="active run has no run.md"> <add_issue type="active_run_corrupted" severity="error"> Active run '{id}' folder exists but run.md is missing Run initialization may have failed </add_issue> </check> </substep> </step>
<step n="7" title="Detect Stale Runs"> <action>For each run in runs.active[]:</action> <action>Calculate age: now - run.started</action>
<check if="active run started more than 24 hours ago"> <add_issue type="stale_run" severity="info" needs_user_decision="true"> Active run '{id}' was started {age} ago Current item: {current_item} Artifacts present: {artifact_list} May be abandoned or work was done outside FIRE </add_issue> </check>
<check if="active run has plan.md but no test-report.md and age > 1 hour"> <add_issue type="interrupted_run" severity="warning" needs_user_decision="true"> Run '{id}' appears interrupted mid-execution Has: plan.md Missing: test-report.md, walkthrough.md Execution may have been stopped before completion </add_issue> </check> </step>
<step n="8" title="Check Frontmatter Sync"> <note>state.yaml is source of truth. Frontmatter may drift.</note>
<action>For each work item with status in state.yaml:</action> <action>Read work item file, parse frontmatter</action>
<check if="frontmatter.status != state.yaml.status"> <add_issue type="frontmatter_drift" severity="info"> Work item '{id}' frontmatter says '{frontmatter_status}' but state.yaml says '{state_status}' state.yaml is authoritative </add_issue> </check> </step>
<step n="9" title="Report Findings"> <check if="no issues found"> <output>
All artifacts are consistent:
</output> <exit/> </check>
<check if="issues found"> <output>
Found {issue_count} issue(s) requiring attention:
| # | Type | Location | Issue | Suggested Fix | |---|------|----------|-------|---------------| {for each issue, numbered} | {n} | {severity_icon} | {location} | {description} | {fix_suggestion} | {/for}
**Severity**: 🔴 Error | 🟡 Warning | 🔵 Info
---
**[1] fix-all** — Apply all recommended fixes automatically **[2] review** — Go through each issue one by one **[3] skip** — Continue without fixing {if any issue has needs_code_check} **[4] check-code** — Verify by inspecting the codebase {/if}
Choose an action [1/2/3{if check-code available}/4{/if}]: </output> </check> </step>
<step n="10" title="Process User Choice"> <check if="response == 1 (fix-all)"> <goto step="11"/> </check>
<check if="response == 2 (review)"> <goto step="12"/> </check>
<check if="response == 3 (skip)"> <output>Skipping integrity fixes. Issues may cause unexpected behavior.</output> <exit/> </check>
<check if="response == 4 (check-code)"> <goto step="13"/> </check> </step>
<step n="11" title="Apply All Fixes"> <action>For each issue with a fix:</action>
<fix_actions> <fix for="orphaned_intent"> Read brief.md frontmatter, add intent to state.yaml with status: pending </fix>
<fix for="orphaned_work_item"> Read work item frontmatter, add to parent intent in state.yaml </fix>
<fix for="orphaned_run"> Parse run.md, determine if complete or incomplete If complete: add to runs.completed If incomplete: offer to add to runs.active or delete </fix>
<fix for="missing_intent_file"> Remove intent from state.yaml (data loss warning) Or: Create placeholder brief.md from state data </fix>
<fix for="status_mismatch"> Update state.yaml status to expected value </fix>
<fix for="intent_status_mismatch"> Update intent status in state.yaml </fix>
<fix for="frontmatter_drift"> Update work item frontmatter to match state.yaml </fix>
<fix for="incomplete_run_artifacts"> Mark run as incomplete in state, or generate missing artifacts </fix>
<fix for="stale_run"> User must decide: resume, abandon, or check code </fix> </fix_actions>
<output>
{for each fix applied} ✓ {description} {/for}
{if any fixes skipped} ⏭️ Skipped (requires user decision): {for each skipped}
{/for} {/if} </output>
<goto step="14"/> </step>
<step n="12" title="Interactive Review"> <action>For each issue:</action>
<output>
**Type**: {type} **Severity**: {severity} **Location**: {location}
{full_description}
{fix_suggestion}
---
**[y]** Apply fix **[n]** Skip this issue **[c]** Check codebase for this item **[q]** Quit review (remaining issues skipped)
Choice [y/n/c/q]: </output>
<check if="response == y"> <action>Apply fix for this issue</action> <output>✓ Fixed: {description}</output> </check>
<check if="response == c"> <action>Invoke code check for this specific item</action> <goto_substep>code-check for {item}</goto_substep> </check>
<check if="response == q"> <output>Review ended. {remaining} issues skipped.</output> <goto step="14"/> </check>
<action>Continue to next issue</action> </step>
<step n="13" title="Code Verification"> <critical> This is a BEST EFFORT verification. AI will look for evidence but may not catch everything. User should confirm findings. </critical>
<ask> I'll check the codebase for evidence that work items were completed. This involves reading work item acceptance criteria and looking for matching implementations.
Which items should I check?
{for each item with needs_code_check} **[{n}]** {work_item_title} {/for} **[a]** All items **[b]** Back to actions
Choice: </ask>
<substep n="13a" title="Verify Single Work Item"> <action>Read work item file: .specs-fire/intents/{intent}/work-items/{id}.md</action> <action>Extract acceptance criteria</action> <action>Extract expected files/endpoints/components mentioned</action>
<verification_checks> <check title="File Existence"> Look for files mentioned in the work item description Example: "Create src/auth/login.ts" → check if file exists </check>
<check title="Test Existence"> Look for test files for the component Pattern: {filename}.test.ts, {filename}.spec.ts, __tests__/{filename}.ts </check>
<check title="Implementation Markers"> If file exists, do a quick scan for expected functions/classes Example: Work item mentions "login endpoint" → look for login handler </check> </verification_checks>
<output>
{list acceptance criteria}
{for each check} {check_result_icon} {check_description} {/for}
{if all checks pass} ✅ **Likely Complete** — Implementation evidence found Recommend: Mark as completed in state.yaml {else if some checks pass} 🟡 **Partially Complete** — Some evidence found Missing: {missing_items} Recommend: Review manually or continue implementation {else} ❌ **Not Found** — No implementation evidence Recommend: Keep as pending, implementation needed {/if}
---
Apply this assessment? [y/n]: </output>
<check if="response == y"> <action>Update state.yaml based on assessment</action> </check> </substep> </step>
<step n="14" title="Log Maintenance"> <check if="any fixes were applied"> <action>Append to .specs-fire/maintenance-log.md (create if needed):</action>
<log_entry>
**Triggered by**: status skill validation
| Issue | Fix Applied | Details | |-------|-------------|---------| {for each fix} | {type} | {fix_description} | {location} | {/for}
--- </log_entry>
<output> Changes logged to: .specs-fire/maintenance-log.md </output> </check> </step>
<step n="15" title="Final Summary"> <output>
{if fixes applied} **Fixes Applied**: {fix_count} **Issues Remaining**: {remaining_count} {/if}
{if all clean} ✅ Project state is consistent and ready for work. {else} ⚠️ Some issues remain unresolved. Run `/specsmd-fire status` again to review. {/if}
---
**Next**: {suggest next action based on current state} </output> </step> </flow>
<!-- ═══════════════════════════════════════════════════════════════════════════ --> <!-- ISSUE TYPE REFERENCE --> <!-- ═══════════════════════════════════════════════════════════════════════════ -->
<issue_types>
| Type | Severity | Auto-fixable | Description | |------|----------|--------------|-------------| | orphaned_intent | warning | yes | Intent on disk but not in state.yaml | | orphaned_work_item | warning | yes | Work item on disk but not in state.yaml | | orphaned_run | warning | partial | Run folder on disk but not tracked | | missing_intent_file | error | partial | Intent in state but file missing | | missing_work_item_file | error | partial | Work item in state but file missing | | missing_run_folder | error | no | Completed run in state but folder missing | | status_mismatch | error | yes | Work item status doesn't match run history | | status_unverifiable | warning | no | Status can't be verified from run data | | intent_status_mismatch | error | yes | Intent status inconsistent with work items | | incomplete_run_artifacts | warning | partial | Run missing required artifacts | | active_run_missing | error | no | Active run folder doesn't exist | | active_run_corrupted | error | no | Active run folder missing run.md | | stale_run | info | no | Active run is old, may be abandoned | | interrupted_run | warning | no | Run appears stopped mid-execution | | frontmatter_drift | info | yes | Frontmatter status differs from state |
</issue_types>
<!-- ═══════════════════════════════════════════════════════════════════════════ --> <!-- EXAMPLE OUTPUT --> <!-- ═══════════════════════════════════════════════════════════════════════════ -->
<example_output>
# FIRE Status
**Project**: my-saas-app
**Workspace**: brownfield / monolith
**Autonomy**: balanced
**Version**: 0.1.8
## Intents
### User Authentication [in_progress]
| Work Item | Status | Complexity | Mode |
|-----------|--------|------------|------|
| login-endpoint | completed | medium | confirm |
| session-management | in_progress | medium | confirm |
| password-reset | pending | high | validate |
## Active Runs
- **Run**: run-fabriqa-2026-002 | **Scope**: single
- **Current Item**: session-management
- **Started**: 2026-01-19T10:30:00Z
## Quick Stats
- Intents: 1 (0 completed)
- Work Items: 3 (1 completed)
- Runs: 1 completed
---
## ⚠️ Integrity Issues Detected
Found 3 issue(s) requiring attention:
| # | Type | Location | Issue | Suggested Fix |
|---|------|----------|-------|---------------|
| 1 | 🟡 | run-fabriqa-2026-002 | Run started 3 days ago, may be stale | Resume or abandon |
| 2 | 🔵 | login-endpoint | Frontmatter says 'pending' but state says 'completed' | Sync frontmatter |
| 3 | 🟡 | analytics-dashboard.md | Work item on disk but not tracked | Add to state.yaml |
**Severity**: 🔴 Error | 🟡 Warning | 🔵 Info
---
### Actions
**[1] fix-all** — Apply all recommended fixes automatically
**[2] review** — Go through each issue one by one
**[3] skip** — Continue without fixing
**[4] check-code** — Verify by inspecting the codebase
Choose an action [1/2/3/4]:</example_output>
<success_criteria> <criterion>State file read successfully</criterion> <criterion>All intents and work items displayed</criterion> <criterion>Active run status shown</criterion> <criterion>Quick stats accurate</criterion> <criterion>File system scanned for all artifacts</criterion> <criterion>Orphaned artifacts detected (disk → state)</criterion> <criterion>Missing files detected (state → disk)</criterion> <criterion>Status cascade validated (work items → intents)</criterion> <criterion>Run artifact completeness checked</criterion> <criterion>Stale/interrupted runs detected</criterion> <criterion>Frontmatter sync checked</criterion> <criterion>Issues reported in clear table format</criterion> <criterion>User given choice: fix-all, review, skip, check-code</criterion> <criterion>Fixes logged to maintenance-log.md</criterion> <criterion>Code verification available for ambiguous cases</criterion> </success_criteria>