aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
361 lines (275 loc) • 11.5 kB
Markdown
# Task: Story Checkpoint
## Story 11.3: Development Cycle Workflow
Task de checkpoint entre stories no Development Cycle.
Requer decisão humana para continuar, pausar, revisar ou abortar.
## Metadata
```yaml
task_id: story-checkpoint
version: "1.0.0"
agent: "@po"
elicit: true # REQUIRES human interaction
epic: "11 - Projeto Bob"
story: "11.3"
```
## Purpose
Pausar o workflow de desenvolvimento entre stories para perguntar ao usuário qual ação tomar. Garante que o usuário mantém controle sobre o fluxo de trabalho.
## Inputs
| Input | Type | Required | Description |
|-------|------|----------|-------------|
| `story_file` | path | Yes | Path to completed story file |
| `pr_url` | string | No | URL of created PR (if push succeeded) |
| `implementation` | object | No | Implementation details from development phase |
| `review_result` | object | No | Quality gate review result |
## Execution
### Step 1: Generate Summary
```yaml
summary:
story_completed:
file: "${story_file}"
executor: "${story.executor}"
quality_gate: "${story.quality_gate}"
implementation:
files_created: "${implementation.files_created.length}"
files_modified: "${implementation.files_modified.length}"
tests_added: "${implementation.tests_added.length}"
quality_gate:
verdict: "${review_result.verdict}"
score: "${review_result.score}"
pr:
url: "${pr_url}"
status: "${pr_url ? 'Created' : 'Pending'}"
```
### Step 2: Display Summary
```
═══════════════════════════════════════════════════════════════════
📋 STORY CHECKPOINT
═══════════════════════════════════════════════════════════════════
Story Completed: ${story_file}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Implementation Summary:
• Files Created: ${implementation.files_created.length}
• Files Modified: ${implementation.files_modified.length}
• Tests Added: ${implementation.tests_added.length}
✅ Quality Gate: ${review_result.verdict} (${review_result.score}/100)
🔗 PR: ${pr_url || 'Not created yet'}
═══════════════════════════════════════════════════════════════════
```
### Step 3: Elicit Decision
```yaml
elicitation:
type: single_choice
required: true
timeout: 30m
prompt: |
Story completed! What would you like to do next?
options:
- id: GO
label: "🚀 GO - Continue to next story"
description: |
Continue the development cycle with the next story in the epic.
The workflow will automatically load and validate the next story.
action: suggest_next_story
- id: PAUSE
label: "⏸️ PAUSE - Save state and stop"
description: |
Save the current workflow state and stop execution.
You can resume later with *workflow resume development-cycle.
action: save_session_state
- id: REVIEW
label: "🔍 REVIEW - Show what was done"
description: |
Display a detailed summary of all changes made in this story.
Includes file diffs, test results, and quality gate findings.
action: show_detailed_summary
- id: ABORT
label: "⛔ ABORT - Stop the epic"
description: |
Stop working on this epic entirely.
All progress is saved but the workflow will not continue.
action: abort_epic
display_format: |
┌─────────────────────────────────────────────────────────────┐
│ What's next? │
├─────────────────────────────────────────────────────────────┤
│ │
│ [1] 🚀 GO - Continue to next story │
│ [2] ⏸️ PAUSE - Save state and stop │
│ [3] 🔍 REVIEW - Show what was done │
│ [4] ⛔ ABORT - Stop the epic │
│ │
└─────────────────────────────────────────────────────────────┘
Enter your choice (1-4):
```
## Actions
### GO Action: Suggest Next Story
```yaml
action: suggest_next_story
steps:
1_find_next:
description: "Find next story in epic"
logic: |
- Read epic file to get story list
- Find current story position
- Get next story (status = Draft or Approved)
- If no more stories, report "Epic complete"
2_validate_next:
description: "Validate next story is ready"
checks:
- Has executor assigned
- Has quality_gate assigned
- Status is Draft or Approved
- Dependencies are met
3_confirm:
description: "Confirm with user"
prompt: |
Next story: ${next_story.title}
Executor: ${next_story.executor}
Quality Gate: ${next_story.quality_gate}
Start development? (Y/n)
4_transition:
description: "Transition to next story"
actions:
- Update workflow state with new story
- Reset phase to 1_validation
- Continue workflow execution
```
### PAUSE Action: Save Session State
```yaml
action: save_session_state
steps:
1_save_state:
description: "Persist workflow state"
location: ".aios/workflow-state/${story_id}-state.yaml"
content:
workflow_id: development-cycle
current_story: "${story_file}"
current_phase: "6_checkpoint"
paused_at: "${timestamp}"
epic_progress:
completed_stories: []
remaining_stories: []
accumulated_context: {}
2_confirm:
description: "Confirm state saved"
message: |
✅ Workflow state saved!
To resume later, run:
*workflow resume development-cycle
Or activate @po and run:
*validate-story-draft ${next_story}
3_exit:
description: "Exit workflow"
status: paused
```
### REVIEW Action: Show Detailed Summary
```yaml
action: show_detailed_summary
steps:
1_gather_data:
description: "Collect all changes"
data:
- Git diff since workflow start
- All files created/modified/deleted
- Test results
- Quality gate findings
- PR details
2_display:
description: "Show detailed summary"
format: |
═══════════════════════════════════════════════════════════════════
📊 DETAILED SUMMARY
═══════════════════════════════════════════════════════════════════
Story: ${story_file}
Duration: ${duration}
─────────────────────────────────────────────────────────────────────
📁 FILES CHANGED
─────────────────────────────────────────────────────────────────────
Created:
${files_created.map(f => ' + ' + f).join('\n')}
Modified:
${files_modified.map(f => ' ~ ' + f).join('\n')}
─────────────────────────────────────────────────────────────────────
🧪 TEST RESULTS
─────────────────────────────────────────────────────────────────────
Passed: ${test_results.passed}
Failed: ${test_results.failed}
Skipped: ${test_results.skipped}
─────────────────────────────────────────────────────────────────────
✅ QUALITY GATE
─────────────────────────────────────────────────────────────────────
Verdict: ${review_result.verdict}
Score: ${review_result.score}/100
Findings:
${review_result.findings.map(f => ' • ' + f).join('\n')}
═══════════════════════════════════════════════════════════════════
3_return:
description: "Return to checkpoint"
action: "Re-display checkpoint options"
```
### ABORT Action: Stop Epic
```yaml
action: abort_epic
steps:
1_confirm:
description: "Confirm abort"
prompt: |
⚠️ Are you sure you want to abort the epic?
This will:
- Stop the development cycle
- Save current progress
- NOT affect completed stories
Abort? (yes/no)
2_save_final_state:
description: "Save abort state"
location: ".aios/workflow-state/${story_id}-state.yaml"
status: aborted
3_report:
description: "Report abort"
message: |
⛔ Epic aborted.
Progress saved. Completed stories are unaffected.
To review progress:
*backlog-summary
To restart:
*workflow development-cycle ${next_incomplete_story}
4_exit:
description: "Exit workflow"
status: aborted
```
## Output
```yaml
output:
decision:
type: enum
values: [GO, PAUSE, REVIEW, ABORT]
next_story:
type: path
optional: true
description: "Path to next story (only if GO)"
state_file:
type: path
optional: true
description: "Path to saved state file (if PAUSE or ABORT)"
```
## Error Handling
| Error | Handling |
|-------|----------|
| No next story found | Display "Epic complete" message |
| Next story not ready | Display warning, allow manual selection |
| State save failed | Retry 3x, then warn user |
| User timeout | Default to PAUSE after 30 minutes |
## Related
- **Workflow:** `development-cycle.yaml`
- **Module:** `workflow-executor.js`
- **Story:** 11.3 (Development Cycle Workflow)
- **Dependencies:** Story 11.1 (Executor Assignment), Story 11.2 (Terminal Spawning)
*Task created by @dev (Dex) for Story 11.3*