Skip to main content

#!/usr/bin/env python3 """ Task Execution Script: Final Quality Validation and Deployment Preparation Project: Module 1 Foundations - Priority 1 Content Generation Task ID: TASK_013 """

import sys import json import logging from pathlib import Path from datetime import datetime from typing import Dict, Any

============================================================================

CUSTOM EXCEPTIONS

============================================================================

class TaskExecutionError(Exception): """Base exception for task execution errors""" pass

class TaskFileError(TaskExecutionError): """Error accessing project file""" pass

class TaskStatusError(TaskExecutionError): """Error updating task status""" pass

============================================================================

LOGGING CONFIGURATION

============================================================================

logging.basicConfig( level=logging.INFO, format='%(levelname)s: %(message)s', stream=sys.stdout ) logger = logging.getLogger(name)

============================================================================

CORE FUNCTIONS

============================================================================

def execute_task() -> str: """Execute TASK_013 using orchestrator"""

task_prompt = """
Task: Final Quality Validation and Deployment Preparation

Description: Comprehensive quality check, final validation, and preparation for deployment

Deliverables Required:
- final_quality_report
  • deployment_package

    Context:

    • Project: Module 1 Foundations - Priority 1 Content Generation
    • Phase: completion
    • Dependencies: TASK_011, TASK_012

    Instructions:

    1. Execute the task according to the description
    2. Ensure all deliverables are created
    3. Follow educational content development best practices
    4. Include proper metadata for NotebookLM optimization
    5. Report progress and any blockers

    Expected Output:

    • Completed deliverables
    • Progress report with completion status
    • Recommendations for next steps
    • Any identified issues or dependencies """

    Task execution using Claude Code Task protocol

    task_call = ( "Task(\n" " subagent_type="general-purpose",\n" " description="Final Quality Validation and Deployment Preparation",\n" " prompt="Use orchestrator subagent to execute the task requirements above"\n" ")" )

    logger.info("Executing Task Call:") logger.info(task_call)

    return task_call

def update_task_status(task_id: str, status: str) -> None: """Update task status in project file""" project_file = Path("module1_foundations_priority_project.json")

try:
# Validate project file exists
if not project_file.exists():
raise TaskFileError(f"Project file not found: {project_file}")

# Read project data
try:
with open(project_file, "r", encoding='utf-8') as f:
project_data = json.load(f)
except json.JSONDecodeError as e:
raise TaskFileError(f"Invalid JSON in project file: {e}")
except Exception as e:
raise TaskFileError(f"Failed to read project file: {e}")

# Update task status
if task_id not in project_data.get("tasks", {}):
logger.warning(f"Task {task_id} not found in project file")
return

project_data["tasks"][task_id]["status"] = status

if status == "completed":
project_data["tasks"][task_id]["completion_date"] = datetime.now().isoformat()

# Write updated data
try:
with open(project_file, "w", encoding='utf-8') as f:
json.dump(project_data, f, indent=2)
logger.info(f"Task {task_id} status updated to: {status}")
except Exception as e:
raise TaskStatusError(f"Failed to write project file: {e}")

except (TaskFileError, TaskStatusError):
raise
except Exception as e:
raise TaskExecutionError(f"Unexpected error updating task status: {e}")

============================================================================

MAIN FUNCTION

============================================================================

def main() -> int: """Main execution function""" try: logger.info("Starting task execution...")

    # Update task status
try:
update_task_status("TASK_013", "in_progress")
except TaskExecutionError as e:
logger.warning(f"Failed to update task status: {e}")
# Continue execution even if status update fails

# Execute task
result = execute_task()

logger.info("Task execution initiated.")

return 0

except Exception as e:
logger.error(f"Task execution failed: {e}")
return 1

if name == "main": sys.exit(main())