fix: stop tracking spec files in git (#295)

* fix: stop tracking spec files in git

- Remove git commit instructions from planner.md for spec files
- Spec files (implementation_plan.json, init.sh, build-progress.txt) should be gitignored
- Untrack existing spec files that were accidentally committed
- AI agents should only commit code changes, not spec metadata

The .auto-claude/specs/ directory is gitignored by design - spec files are
local project metadata that shouldn't be version controlled.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(prompts): remove git commit instructions for gitignored spec files

The spec files (build-progress.txt, qa_report.md, implementation_plan.json,
QA_FIX_REQUEST.md) are all stored in .auto-claude/specs/ which is gitignored.

Removed instructions telling agents to commit these files, replaced with
notes explaining they're tracked automatically by the framework.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Andy
2025-12-26 13:51:24 +01:00
committed by GitHub
parent 7a51cbd5e5
commit 937a60f8bd
11 changed files with 19 additions and 1071 deletions
@@ -1,68 +0,0 @@
=== AUTO-BUILD PROGRESS ===
Project: Spec Approval Mechanism for Human-in-the-Loop Workflow
Workspace: Managed by orchestrator
Started: 2025-12-26 07:14:00 UTC
Workflow Type: feature
Rationale: This is new functionality bridging a critical gap in the human-in-the-loop workflow. Adding approval UI and backend state transitions that don't currently exist.
Session 1 (Planner):
- Created implementation_plan.json
- Phases: 4
- Total subtasks: 9
- Created init.sh
- Updated context.json with investigation findings
Phase Summary:
- Phase 1 (Backend Spec Approval State Management): 2 subtasks, no dependencies, parallel-safe
- Phase 2 (Frontend Approval UI Components): 4 subtasks, no dependencies, parallel-safe
- Phase 3 (IPC Integration): 2 subtasks, depends on [phase-1, phase-2]
- Phase 4 (End-to-End Verification): 1 subtask, depends on [phase-3]
Services Involved:
- frontend: Approval UI, state management, user interactions
- backend: Spec approval state persistence and workflow transitions
Parallelism Analysis:
- Max parallel phases: 2
- Recommended workers: 2
- Parallel groups: [phase-1-backend-state, phase-2-frontend-ui] can run together
- Speedup estimate: 1.4x faster than sequential execution
Key Implementation Insights:
- TaskStatus already includes 'human_review' status
- ReviewReason already includes 'plan_review' type ("Spec/plan created and awaiting approval before coding starts")
- Frontend has existing patterns: Zustand stores, Radix UI dialogs, task review components
- Backend needs to check requireReviewBeforeCoding metadata and set reviewReason='plan_review' after spec creation
- Integration requires new IPC handlers: approveSpec(), rejectSpec()
Files Identified for Modification:
Backend:
- apps/backend/spec/pipeline/orchestrator.py
- apps/backend/runners/spec_runner.py
- apps/frontend/src/main/project-store.ts (IPC handlers)
Frontend:
- apps/frontend/src/renderer/stores/task-store.ts
- apps/frontend/src/renderer/components/task-detail/TaskActions.tsx
- apps/frontend/src/renderer/components/task-detail/TaskHeader.tsx
- apps/frontend/src/shared/types/ipc.ts
New Files:
- apps/frontend/src/renderer/components/task-detail/SpecReviewModal.tsx
Reference Patterns:
- apps/frontend/src/renderer/components/ui/dialog.tsx (Radix Dialog pattern)
- apps/frontend/src/renderer/components/task-detail/task-review/DiffViewDialog.tsx (Review modal pattern)
- apps/frontend/src/renderer/stores/task-store.ts (Zustand store pattern)
=== STARTUP COMMAND ===
To continue building this spec, run:
source auto-claude/.venv/bin/activate && python auto-claude/run.py --spec 015 --parallel 2
This will execute Phase 1 (backend) and Phase 2 (frontend) in parallel, then proceed to Phase 3 (integration) and Phase 4 (E2E verification).
=== END SESSION 1 ===
@@ -1,38 +0,0 @@
{
"task_description": "Task stuck after spec creation with 'Require human review before coding' enabled - no way to approve",
"scoped_services": ["frontend", "backend"],
"files_to_modify": {
"frontend": [
"apps/frontend/src/renderer/stores/task-store.ts",
"apps/frontend/src/renderer/components/task-detail/TaskActions.tsx",
"apps/frontend/src/shared/types/ipc.ts"
],
"backend": [
"apps/backend/spec/pipeline/orchestrator.py",
"apps/backend/runners/spec_runner.py",
"apps/frontend/src/main/project-store.ts"
]
},
"files_to_reference": [
"apps/frontend/src/renderer/components/ui/dialog.tsx",
"apps/frontend/src/renderer/components/task-detail/task-review/DiffViewDialog.tsx",
"apps/frontend/src/renderer/stores/settings-store.ts",
"apps/frontend/src/renderer/components/task-detail/TaskDetailModal.tsx"
],
"patterns": {
"zustand_store": "Use create() from zustand, define interface with state and actions, export async functions for IPC calls",
"radix_dialog": "Use Dialog, DialogContent, DialogHeader, DialogTitle from ui/dialog.tsx, apply Tailwind classes for styling",
"ipc_pattern": "Define IPC handlers in electronAPI interface, implement in main process, call from renderer via window.electronAPI",
"task_status_flow": "Tasks use status='human_review' with reviewReason='plan_review' when awaiting spec approval"
},
"existing_implementations": {
"description": "Found existing task review patterns in task-detail/task-review/ showing how to handle human_review states with diff viewing and approval actions",
"relevant_files": [
"apps/frontend/src/renderer/components/task-detail/task-review/index.ts",
"apps/frontend/src/renderer/components/task-detail/task-review/WorkspaceStatus.tsx",
"apps/frontend/src/shared/types/task.ts"
],
"key_insight": "ReviewReason type already includes 'plan_review' but it's not being set anywhere. Tasks should transition to status='human_review' with reviewReason='plan_review' after spec creation when requireReviewBeforeCoding is enabled."
},
"created_at": "2025-12-26T07:14:00.000000"
}
@@ -1,282 +0,0 @@
{
"feature": "Spec Approval Mechanism for Human-in-the-Loop Workflow",
"workflow_type": "feature",
"workflow_rationale": "This is new functionality bridging a critical gap in the human-in-the-loop workflow. Adding approval UI and backend state transitions that don't currently exist, rather than fixing existing code or refactoring.",
"phases": [
{
"id": "phase-1-backend-state",
"name": "Backend Spec Approval State Management",
"type": "implementation",
"description": "Implement backend logic to transition tasks to plan_review state after spec creation and handle approval/rejection",
"depends_on": [],
"parallel_safe": true,
"subtasks": [
{
"id": "subtask-1-1",
"description": "Add plan_review state transition after spec creation when requireReviewBeforeCoding is enabled",
"service": "backend",
"files_to_modify": ["apps/backend/spec/pipeline/orchestrator.py", "apps/backend/runners/spec_runner.py"],
"files_to_create": [],
"patterns_from": ["apps/backend/review/state.py"],
"verification": {
"type": "command",
"command": "python -c \"from apps.backend.spec.pipeline.orchestrator import SpecOrchestrator; print('OK')\"",
"expected": "OK"
},
"status": "pending"
},
{
"id": "subtask-1-2",
"description": "Add IPC handlers for spec approval and rejection in main process",
"service": "backend",
"files_to_modify": ["apps/frontend/src/main/project-store.ts"],
"files_to_create": [],
"patterns_from": ["apps/frontend/src/main/project-store.ts"],
"verification": {
"type": "command",
"command": "grep -q 'approveSpec\\|rejectSpec' apps/frontend/src/main/project-store.ts && echo 'OK' || echo 'FAIL'",
"expected": "OK"
},
"status": "pending"
}
]
},
{
"id": "phase-2-frontend-ui",
"name": "Frontend Approval UI Components",
"type": "implementation",
"description": "Build the spec review modal, approval actions, and visual indicators for tasks awaiting approval",
"depends_on": [],
"parallel_safe": true,
"subtasks": [
{
"id": "subtask-2-1",
"description": "Create SpecReviewModal component with markdown rendering and approve/reject actions",
"service": "frontend",
"files_to_modify": [],
"files_to_create": ["apps/frontend/src/renderer/components/task-detail/SpecReviewModal.tsx"],
"patterns_from": ["apps/frontend/src/renderer/components/ui/dialog.tsx", "apps/frontend/src/renderer/components/task-detail/task-review/DiffViewDialog.tsx"],
"verification": {
"type": "command",
"command": "grep -q 'SpecReviewModal' apps/frontend/src/renderer/components/task-detail/SpecReviewModal.tsx && echo 'OK' || echo 'FAIL'",
"expected": "OK"
},
"status": "pending"
},
{
"id": "subtask-2-2",
"description": "Add spec approval actions to task-store (openSpecReview, approveSpec, rejectSpec)",
"service": "frontend",
"files_to_modify": ["apps/frontend/src/renderer/stores/task-store.ts"],
"files_to_create": [],
"patterns_from": ["apps/frontend/src/renderer/stores/task-store.ts"],
"verification": {
"type": "command",
"command": "grep -q 'approveSpec\\|rejectSpec' apps/frontend/src/renderer/stores/task-store.ts && echo 'OK' || echo 'FAIL'",
"expected": "OK"
},
"status": "pending"
},
{
"id": "subtask-2-3",
"description": "Update TaskActions to show Review Spec button when reviewReason is plan_review",
"service": "frontend",
"files_to_modify": ["apps/frontend/src/renderer/components/task-detail/TaskActions.tsx"],
"files_to_create": [],
"patterns_from": ["apps/frontend/src/renderer/components/task-detail/TaskActions.tsx"],
"verification": {
"type": "browser",
"url": "http://localhost:3000",
"checks": ["Review Spec button appears for tasks in plan_review state", "No console errors"]
},
"status": "pending"
},
{
"id": "subtask-2-4",
"description": "Add visual indicator badge for tasks awaiting spec approval in task list",
"service": "frontend",
"files_to_modify": ["apps/frontend/src/renderer/components/task-detail/TaskHeader.tsx"],
"files_to_create": [],
"patterns_from": ["apps/frontend/src/renderer/components/ui/badge.tsx"],
"verification": {
"type": "browser",
"url": "http://localhost:3000",
"checks": ["Badge shows for plan_review tasks", "Badge has distinct styling"]
},
"status": "pending"
}
]
},
{
"id": "phase-3-ipc-integration",
"name": "IPC Integration",
"type": "integration",
"description": "Wire frontend approval actions to backend IPC handlers and add TypeScript type definitions",
"depends_on": ["phase-1-backend-state", "phase-2-frontend-ui"],
"parallel_safe": false,
"subtasks": [
{
"id": "subtask-3-1",
"description": "Add approveSpec and rejectSpec to IPC type definitions",
"service": "frontend",
"files_to_modify": ["apps/frontend/src/shared/types/ipc.ts"],
"files_to_create": [],
"patterns_from": ["apps/frontend/src/shared/types/ipc.ts"],
"verification": {
"type": "command",
"command": "grep -q 'approveSpec\\|rejectSpec' apps/frontend/src/shared/types/ipc.ts && echo 'OK' || echo 'FAIL'",
"expected": "OK"
},
"status": "pending"
},
{
"id": "subtask-3-2",
"description": "Integrate SpecReviewModal into TaskDetailModal component",
"service": "frontend",
"files_to_modify": ["apps/frontend/src/renderer/components/task-detail/TaskDetailModal.tsx"],
"files_to_create": [],
"patterns_from": ["apps/frontend/src/renderer/components/task-detail/TaskDetailModal.tsx"],
"verification": {
"type": "browser",
"url": "http://localhost:3000",
"checks": ["Modal opens when Review Spec clicked", "Modal displays spec content", "Approve/Reject buttons functional"]
},
"status": "pending"
}
]
},
{
"id": "phase-4-end-to-end",
"name": "End-to-End Verification",
"type": "integration",
"description": "Test complete flow from spec creation to approval to implementation start",
"depends_on": ["phase-3-ipc-integration"],
"parallel_safe": false,
"subtasks": [
{
"id": "subtask-4-1",
"description": "End-to-end test: Create task with requireReviewBeforeCoding, verify spec approval flow",
"all_services": true,
"files_to_modify": [],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "e2e",
"steps": [
"Enable 'Require human review before coding' setting",
"Create a new task",
"Wait for spec generation to complete",
"Verify task status is human_review with reviewReason plan_review",
"Click 'Review Spec' button",
"Verify spec.md displays in modal",
"Click 'Approve' button",
"Verify task transitions to in_progress and implementation starts",
"Test rejection flow: reject spec and verify task state"
]
},
"status": "pending"
}
]
}
],
"summary": {
"total_phases": 4,
"total_subtasks": 9,
"services_involved": ["frontend", "backend"],
"parallelism": {
"max_parallel_phases": 2,
"parallel_groups": [
{
"phases": ["phase-1-backend-state", "phase-2-frontend-ui"],
"reason": "Both have no dependencies and work on different services (backend vs frontend)"
}
],
"recommended_workers": 2,
"speedup_estimate": "1.4x faster than sequential - backend and frontend work can happen simultaneously"
},
"startup_command": "source auto-claude/.venv/bin/activate && python auto-claude/run.py --spec 015 --parallel 2"
},
"verification_strategy": {
"risk_level": "medium",
"skip_validation": false,
"test_creation_phase": "post_implementation",
"test_types_required": ["unit", "integration", "e2e"],
"security_scanning_required": false,
"staging_deployment_required": false,
"acceptance_criteria": [
"All existing tests pass",
"New code has test coverage for approval flow",
"No regressions in existing task workflow",
"Spec approval UI is accessible and intuitive",
"Edge cases handled (missing spec, concurrent approvals)"
],
"verification_steps": [
{
"name": "Frontend Unit Tests",
"command": "cd apps/frontend && npm test",
"expected_outcome": "All tests pass",
"type": "test",
"required": true,
"blocking": true
},
{
"name": "Frontend Integration Tests",
"command": "cd apps/frontend && npm run test:integration",
"expected_outcome": "All integration tests pass",
"type": "test",
"required": true,
"blocking": true
},
{
"name": "End-to-End Tests",
"command": "cd apps/frontend && npx playwright test",
"expected_outcome": "Approval flow E2E test passes",
"type": "test",
"required": true,
"blocking": true
},
{
"name": "Manual Browser Verification",
"command": "cd apps/frontend && npm run dev",
"expected_outcome": "Spec approval flow works end-to-end in browser",
"type": "manual",
"required": true,
"blocking": false
}
],
"reasoning": "Medium risk workflow change requires comprehensive testing. Critical user flow must work correctly to avoid blocking task execution."
},
"qa_acceptance": {
"unit_tests": {
"required": true,
"commands": ["cd apps/frontend && npm test"],
"minimum_coverage": null
},
"integration_tests": {
"required": true,
"commands": ["cd apps/frontend && npm run test:integration"],
"services_to_test": ["frontend", "backend"]
},
"e2e_tests": {
"required": true,
"commands": ["cd apps/frontend && npx playwright test"],
"flows": ["spec-approval-flow", "spec-rejection-flow"]
},
"browser_verification": {
"required": true,
"pages": [
{
"url": "http://localhost:3000/",
"checks": ["Review Spec button appears", "Modal opens", "Spec content renders", "Approve/Reject work", "No console errors"]
}
]
},
"database_verification": {
"required": false,
"checks": []
}
},
"qa_signoff": null,
"created_at": "2025-12-26T07:14:00.000Z",
"updated_at": "2025-12-26T07:14:00.000Z"
}
@@ -1,75 +0,0 @@
#!/bin/bash
# Auto-Build Environment Setup
# Generated by Planner Agent for Spec 015
set -e
echo "========================================"
echo "Starting Development Environment"
echo "Spec 015: Spec Approval Mechanism"
echo "========================================"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Wait for service function
wait_for_service() {
local port=$1
local name=$2
local max=30
local count=0
echo "Waiting for $name on port $port..."
while ! nc -z localhost $port 2>/dev/null; do
count=$((count + 1))
if [ $count -ge $max ]; then
echo -e "${RED}$name failed to start${NC}"
return 1
fi
sleep 1
done
echo -e "${GREEN}$name ready${NC}"
}
# ============================================
# START SERVICES
# ============================================
# Frontend (Port 3000)
echo ""
echo -e "${YELLOW}Starting Frontend Service...${NC}"
cd apps/frontend
npm run dev &
FRONTEND_PID=$!
cd ../..
wait_for_service 3000 "Frontend"
# ============================================
# SUMMARY
# ============================================
echo ""
echo "========================================"
echo -e "${GREEN}Environment Ready!${NC}"
echo "========================================"
echo ""
echo "Services:"
echo " Frontend: http://localhost:3000"
echo ""
echo "Key Files to Modify:"
echo " Backend:"
echo " - apps/backend/spec/pipeline/orchestrator.py"
echo " - apps/backend/runners/spec_runner.py"
echo " - apps/frontend/src/main/project-store.ts"
echo " Frontend:"
echo " - apps/frontend/src/renderer/stores/task-store.ts"
echo " - apps/frontend/src/renderer/components/task-detail/TaskActions.tsx"
echo " - apps/frontend/src/renderer/components/task-detail/SpecReviewModal.tsx (new)"
echo ""
echo "To stop services:"
echo " kill $FRONTEND_PID"
echo ""
@@ -1,75 +0,0 @@
=== AUTO-BUILD PROGRESS ===
Project: Fix Task Runner Crash Loop - File Not Found Error
Workspace: Managed by orchestrator
Started: 2025-12-26 07:15:00
Workflow Type: investigation
Rationale: Root cause (specific missing file) is unknown. Must first reproduce and identify the issue before implementing a fix. Investigation phase output will determine fix phase scope.
Session 1 (Planner):
- Created implementation_plan.json
- Phases: 5
- Total subtasks: 13
- Created init.sh
- Created context.json with investigation notes
Phase Summary:
- Phase 1 (Reproduce & Locate Error): 3 subtasks, no dependencies
→ Search error logs and crash traces
→ Identify exact file path causing error
→ Trace git history for file deletions/moves
- Phase 2 (Analyze Root Cause): 3 subtasks, depends on Phase 1
→ Analyze task runner code to understand file dependency
→ Determine crash loop mechanism and retry logic
→ Formulate fix strategy based on findings
- Phase 3 (Implement Fix): 3 subtasks, depends on Phase 2
→ Add file existence validation at startup
→ Implement crash loop prevention with max retries
→ Improve error messages with file paths and suggestions
- Phase 4 (Testing & Validation): 3 subtasks, depends on Phase 3
→ Create unit tests for file validation
→ Create integration test for crash loop prevention
→ Verify existing tests still pass
- Phase 5 (Documentation): 2 subtasks, depends on Phase 4
→ Document all file dependencies in README
→ Update error handling documentation
Services Involved:
- backend: Investigation and implementation of crash loop fix
Parallelism Analysis:
- Max parallel phases: 1
- Recommended workers: 1
- Parallel groups: None
- Reasoning: Investigation workflow requires sequential execution. Phase 2 depends on Phase 1 findings, Phase 3 depends on Phase 2 analysis.
Key Patterns Identified:
- File validation pattern: Check path.exists() before reading files (agent_runner.py:79-81)
- Error handling pattern: Use pathlib.Path, return clear error messages with file paths
- Example: "if not prompt_path.exists(): return False, f'Prompt not found: {prompt_path}'"
Reference Files:
- apps/backend/spec/pipeline/agent_runner.py (error handling pattern)
- apps/backend/core/progress.py (file validation pattern)
- apps/backend/services/orchestrator.py (service orchestration)
Investigation Focus:
- Locate task runner/orchestrator implementation code
- Find error logs or stack traces showing file not found error
- Identify which file is missing and why it's being accessed
- Determine if file should exist or if code should handle absence gracefully
=== STARTUP COMMAND ===
To continue building this spec, run:
source auto-claude/.venv/bin/activate && python auto-claude/run.py --spec 020
This will start the investigation workflow (sequential, 1 worker recommended).
=== END SESSION 1 ===
@@ -1,40 +0,0 @@
{
"task_description": "Task Appears Stuck: Task Runner Crash Loop (File Not Found)",
"scoped_services": ["backend"],
"files_to_modify": {
"backend": []
},
"files_to_reference": [
"apps/backend/spec/pipeline/agent_runner.py",
"apps/backend/core/progress.py",
"apps/backend/services/orchestrator.py"
],
"patterns": {
"file_validation_pattern": "Check path.exists() before reading files, return clear error messages",
"error_handling_pattern": "Use pathlib.Path, provide actionable error messages with file paths",
"retry_pattern": "No infinite retries - fail fast with clear errors"
},
"existing_implementations": {
"description": "Found file validation patterns in agent_runner.py (lines 79-81) and progress.py (lines 41-43)",
"relevant_files": [
"apps/backend/spec/pipeline/agent_runner.py",
"apps/backend/core/progress.py"
],
"key_pattern_location": "agent_runner.py:79-81 shows: if not prompt_path.exists(): return False, f\"Prompt not found: {prompt_path}\""
},
"investigation_notes": {
"workflow_type": "investigation",
"primary_objective": "Identify the missing file causing crash loop through log analysis and code inspection",
"key_questions": [
"What is the exact file path that cannot be found?",
"Is this affecting spec creation, task execution, or service startup?",
"Did recent changes move or delete this file?"
],
"likely_locations": [
"apps/backend - Task runner/orchestrator code",
".auto-claude/specs - Spec-related files",
"Logs directory - Error traces"
]
},
"created_at": "2025-12-26T07:15:00.000000"
}
@@ -1,367 +0,0 @@
{
"feature": "Fix Task Runner Crash Loop - File Not Found Error",
"workflow_type": "investigation",
"workflow_rationale": "This is an investigation workflow because the root cause (specific missing file) is unknown. Must first reproduce and identify the issue before implementing a fix. Investigation phase output will determine fix phase scope.",
"phases": [
{
"id": "phase-1-reproduce",
"name": "Reproduce & Locate Error",
"type": "investigation",
"description": "Reproduce the crash loop and identify the specific missing file through log analysis and code inspection",
"depends_on": [],
"parallel_safe": true,
"subtasks": [
{
"id": "subtask-1-1",
"description": "Search for recent error logs and crash traces",
"service": "backend",
"files_to_modify": [],
"files_to_create": ["INVESTIGATION.md"],
"patterns_from": [],
"verification": {
"type": "manual",
"instructions": "Document findings in INVESTIGATION.md: (1) Error logs found, (2) Stack traces captured, (3) Timestamps of crashes"
},
"status": "pending",
"expected_output": "List of log files with file-not-found errors, including timestamps and context"
},
{
"id": "subtask-1-2",
"description": "Identify the exact file path causing the error",
"service": "backend",
"files_to_modify": [],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "manual",
"instructions": "Update INVESTIGATION.md with: (1) Exact file path, (2) Where it's being accessed, (3) Expected vs actual location"
},
"status": "pending",
"expected_output": "Documented file path, code location accessing it, and why access is failing"
},
{
"id": "subtask-1-3",
"description": "Trace git history to check if file was moved or deleted",
"service": "backend",
"files_to_modify": [],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "command",
"command": "git log --diff-filter=D --summary --all -- [MISSING_FILE_PATH] | head -20",
"expected": "Shows git history of file deletions/moves"
},
"status": "pending",
"expected_output": "Git history showing if/when file was deleted or moved"
}
]
},
{
"id": "phase-2-root-cause",
"name": "Analyze Root Cause",
"type": "investigation",
"description": "Determine why the file is missing and whether it should exist or code should handle absence gracefully",
"depends_on": ["phase-1-reproduce"],
"parallel_safe": false,
"subtasks": [
{
"id": "subtask-2-1",
"description": "Analyze task runner code to understand file dependency",
"service": "backend",
"files_to_modify": [],
"files_to_create": [],
"patterns_from": [
"apps/backend/spec/pipeline/agent_runner.py",
"apps/backend/core/progress.py"
],
"verification": {
"type": "manual",
"instructions": "Update INVESTIGATION.md with: (1) Why file is accessed, (2) Is it required or optional, (3) Current error handling (if any)"
},
"status": "pending",
"expected_output": "Root cause analysis: file purpose, whether it's required, and current handling"
},
{
"id": "subtask-2-2",
"description": "Determine crash loop mechanism and retry logic",
"service": "backend",
"files_to_modify": [],
"files_to_create": [],
"patterns_from": ["apps/backend/services/orchestrator.py"],
"verification": {
"type": "manual",
"instructions": "Document in INVESTIGATION.md: (1) How retry occurs, (2) Why it loops infinitely, (3) Where to add circuit breaker"
},
"status": "pending",
"expected_output": "Understanding of retry mechanism and why it causes crash loop instead of failing gracefully"
},
{
"id": "subtask-2-3",
"description": "Formulate fix strategy based on findings",
"service": "backend",
"files_to_modify": [],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "manual",
"instructions": "Complete INVESTIGATION.md with: (1) Root cause summary, (2) Proposed fix, (3) Files to modify, (4) Testing plan"
},
"status": "pending",
"expected_output": "Complete investigation report with actionable fix strategy"
}
]
},
{
"id": "phase-3-implement-fix",
"name": "Implement Fix",
"type": "implementation",
"description": "Implement the fix based on investigation findings - add file validation and prevent crash loop",
"depends_on": ["phase-2-root-cause"],
"parallel_safe": false,
"subtasks": [
{
"id": "subtask-3-1",
"description": "Add file existence validation at startup/initialization",
"service": "backend",
"files_to_modify": ["TBD - determined by investigation"],
"files_to_create": [],
"patterns_from": [
"apps/backend/spec/pipeline/agent_runner.py"
],
"verification": {
"type": "command",
"command": "python -m pytest apps/backend/tests/test_file_validation.py -v",
"expected": "File validation tests pass"
},
"status": "pending",
"notes": "Use pattern from agent_runner.py:79-81: if not path.exists(): return False, f'File not found: {path}'"
},
{
"id": "subtask-3-2",
"description": "Implement crash loop prevention with max retries",
"service": "backend",
"files_to_modify": ["TBD - determined by investigation"],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "manual",
"instructions": "Test that missing file causes graceful failure after max 3 retries, no infinite loop"
},
"status": "pending",
"notes": "Add exponential backoff: base_delay=1.0s, max_delay=10.0s, max_retries=3"
},
{
"id": "subtask-3-3",
"description": "Improve error messages with file paths and suggestions",
"service": "backend",
"files_to_modify": ["TBD - determined by investigation"],
"files_to_create": [],
"patterns_from": [
"apps/backend/spec/pipeline/agent_runner.py"
],
"verification": {
"type": "manual",
"instructions": "Verify error message includes: file path, current directory, suggested fix"
},
"status": "pending",
"notes": "Error format: 'Required file not found: {path}\\nCurrent directory: {cwd}\\nPlease ensure file exists or check configuration'"
}
]
},
{
"id": "phase-4-test",
"name": "Testing & Validation",
"type": "implementation",
"description": "Add comprehensive tests for file validation and crash loop prevention",
"depends_on": ["phase-3-implement-fix"],
"parallel_safe": false,
"subtasks": [
{
"id": "subtask-4-1",
"description": "Create unit tests for file validation",
"service": "backend",
"files_to_modify": [],
"files_to_create": ["apps/backend/tests/test_file_validation.py"],
"patterns_from": ["tests/test_merge_orchestrator.py"],
"verification": {
"type": "command",
"command": "python -m pytest apps/backend/tests/test_file_validation.py -v",
"expected": "All tests pass"
},
"status": "pending",
"notes": "Test cases: missing required file, missing optional file, file permissions, path variations"
},
{
"id": "subtask-4-2",
"description": "Create integration test for crash loop prevention",
"service": "backend",
"files_to_modify": [],
"files_to_create": ["apps/backend/tests/test_crash_loop_prevention.py"],
"patterns_from": ["tests/test_service_orchestrator.py"],
"verification": {
"type": "command",
"command": "python -m pytest apps/backend/tests/test_crash_loop_prevention.py -v",
"expected": "Crash loop prevention tests pass"
},
"status": "pending",
"notes": "Test: remove file, trigger task, verify max 3 retries, verify graceful failure"
},
{
"id": "subtask-4-3",
"description": "Verify existing tests still pass",
"service": "backend",
"files_to_modify": [],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "command",
"command": "python -m pytest apps/backend/tests/ -v --ignore=apps/backend/tests/test_file_validation.py --ignore=apps/backend/tests/test_crash_loop_prevention.py",
"expected": "All existing tests pass"
},
"status": "pending",
"notes": "Ensure changes don't break existing functionality"
}
]
},
{
"id": "phase-5-documentation",
"name": "Documentation",
"type": "cleanup",
"description": "Document file dependencies and error handling improvements",
"depends_on": ["phase-4-test"],
"parallel_safe": true,
"subtasks": [
{
"id": "subtask-5-1",
"description": "Document all file dependencies in README",
"service": "backend",
"files_to_modify": ["apps/backend/README.md"],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "manual",
"instructions": "README lists all required and optional files with their purposes"
},
"status": "pending",
"notes": "Include file paths, when they're accessed, and what happens if missing"
},
{
"id": "subtask-5-2",
"description": "Update error handling documentation",
"service": "backend",
"files_to_modify": ["INVESTIGATION.md"],
"files_to_create": [],
"patterns_from": [],
"verification": {
"type": "manual",
"instructions": "INVESTIGATION.md includes fix summary and lessons learned"
},
"status": "pending",
"notes": "Document root cause, fix implemented, and how to prevent similar issues"
}
]
}
],
"summary": {
"total_phases": 5,
"total_subtasks": 13,
"services_involved": ["backend"],
"parallelism": {
"max_parallel_phases": 1,
"parallel_groups": [],
"recommended_workers": 1,
"speedup_estimate": "Investigation workflow requires sequential execution",
"reasoning": "Phase 2 depends on Phase 1 findings, Phase 3 depends on Phase 2 analysis. Cannot parallelize investigation workflow."
},
"startup_command": "source auto-claude/.venv/bin/activate && python auto-claude/run.py --spec 020"
},
"verification_strategy": {
"risk_level": "high",
"skip_validation": false,
"test_creation_phase": "post_implementation",
"test_types_required": ["unit", "integration"],
"security_scanning_required": false,
"staging_deployment_required": false,
"acceptance_criteria": [
"Missing file identified through investigation",
"Crash loop no longer occurs",
"Clear error messages display file paths and suggestions",
"File validation added at startup",
"All existing tests pass",
"New tests cover file validation and crash loop scenarios"
],
"verification_steps": [
{
"name": "Unit Tests",
"command": "python -m pytest apps/backend/tests/test_file_validation.py -v",
"expected_outcome": "All file validation tests pass",
"type": "test",
"required": true,
"blocking": true
},
{
"name": "Integration Tests",
"command": "python -m pytest apps/backend/tests/test_crash_loop_prevention.py -v",
"expected_outcome": "Crash loop prevention verified",
"type": "test",
"required": true,
"blocking": true
},
{
"name": "Regression Tests",
"command": "python -m pytest apps/backend/tests/ -v",
"expected_outcome": "All existing tests still pass",
"type": "test",
"required": true,
"blocking": true
}
],
"reasoning": "High-risk blocking issue requires thorough testing. Investigation must complete before fix can be implemented."
},
"qa_acceptance": {
"unit_tests": {
"required": true,
"commands": ["python -m pytest apps/backend/tests/test_file_validation.py -v"],
"minimum_coverage": null
},
"integration_tests": {
"required": true,
"commands": ["python -m pytest apps/backend/tests/test_crash_loop_prevention.py -v"],
"services_to_test": ["backend"]
},
"e2e_tests": {
"required": false,
"commands": [],
"flows": []
},
"browser_verification": {
"required": false,
"pages": []
},
"database_verification": {
"required": false,
"checks": []
},
"manual_checks": {
"required": true,
"checks": [
{
"name": "Verify crash loop eliminated",
"description": "Remove suspected file, trigger task, verify graceful failure without infinite retry",
"expected": "Task fails with clear error message after max 3 retries"
},
{
"name": "Verify error message quality",
"description": "Check error message includes file path, current directory, and suggested fix",
"expected": "Error message is actionable and guides user to resolution"
},
{
"name": "Verify investigation findings",
"description": "Review INVESTIGATION.md for completeness",
"expected": "Document includes root cause, evidence, proposed fix, and testing plan"
}
]
}
},
"qa_signoff": null
}
@@ -1,75 +0,0 @@
#!/bin/bash
# Auto-Build Environment Setup
# Generated by Planner Agent
set -e
echo "========================================"
echo "Starting Development Environment"
echo "========================================"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Wait for service function
wait_for_service() {
local port=$1
local name=$2
local max=30
local count=0
echo "Waiting for $name on port $port..."
while ! nc -z localhost $port 2>/dev/null; do
count=$((count + 1))
if [ $count -ge $max ]; then
echo -e "${RED}$name failed to start${NC}"
return 1
fi
sleep 1
done
echo -e "${GREEN}$name ready${NC}"
}
# ============================================
# INVESTIGATION WORKFLOW
# ============================================
echo ""
echo "========================================"
echo "Investigation Workflow"
echo "========================================"
echo ""
echo "This is an INVESTIGATION workflow."
echo "No services need to be started for investigation phase."
echo ""
echo "Phase 1: Reproduce & Locate Error"
echo " - Search logs and crash traces"
echo " - Identify missing file path"
echo " - Check git history"
echo ""
echo "Phase 2: Analyze Root Cause"
echo " - Analyze task runner code"
echo " - Understand crash loop mechanism"
echo " - Formulate fix strategy"
echo ""
echo "Phase 3: Implement Fix (blocked until investigation complete)"
echo ""
echo "========================================"
echo "Environment Ready for Investigation"
echo "========================================"
echo ""
echo "Backend Path: apps/backend"
echo "Project Root: ."
echo ""
echo "Key Investigation Files:"
echo " - Error logs in: logs/"
echo " - Task logs in: .auto-claude/specs/"
echo " - Backend code in: apps/backend/"
echo ""
echo "To start investigation:"
echo " python apps/backend/run.py --spec 020"
echo ""
+2 -7
View File
@@ -681,13 +681,8 @@ Next phase (if applicable): [phase-name]
=== END SESSION N ===
```
**Commit progress:**
```bash
git add build-progress.txt
git commit -m "auto-claude: Update progress"
# Do NOT push - user will push after review
```
**Note:** The `build-progress.txt` file is in `.auto-claude/specs/` which is gitignored.
Do NOT try to commit it - the framework tracks progress automatically.
---
+11 -23
View File
@@ -737,26 +737,18 @@ chmod +x init.sh
---
## PHASE 6: COMMIT IMPLEMENTATION PLAN
## PHASE 6: VERIFY PLAN FILES
**IMPORTANT: Branch/worktree management is handled by the Python orchestrator.**
Do NOT run `git checkout` or `git branch` commands - your workspace is already set up.
**IMPORTANT: Do NOT commit spec/plan files to git.**
**Commit the implementation plan (if changes are present):**
```bash
# Add plan files
git add implementation_plan.json init.sh
The following files are gitignored and should NOT be committed:
- `implementation_plan.json` - tracked locally only
- `init.sh` - tracked locally only
- `build-progress.txt` - tracked locally only
# Check if there's anything to commit
git diff --cached --quiet || git commit -m "auto-claude: Initialize subtask-based implementation plan
These files live in `.auto-claude/specs/` which is gitignored. The orchestrator handles syncing them between worktrees and the main project.
- Workflow type: [type]
- Phases: [N]
- Subtasks: [N]
- Ready for autonomous implementation"
```
Note: If the commit fails (e.g., nothing to commit, or in a special workspace), that's okay - the plan is still saved.
**Only code changes should be committed** - spec metadata stays local.
---
@@ -808,12 +800,7 @@ Example:
=== END SESSION 1 ===
```
**Commit progress:**
```bash
git add build-progress.txt
git commit -m "auto-claude: Add progress tracking"
```
**Note:** Do NOT commit `build-progress.txt` - it is gitignored along with other spec files.
---
@@ -826,7 +813,8 @@ Your session ends after:
2. **Creating/updating context files** - project_index.json, context.json
3. **Creating init.sh** - the setup script
4. **Creating build-progress.txt** - progress tracking document
5. **Committing all planning files**
Note: These files are NOT committed to git - they are gitignored and managed locally.
**STOP HERE. Do NOT:**
- Start implementing any subtasks
+6 -21
View File
@@ -427,17 +427,9 @@ cat > qa_report.md << 'EOF'
[QA Report content]
EOF
git add qa_report.md implementation_plan.json
git commit -m "qa: Sign off - all verification passed
- Unit tests: X/Y passing
- Integration tests: X/Y passing
- E2E tests: X/Y passing
- Browser verification: complete
- Security review: passed
- No regressions found
🤖 QA Agent Session [N]"
# Note: qa_report.md and implementation_plan.json are in .auto-claude/specs/ (gitignored)
# Do NOT commit them - the framework tracks QA status automatically
# Only commit actual code changes to the project
```
### If REJECTED:
@@ -472,16 +464,9 @@ Once fixes are complete:
EOF
git add QA_FIX_REQUEST.md implementation_plan.json
git commit -m "qa: Rejected - fixes required
Issues found:
- [Issue 1]
- [Issue 2]
See QA_FIX_REQUEST.md for details.
🤖 QA Agent Session [N]"
# Note: QA_FIX_REQUEST.md and implementation_plan.json are in .auto-claude/specs/ (gitignored)
# Do NOT commit them - the framework tracks QA status automatically
# Only commit actual code fixes to the project
```
Update `implementation_plan.json`: