Commit Graph
2 Commits
Author SHA1 Message Date
Renn FandClaude Opus 4.7 4cb47afdb2 feat(gateway): restore Gate Set E submit-qa field-level gates
i_am_done now strictly enforces the four pre-gateway field-level gates
restored from roboco/api/routes/tasks.py:903-940 at commit 254cc93:

- NOT_SELF_VERIFIED: task.self_verified must be true.
- NO_COMMITS: task.commits must be non-empty.
- NO_PR: task.pr_number must be set.
- NO_PROGRESS: task.progress_updates must have at least one entry.

Each missing field surfaces as a tracing_gap with the matching pre-
gateway error code in the missing list, and a remediation hint that
tells the dev exactly what to do.

The previous silent-catch-up behavior is preserved as a separate
opt-in verb i_am_done_with_catchup. Existing tests that asserted the
catch-up behavior have been migrated to the new verb.

This fixes the failure mode where a dev could call i_am_done with no
commits and the gateway would silently try to push nothing, open an
empty PR, etc. — now the dev sees an explicit error.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 03:34:57 +02:00
Renn F 4a3da479d1 test(gateway): cover per-transition reassignment
Adds:
- TaskService.reassign unit tests (set, clear, missing-task)
- New test_choreographer_reassignment.py covering:
    i_am_done -> qa
    pass_review -> documenter
    i_documented -> cell_pm
    main_pm_complete -> None (CEO via UI)
    escalate_to_ceo (board) -> None
    cell_pm_complete -> walks up to parent and reassigns when all
                        siblings terminal, skips otherwise
    fail_review -> does NOT issue an explicit reassign (qa_fail
                   already restores the original developer via
                   quick_context)
2026-05-02 05:25:07 +02:00