UNPKG

aios-core

Version:

Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework

426 lines (324 loc) 10.2 kB
# QA Task: Add Follow-up to Backlog **Agent:** @qa **Command:** `*backlog-add` (when used by @qa, defaults to type F) **Purpose:** Add follow-up item from QA review to backlog **Created:** 2025-01-16 (Story 6.1.2.6) --- ## Execution Modes **Choose your execution mode:** ### 1. YOLO Mode - Fast, Autonomous (0-1 prompts) - Autonomous decision making with logging - Minimal user interaction - **Best for:** Simple, deterministic tasks ### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]** - Explicit decision checkpoints - Educational explanations - **Best for:** Learning, complex decisions ### 3. Pre-Flight Planning - Comprehensive Upfront Planning - Task analysis phase (identify all ambiguities) - Zero ambiguity execution - **Best for:** Ambiguous requirements, critical work **Parameter:** `mode` (optional, default: `interactive`) --- ## Task Definition (AIOS Task Format V1.0) ```yaml task: qaBacklogAddFollowup() responsável: Quinn (Guardian) responsavel_type: Agente atomic_layer: Organism **Entrada:** - campo: target tipo: string origem: User Input obrigatório: true validação: Must exist - campo: criteria tipo: array origem: config obrigatório: true validação: Non-empty validation criteria - campo: strict tipo: boolean origem: User Input obrigatório: false validação: Default: true **Saída:** - campo: validation_result tipo: boolean destino: Return value persistido: false - campo: errors tipo: array destino: Memory persistido: false - campo: report tipo: object destino: File (.ai/*.json) persistido: true ``` --- ## Pre-Conditions **Purpose:** Validate prerequisites BEFORE task execution (blocking) **Checklist:** ```yaml pre-conditions: - [ ] Validation rules loaded; target available for validation tipo: pre-condition blocker: true validação: | Check validation rules loaded; target available for validation error_message: "Pre-condition failed: Validation rules loaded; target available for validation" ``` --- ## Post-Conditions **Purpose:** Validate execution success AFTER task completes **Checklist:** ```yaml post-conditions: - [ ] Validation executed; results accurate; report generated tipo: post-condition blocker: true validação: | Verify validation executed; results accurate; report generated error_message: "Post-condition failed: Validation executed; results accurate; report generated" ``` --- ## Acceptance Criteria **Purpose:** Definitive pass/fail criteria for task completion **Checklist:** ```yaml acceptance-criteria: - [ ] Validation rules applied; pass/fail accurate; actionable feedback tipo: acceptance-criterion blocker: true validação: | Assert validation rules applied; pass/fail accurate; actionable feedback error_message: "Acceptance criterion not met: Validation rules applied; pass/fail accurate; actionable feedback" ``` --- ## Tools **External/shared resources used by this task:** - **Tool:** validation-engine - **Purpose:** Rule-based validation and reporting - **Source:** .aios-core/utils/validation-engine.js - **Tool:** schema-validator - **Purpose:** JSON/YAML schema validation - **Source:** ajv or similar --- ## Scripts **Agent-specific code for this task:** - **Script:** run-validation.js - **Purpose:** Execute validation rules and generate report - **Language:** JavaScript - **Location:** .aios-core/scripts/run-validation.js --- ## Error Handling **Strategy:** retry **Common Errors:** 1. **Error:** Validation Criteria Missing - **Cause:** Required validation rules not defined - **Resolution:** Ensure validation criteria loaded from config - **Recovery:** Use default validation rules, log warning 2. **Error:** Invalid Schema - **Cause:** Target does not match expected schema - **Resolution:** Update schema or fix target structure - **Recovery:** Detailed validation error report 3. **Error:** Dependency Missing - **Cause:** Required dependency for validation not found - **Resolution:** Install missing dependencies - **Recovery:** Abort with clear dependency list --- ## Performance **Expected Metrics:** ```yaml duration_expected: 5-15 min (estimated) cost_estimated: $0.003-0.010 token_usage: ~3,000-10,000 tokens ``` **Optimization Notes:** - Break into smaller workflows; implement checkpointing; use async processing where possible --- ## Metadata ```yaml story: N/A version: 1.0.0 dependencies: - N/A tags: - quality-assurance - testing updated_at: 2025-11-17 ``` --- ## Task Flow ### 1. Elicit Follow-up Details ```yaml elicit: true questions: - Title (1-line description): input: text validation: min 10 chars, max 100 chars example: "Add edge case tests for user authentication flow" - Detailed Description: input: textarea validation: max 500 chars placeholder: "Describe what needs to be followed up on and why" - Priority: options: - Critical (🔴) - Blocking issue or security concern - High (🟠) - Important but not blocking - Medium (🟡) - Nice to have - Low (🟢) - Optional improvement default: Medium note: "Critical/High follow-ups should be addressed before story completion" - Related Story ID: input: text example: "6.1.2.6" note: "Usually the story being reviewed" required: true - Tags (optional, comma-separated): input: text example: "testing, edge-case, security" suggestions: ["testing", "edge-case", "security", "performance", "documentation"] - Estimated Effort (optional): input: text example: "2 hours", "1 day" default: "TBD" ``` ### 2. Validate Related Story ```javascript // QA review items MUST have a related story if (!relatedStory) { throw new Error('QA follow-ups must be linked to a story. Use related story ID.'); } // Validate story exists const storyPath = `docs/stories/**/*${relatedStory}*.md`; const matches = await glob(storyPath); if (matches.length === 0) { throw new Error(`Story not found: ${relatedStory}`); } if (matches.length > 1) { console.log('⚠️ Multiple stories matched, using first:'); matches.forEach(m => console.log(` - ${m}`)); } const storyFile = matches[0]; ``` ### 3. Add to Backlog ```javascript const { BacklogManager } = require('.aios-core/scripts/backlog-manager'); const manager = new BacklogManager('docs/stories/backlog.md'); await manager.load(); // QA always creates Follow-up type (F) const item = await manager.addItem({ type: 'F', // Follow-up title: title, description: description, priority: priority, relatedStory: relatedStory, createdBy: '@qa', tags: tags, estimatedEffort: estimatedEffort }); console.log(`✅ Follow-up added to backlog: ${item.id}`); ``` ### 4. Update Story QA Results (Optional) ```yaml elicit: true question: "Add reference to QA Results section in story?" options: - yes: Update story file with backlog reference - no: Skip story update default: yes ``` ```javascript if (updateStory) { const storyContent = await fs.readFile(storyFile, 'utf8'); // Find QA Results section const qaResultsMatch = storyContent.match(/## QA Results/); if (qaResultsMatch) { const updatedContent = storyContent.replace( /## QA Results/, `## QA Results\n\n**Follow-up Created:** [Backlog Item ${item.id}](../backlog.md) - ${title}\n` ); await fs.writeFile(storyFile, updatedContent, 'utf8'); console.log(`✅ Story updated with backlog reference`); } else { console.log('⚠️ QA Results section not found in story, skipping update'); } } ``` ### 5. Regenerate Backlog ```javascript await manager.generateBacklogFile(); console.log('✅ Backlog updated: docs/stories/backlog.md'); ``` ### 6. Summary Output ```markdown ## 📌 Follow-up Added to Backlog **ID:** ${item.id} **Type:** 📌 Follow-up (from QA review) **Title:** ${title} **Priority:** ${priorityEmoji} ${priority} **Related Story:** ${relatedStory} **Estimated Effort:** ${estimatedEffort} **Tags:** ${tags.join(', ') || 'None'} **Next Steps:** - Review in backlog: docs/stories/backlog.md - @po will prioritize with `*backlog-prioritize ${item.id}` - @dev will address before story completion (if Critical/High) ${priority === 'Critical' || priority === 'High' ? '⚠️ **HIGH PRIORITY** - Should be addressed before story completion' : '' } ``` --- ## Example Usage ```bash # During QA review of Story 6.1.2.6 *backlog-add # Example responses: Title: Add integration tests for story index generator Description: Current implementation only has unit tests. Integration tests needed to verify end-to-end story scanning and index generation. Priority: High Related Story: 6.1.2.6 Tags: testing, integration, coverage Effort: 3 hours Update story? yes # Output: Follow-up added to backlog: 1763298742141 Story updated with backlog reference Backlog updated: docs/stories/backlog.md ``` --- ## QA-Specific Rules 1. **Type is always F (Follow-up)** - QA creates follow-ups, not tech debt 2. **Related story is required** - All QA items linked to reviewed story 3. **Priority guidance:** - Critical: Security issue, data corruption risk, blocking bug - High: Important test gap, significant edge case - Medium: Nice-to-have test, minor gap - Low: Optional improvement 4. **Story update recommended** - Keep follow-ups visible in story file --- ## Error Handling - **No related story:** Require story ID, don't allow orphan follow-ups - **Story not found:** Show similar story names, allow retry - **QA Results section missing:** Log warning, skip story update - **Backlog locked:** Retry 3x with 1s delay --- ## Testing ```bash # Test with sample story *backlog-add # Fill in test data # Verify: # - Item added to backlog with type=F # - createdBy = @qa # - Story file updated (if QA Results section exists) # - Priority reflected in backlog ordering ``` --- **Related Tasks:** - `qa-review.md` - Comprehensive story review - `qa-gate.md` - Quality gate decision - `po-backlog-review.md` - PO reviews all follow-ups