Phase 1 left the backend halfway between legacy task payloads and the new executor boundary. This commit finishes the review-fix pass so missing protocol markers fail closed, timed-out subprocesses are killed, and successful analysis runs persist a result contract before task state is marked complete. Constraint: env312 lacks pytest-asyncio so async executor tests must run without extra plugins Rejected: Keep missing marker fallback as HOLD | masks protocol regressions as neutral signals Rejected: Leave service success assembly in AnalysisService | breaks contract-first persistence and result_ref wiring Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep backend success state driven by persisted result contracts; do not reintroduce raw stdout parsing in services Tested: python -m compileall orchestrator tradingagents web_dashboard/backend Tested: python -m pytest web_dashboard/backend/tests/test_executors.py web_dashboard/backend/tests/test_services_migration.py web_dashboard/backend/tests/test_api_smoke.py web_dashboard/backend/tests/test_main_api.py web_dashboard/backend/tests/test_portfolio_api.py -q Tested: python -m pytest orchestrator/tests/test_application_service.py orchestrator/tests/test_trading_graph_config.py -q Not-tested: real provider-backed MiniMax execution Not-tested: full dashboard websocket/manual UI flow |
||
|---|---|---|
| .. | ||
| backend | ||
| frontend | ||