• create_task(): validates goal_text/project_id/task_type (INVALID_PARAM per
    03-C §3.1), inserts the task row (status=queued, assigned_org_node=planner,
    loop_round=0 -- 04-P p_org_task_lifecycle start_state) plus a
    task_status_changed execution_event, both in one transaction (explicit
    rollback on failure between the two inserts, tested by dropping
    execution_event mid-call). c_project_create isn't reimplemented -- it's
    already complete in U-002 (project_scaffold.create_project).
    
    Corrects another Done-line overreach found while scoping this Unit:
    development-plan.md claimed U-009 alone satisfies all three REQ-01 cases
    (happy/boundary/failure), but the happy case ("依次触发 planner/coder/
    validator...task.status 按状态机正确流转") needs c_org_node_trigger's full
    implementation -- U-010's own Done criterion is almost that exact sentence,
    and U-009 doesn't depend on U-010 or even touch org-node triggering. Same
    class of issue as the U-002/U-036 corrections earlier this session (an
    SDD/plan line claiming more than the Unit's actual dependencies support),
    judged low-stakes enough (doesn't change what code to write, just when the
    REQ-01 happy case gets marked satisfied) to fix directly rather than stop
    and ask, per the graduated caution this session has been using. Boundary
    (concurrency limit doesn't block task *creation*, only later scheduling)
    and failure (INVALID_PARAM) are both fully real at U-009's scope and
    tested; happy completes cumulatively once U-010 lands.
    
    12 new stdlib unittest cases. 75 total across U-001-009, all passing.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
     
    Browse File »