============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3 cachedir: .pytest_cache rootdir: /home/jay/workspace configfile: pyproject.toml plugins: anyio-4.12.1, asyncio-1.3.0, cov-7.0.0, respx-0.22.0, Faker-40.8.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collecting ... collected 2395 items ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_complete_returns_first_response PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_complete_cycles_responses PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_complete_default_response_when_none PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_call_count_increments PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_last_prompt_stored PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_last_model_stored PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_reset_clears_state PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_set_responses_replaces PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_complete_async_returns_coroutine PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_complete_async_returns_response PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeLLMClient::test_complete_with_kwargs PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_dispatch_returns_ok_status PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_dispatch_returns_team PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_dispatch_returns_task_id PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_dispatch_count_increments PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_last_team_stored PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_last_task_stored PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_dispatched_list_records_all PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_set_failure_raises_exception PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_set_failure_false_restores PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_reset_clears_state PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_dispatch_with_kwargs PASSED [ 0%] ../../../workspace/tests/fakes/test_fakes.py::TestFakeDispatch::test_unique_task_ids PASSED [ 0%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_create_task_docs_generates_three_files PASSED [ 1%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_create_task_docs_replaces_placeholders PASSED [ 1%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_three_docs_verify_returns_warn_for_draft_status PASSED [ 1%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_three_docs_verify_returns_pass_after_status_update PASSED [ 1%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_three_docs_verify_returns_skip_when_no_directory PASSED [ 1%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_three_docs_verify_returns_fail_when_file_missing PASSED [ 1%] ../../../workspace/tests/integration/test_3docs_lifecycle.py::test_three_docs_verify_returns_fail_when_all_files_missing PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_overlap_no_running_tasks_returns_empty PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_overlap_running_task_with_same_file_returns_warning PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_overlap_excludes_current_task_id PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_overlap_no_timers_file_returns_empty PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_overlap_multiple_running_tasks PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_send_overlap_warning_empty_list_does_not_call_urlopen PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_send_overlap_warning_no_bot_token_skips PASSED [ 1%] ../../../workspace/tests/integration/test_affected_files_overlap.py::test_send_overlap_warning_with_token_calls_urlopen PASSED [ 1%] ../../../workspace/tests/integration/test_batch_completion.py::test_batch_completion_no_matching_batch_id PASSED [ 1%] ../../../workspace/tests/integration/test_batch_completion.py::test_batch_completion_all_done PASSED [ 1%] ../../../workspace/tests/integration/test_batch_completion.py::test_batch_completion_some_running PASSED [ 1%] ../../../workspace/tests/integration/test_batch_completion.py::test_batch_completion_no_timers_file PASSED [ 1%] ../../../workspace/tests/integration/test_batch_completion.py::test_batch_completion_mixed_statuses PASSED [ 1%] ../../../workspace/tests/integration/test_batch_completion.py::test_batch_completion_single_task_running PASSED [ 1%] ../../../workspace/tests/integration/test_codex_gate.py::test_extract_json_from_output_code_block PASSED [ 1%] ../../../workspace/tests/integration/test_codex_gate.py::test_extract_json_from_output_direct_json PASSED [ 1%] ../../../workspace/tests/integration/test_codex_gate.py::test_extract_json_from_output_invalid_returns_none PASSED [ 1%] ../../../workspace/tests/integration/test_codex_gate.py::test_extract_json_from_output_broken_json_in_block PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_extract_json_from_output_code_block_takes_priority PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_maat_fallback_check_task_file_missing PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_maat_fallback_check_task_file_exists_pass PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_maat_fallback_check_affected_file_missing PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_maat_fallback_check_empty_task_file PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_codex_gate_check_success PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_codex_gate_check_with_critical_risk PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_codex_gate_check_nonzero_returncode_falls_back_to_maat PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_codex_gate_check_timeout_falls_back_to_maat PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_codex_gate_check_file_not_found_falls_back_to_maat PASSED [ 2%] ../../../workspace/tests/integration/test_codex_gate.py::test_codex_gate_check_invalid_json_response_falls_back_to_maat PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_load_report_returns_content_when_exists PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_load_report_returns_none_when_missing PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_load_report_utf8_korean PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_parse_verification_table_extracts_entries PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_parse_verification_table_no_table_returns_empty PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_parse_verification_table_skips_header_and_separator PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_parse_verification_table_no_keyword_when_no_grep PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_check_file_existence_pass_when_all_exist PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_check_file_existence_fail_when_file_missing PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_check_file_existence_mixed PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_resolve_file_path_strips_line_number PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_resolve_file_path_relative_to_absolute PASSED [ 2%] ../../../workspace/tests/integration/test_g3_verifier.py::test_resolve_file_path_absolute_unchanged PASSED [ 3%] ../../../workspace/tests/integration/test_g3_verifier.py::test_resolve_file_path_colon_only_at_end_with_digits PASSED [ 3%] ../../../workspace/tests/integration/test_g3_verifier.py::test_main_exits_0_when_no_report PASSED [ 3%] ../../../workspace/tests/integration/test_g3_verifier.py::test_main_exits_1_when_report_no_table_low_quality PASSED [ 3%] ../../../workspace/tests/integration/test_g3_verifier.py::test_main_exits_0_when_report_no_table_good_quality PASSED [ 3%] ../../../workspace/tests/integration/test_g3_verifier.py::test_main_exits_0_when_all_files_exist PASSED [ 3%] ../../../workspace/tests/integration/test_g3_verifier.py::test_main_exits_1_when_file_missing PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_gate_instructions_returns_correct_dict_for_each_level PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_gate_instructions_fallback_for_unknown_level PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_gate_instructions_level0_and_1_have_empty_g1 PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_gate_instructions_level3_and_4_have_nonempty_g1 PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_format_for_prompt_level0_no_g1_section PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_format_for_prompt_level1_no_g1_section PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_format_for_prompt_level3_contains_sanitize PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_format_for_prompt_level4_contains_sanitize PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_format_for_prompt_level2_has_all_gates PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_should_run_codex_check_below_3_returns_false PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_should_run_codex_check_3_and_above_returns_true PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_should_run_codex_check_boundary PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_codex_gate_command_basic_structure PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_codex_gate_command_with_affected_files PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_codex_gate_command_without_affected_files PASSED [ 3%] ../../../workspace/tests/integration/test_gate_instructions.py::test_get_codex_gate_command_uses_workspace_root PASSED [ 3%] ../../../workspace/tests/integration/test_gemini_review.py::test_build_review_prompt_review_mode PASSED [ 3%] ../../../workspace/tests/integration/test_gemini_review.py::test_build_review_prompt_challenge_mode PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_build_review_prompt_consult_mode_includes_question PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_build_review_prompt_no_report_shows_placeholder PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_load_report_returns_content_when_exists PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_load_report_returns_none_when_missing PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_load_report_with_utf8_content PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_record_decision_creates_jsonl_file PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_record_decision_jsonl_content_structure PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_record_decision_appends_multiple_entries PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_check_rate_limit_below_limit_returns_empty PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_check_rate_limit_exceeds_returns_warning PASSED [ 4%] ../../../workspace/tests/integration/test_gemini_review.py::test_check_rate_limit_new_day_resets_count PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_batch_watchdog_scan_done_files PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_batch_watchdog_check_batch_completion_all_done PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_batch_watchdog_check_batch_completion_partial PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_batch_watchdog_check_ttl_expired PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_batch_watchdog_run_returns_completed_batches PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_preflight_find_merge_branches PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_preflight_simulate_merge_no_conflict PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_preflight_simulate_merge_with_conflict PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_integration_test_runner_pass PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_integration_test_runner_fail PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_integration_test_runner_generate_report PASSED [ 4%] ../../../workspace/tests/integration/test_graduated_auto_gate.py::test_graduated_auto_gate_full_pipeline PASSED [ 4%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int01_phase1_flags_activated PASSED [ 5%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int02_pd_enabled_summary PASSED [ 5%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int03_rw_read_no_worktree PASSED [ 5%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int04_rw_write_default PASSED [ 5%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int05_hooks_circuit_breaker PASSED [ 5%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int06_circuit_breaker_reset PASSED [ 5%] ../../../workspace/tests/integration/test_phase1_integration.py::test_int07_full_integration PASSED [ 5%] ../../../workspace/tests/integration/test_phase4_integration.py::TestE2ERetryFlow::test_e2e_retry_flow_full_cycle PASSED [ 5%] ../../../workspace/tests/integration/test_phase4_integration.py::TestE2ERetryFlow::test_e2e_retry_then_success PASSED [ 5%] ../../../workspace/tests/integration/test_phase4_integration.py::TestScriptsExistSmoke::test_scripts_exist_smoke PASSED [ 5%] ../../../workspace/tests/integration/test_phase4_integration.py::TestChainManagerNoRegression::test_chain_manager_no_regression PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_masks_rrn PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_masks_phone PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_masks_email PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_masks_apikey_sk PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_masks_account PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_masks_policy PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_mixed_pii_all_masked PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_no_pii_returns_empty_detections PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_text_detection_record_structure PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_file_content_masks_rrn_in_file PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_file_content_handles_multiple_pii PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_file_content_raises_on_missing_file PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_should_sanitize_below_3_returns_false PASSED [ 5%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_should_sanitize_3_and_above_returns_true PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_should_sanitize_boundary_value PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_generate_sanitize_report_empty_detections PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_generate_sanitize_report_with_detections_contains_table PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_generate_sanitize_report_original_partially_hidden PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_generate_sanitize_report_multiple_detections_count PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_patterns_contains_all_required_keys PASSED [ 6%] ../../../workspace/tests/integration/test_sanitize_gate.py::test_sanitize_patterns_each_has_pattern_replacement_description PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestCheckTeamScope::test_pass_own_team_files PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestCheckTeamScope::test_pass_shared_files PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestCheckTeamScope::test_warn_other_team_files PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestCheckTeamScope::test_pass_mixed_own_and_shared PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestCheckTeamScope::test_warn_with_line_number_suffix PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestScopeCheckAuditTrailAbsence::test_warn_when_audit_trail_not_found PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestScopeCheckAuditTrailAbsence::test_warn_message_contains_path PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestScopeCheckAuditTrailAbsence::test_skip_when_no_expected_files PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestG3TeamScopeIntegration::test_pass_own_team_verified_files PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestG3TeamScopeIntegration::test_warn_other_team_files_still_passes PASSED [ 6%] ../../../workspace/tests/test_1921b_team_scope.py::TestG3TeamScopeIntegration::test_no_team_id_skips_scope_check PASSED [ 6%] ../../../workspace/tests/test_3docs_e2e.py::TestDispatchCreateTaskDocs::test_critical_level_creates_directory_and_three_files PASSED [ 6%] ../../../workspace/tests/test_3docs_e2e.py::TestDispatchCreateTaskDocs::test_yaml_frontmatter_has_required_fields PASSED [ 6%] ../../../workspace/tests/test_3docs_e2e.py::TestDispatchCreateTaskDocs::test_normal_level_does_not_call_create_task_docs PASSED [ 6%] ../../../workspace/tests/test_3docs_e2e.py::TestTeamPromptsThreeDocsSection::test_critical_level_contains_three_docs_guide_header PASSED [ 6%] ../../../workspace/tests/test_3docs_e2e.py::TestTeamPromptsThreeDocsSection::test_critical_level_contains_update_before_report PASSED [ 6%] ../../../workspace/tests/test_3docs_e2e.py::TestTeamPromptsThreeDocsSection::test_normal_level_returns_empty_string PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestQcVerifierThreeDocs::test_pass_scenario PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestQcVerifierThreeDocs::test_warn_scenario_draft_status PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestQcVerifierThreeDocs::test_warn_scenario_placeholder_exists PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestQcVerifierThreeDocs::test_skip_scenario_no_directory PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestQcVerifierThreeDocs::test_fail_scenario_missing_file PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestDirectWorkflowThreeDocsSteps::test_step_1_2_three_docs_check_exists PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestDirectWorkflowThreeDocsSteps::test_step_5_2_three_docs_update_exists PASSED [ 7%] ../../../workspace/tests/test_3docs_e2e.py::TestDirectWorkflowThreeDocsSteps::test_step_5_3_three_docs_verify_forced_exists PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_load_results PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_compute_fnr PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_verdict_adopt PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_verdict_reject PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_verdict_extend PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_stratification_check PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_ab_results_jsonl_schema PASSED [ 7%] ../../../workspace/tests/test_ab_analysis.py::test_fishers_exact_mock PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_yaml_loads_without_error PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_real_registry_loads_if_exists PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_has_version_field PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_has_sources_dict PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_sources_not_empty PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_each_source_has_items_list PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_items_have_required_fields PASSED [ 7%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_status_values_are_valid PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_health_check_has_type PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_id_values_are_unique PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestYamlParsing::test_source_section_matches_source_key PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileExists::test_existing_file_passes PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileExists::test_nonexistent_file_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileExists::test_tilde_path_expansion PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileExists::test_tilde_path_nonexistent PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileExists::test_existing_directory_passes PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileRecentActivity::test_recently_modified_file_passes PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileRecentActivity::test_old_file_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileRecentActivity::test_nonexistent_file_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileRecentActivity::test_custom_max_age_hours PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckFileRecentActivity::test_edge_age_at_boundary PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckGrepPattern::test_matching_pattern_in_file_passes PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckGrepPattern::test_nonmatching_pattern_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckGrepPattern::test_pattern_in_directory_passes PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckGrepPattern::test_pattern_not_in_directory_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckGrepPattern::test_regex_pattern_works PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckGrepPattern::test_nonexistent_file_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckAuditTrailRecent::test_recent_entry_passes PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckAuditTrailRecent::test_old_entries_fail PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckAuditTrailRecent::test_empty_file_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckAuditTrailRecent::test_nonexistent_file_fails PASSED [ 8%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckAuditTrailRecent::test_mixed_entries_passes_if_recent_exists PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckAuditTrailRecent::test_custom_max_age_hours PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckProcessRunning::test_running_process_passes PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckProcessRunning::test_nonrunning_process_fails PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestHealthCheckProcessRunning::test_process_name_substring_match PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_output_has_required_top_keys PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_timestamp_is_valid_iso PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_summary_has_total_field PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_summary_has_all_status_fields PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_summary_status_counts_sum_to_total PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_summary_total_matches_items_list PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_by_source_grouping_is_correct PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_by_source_each_entry_is_count_dict PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_by_source_totals_sum_to_summary_total PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_each_item_has_health_check_result PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_health_check_result_values_are_valid PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_items_have_required_fields PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_duplicate_detection PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_active_fail_becomes_degraded PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestOutputFormat::test_output_is_json_serializable PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_source_filter_returns_only_matching PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_source_filter_excludes_other_sources PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_source_filter_correct_count PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_source_filter_nonexistent_returns_empty PASSED [ 9%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_by_source_build_from_filtered PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_status_filter_returns_only_matching PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_status_filter_correct_count PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_status_filter_recommended PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_status_filter_nonexistent_returns_empty PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_summary_output_excludes_items_list PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestCliFilters::test_summary_has_totals PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_script_runs_successfully PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_output_is_valid_json PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_output_has_required_keys PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_all_items_have_health_check_result PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_health_check_result_values_valid PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_summary_total_matches_items_count PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_summary_status_counts_sum_to_total PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_source_filter_cli PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_status_filter_cli PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_summary_flag_excludes_items PASSED [ 10%] ../../../workspace/tests/test_absorption_health_check.py::TestIntegration::test_real_registry_output_structure PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestLoadConfig::test_load_config_from_file PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestLoadConfig::test_load_config_missing_file PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestLoadConfig::test_load_config_has_teams_key PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestLoadConfig::test_load_config_returns_dict PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestLoadConfig::test_load_config_team_data_correct PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestLoadConfig::test_load_config_default_has_empty_teams PASSED [ 10%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_creates_file PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_updates_metadata PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_sets_updated_timestamp PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_persists_teams PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_creates_parent_dir PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_empty_teams_metadata PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestSaveConfig::test_save_config_valid_json PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_korean_to_english_conversion PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_spaces_to_hyphens PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_lowercase PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_special_chars_removed PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_dev_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_team_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_center_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_marketing_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_insurance_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_design_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_red_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_strategy_mapping PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_hyphen_preserved PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_returns_string PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestGenerateTeamId::test_numeric_suffix_preserved PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_creates_directory PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_creates_readme PASSED [ 11%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_readme_contains_team_name PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_creates_subdirs PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_creates_gitkeep_in_src PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_creates_gitkeep_in_tests PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_readme_not_overwritten PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_returns_path PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_returns_correct_path PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestCreateTeamDirectory::test_idempotent_call PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_add_new_team PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_duplicate_team_exits PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_duplicate_team_id_detected PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_team_info_structure PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_team_info_contains_required_fields PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_default_status_planned PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_members_default_empty PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_lead_stored_correctly PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_members_stored_correctly PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_active_status_stored PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_team_type_stored PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_created_at_format PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_directory_created PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestAddTeam::test_config_saved_to_file PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_with_data PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_empty PASSED [ 12%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_shows_team_name PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_shows_lead PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_shows_member_count PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_shows_total PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_shows_type PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_shows_separator PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_multiple_teams PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestListTeams::test_list_teams_returns_none PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_list_flag PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_list_flag_short PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_add_team_via_cli PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_add_team_cli_output PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_missing_required_name_exits PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_missing_required_type_exits PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_no_args_exits PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_cli_with_lead_and_status PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_cli_with_members PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_cli_invalid_type_exits PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_cli_invalid_status_exits PASSED [ 13%] ../../../workspace/tests/test_add_team.py::TestCLIMain::test_cli_list_empty_config PASSED [ 13%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_overlap_detected PASSED [ 13%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_no_overlap PASSED [ 13%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_empty_affected_files PASSED [ 13%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_self_excluded PASSED [ 13%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_non_running_tasks_excluded PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_timer_file_not_exists PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_multiple_overlapping_tasks PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestCheckAffectedFilesOverlap::test_corrupted_timer_file PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestSendOverlapTelegramWarning::test_sends_telegram_when_warnings_and_token PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestSendOverlapTelegramWarning::test_skips_when_no_token PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestSendOverlapTelegramWarning::test_skips_when_empty_warnings PASSED [ 14%] ../../../workspace/tests/test_affected_files_overlap.py::TestSendOverlapTelegramWarning::test_no_exception_on_urlopen_failure PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestConcurrentDispatchPatch::test_concurrent_dispatch_patch PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestConcurrentDispatchPatch::test_concurrent_dispatch_patch_without_atomic_fails PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestConcurrentDispatchAndTimerEnd::test_concurrent_dispatch_and_timer_end PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestDispatchRegressionBasic::test_dispatch_regression_basic PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestDispatchRegressionBasic::test_patch_nonexistent_task_id_is_noop PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestDispatchRegressionBasic::test_patch_preserves_other_tasks PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestAtomicWriteFsync::test_atomic_write_fsync PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestAtomicWriteFsync::test_atomic_write_no_temp_file_left PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestAtomicWriteFsync::test_atomic_write_overwrites_correctly PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestAtomicWriteFsync::test_atomic_write_uses_replace_not_in_place PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestFlockPreventsRace::test_flock_prevents_race PASSED [ 14%] ../../../workspace/tests/test_atomic_timer_write.py::TestFlockPreventsRace::test_flock_serializes_write_order PASSED [ 14%] ../../../workspace/tests/test_auto_merge.py::test_scan_done_files PASSED [ 14%] ../../../workspace/tests/test_auto_merge.py::test_try_claim_success PASSED [ 14%] ../../../workspace/tests/test_auto_merge.py::test_try_claim_already_claimed PASSED [ 14%] ../../../workspace/tests/test_auto_merge.py::test_parse_done_valid PASSED [ 14%] ../../../workspace/tests/test_auto_merge.py::test_parse_done_invalid PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_parse_done_legacy_format PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_analyze_report PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_resolve_project_path_from_report PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_resolve_project_path_from_worktree PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_resolve_project_path_none PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_execute_merge_success PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_execute_merge_conflict PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_run_tests_pytest PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_run_tests_timeout PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_revert_merge PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_log_result PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_log_result_creates_file PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_dry_run PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_run_full_flow PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_run_full_flow_test_failure PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_load_env_keys PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_team_id_to_short_with_suffix PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_team_id_to_short_already_short PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_team_id_to_short_edge_cases PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_extract_team_short_from_branch PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_extract_team_short_from_worktree PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_extract_team_short_none PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_merge_needed_false_no_claim PASSED [ 15%] ../../../workspace/tests/test_auto_merge.py::test_notify_anu_called_after_merge PASSED [ 16%] ../../../workspace/tests/test_auto_merge.py::test_team_short_used_in_execute_merge PASSED [ 16%] ../../../workspace/tests/test_auto_merge_ttl.py::test_check_batch_ttl_no_expiry PASSED [ 16%] ../../../workspace/tests/test_auto_merge_ttl.py::test_check_batch_ttl_expired PASSED [ 16%] ../../../workspace/tests/test_auto_merge_ttl.py::test_check_batch_ttl_custom_hours PASSED [ 16%] ../../../workspace/tests/test_auto_merge_ttl.py::test_cleanup_expired_batches PASSED [ 16%] ../../../workspace/tests/test_auto_merge_ttl.py::test_cleanup_expired_batches_no_expired PASSED [ 16%] ../../../workspace/tests/test_banner_versions.py::TestBannerVersionsAPI::test_get_banner_versions_success PASSED [ 16%] ../../../workspace/tests/test_banner_versions.py::TestBannerVersionsAPI::test_post_select_v1456_success PASSED [ 16%] ../../../workspace/tests/test_banner_versions.py::TestBannerVersionsAPI::test_post_select_v1460_success PASSED [ 16%] ../../../workspace/tests/test_banner_versions.py::TestBannerVersionsAPI::test_post_then_get_selection_persisted PASSED [ 16%] ../../../workspace/tests/test_banner_versions.py::TestBannerVersionsAPI::test_post_select_invalid_version PASSED [ 16%] ../../../workspace/tests/test_banner_versions.py::TestBannerVersionsAPI::test_post_select_invalid_cell_id PASSED [ 16%] ../../../workspace/tests/test_blog_writer_codex_companion.py::test_codex_provider_uses_companion PASSED [ 16%] ../../../workspace/tests/test_blog_writer_codex_companion.py::test_gpt_provider_uses_companion PASSED [ 16%] ../../../workspace/tests/test_blog_writer_codex_companion.py::test_no_codex_exec_pattern PASSED [ 16%] ../../../workspace/tests/test_blog_writer_codex_companion.py::test_companion_error_handling PASSED [ 16%] ../../../workspace/tests/test_bot_settings_sync.py::TestSyncUpdateConstantsJson::test_sync_updates_constants_json PASSED [ 16%] ../../../workspace/tests/test_bot_settings_sync.py::TestSyncPreservesExistingBots::test_sync_preserves_existing_bots PASSED [ 16%] ../../../workspace/tests/test_bot_settings_sync.py::TestSyncSkipsWithoutBotSettings::test_sync_skips_without_bot_settings PASSED [ 16%] ../../../workspace/tests/test_bot_settings_sync.py::TestReloadMethod::test_reload_method PASSED [ 16%] ../../../workspace/tests/test_bot_settings_sync.py::TestSyncCheckOk::test_sync_check_ok PASSED [ 16%] ../../../workspace/tests/test_bot_settings_sync.py::TestSyncCheckDetectsMismatch::test_sync_check_detects_mismatch PASSED [ 16%] ../../../workspace/tests/test_bot_watchdog.py::TestParseSinceTime::test_parse_utc_format PASSED [ 16%] ../../../workspace/tests/test_bot_watchdog.py::TestParseSinceTime::test_parse_kst_format PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestParseSinceTime::test_parse_invalid_format PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestFindBotProcess::test_find_process_pattern_mapping PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestFindBotProcess::test_find_process_returns_pids PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestFindBotProcess::test_find_process_no_process PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestFindBotProcess::test_find_process_unknown_bot PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestShouldTransitionToIdle::test_not_timeout_yet PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestShouldTransitionToIdle::test_process_still_running PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestShouldTransitionToIdle::test_done_file_exists PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestShouldTransitionToIdle::test_report_exists PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestShouldTransitionToIdle::test_timeout_no_process PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestCheckAndRecoverStuckBots::test_recover_stuck_bots PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestCheckAndRecoverStuckBots::test_no_stuck_bots PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestCheckAndRecoverStuckBots::test_skip_if_process_running PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestSaveBotActivity::test_atomic_write PASSED [ 17%] ../../../workspace/tests/test_bot_watchdog.py::TestWatchdogOnce::test_run_once PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestCreate::test_create_chain_file PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestCreate::test_create_prints_ok_message PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestCreate::test_create_duplicate_exits PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_add_phase_normal PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_tasks_normalization PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_tasks_level_preserved PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_invalid_json_exits PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_missing_team_field_exits PASSED [ 17%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_missing_desc_field_exits PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestAddPhase::test_chain_not_found_exits PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_task_done_marks_completed PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_not_all_complete_waits PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_all_tasks_done_transitions_phase PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_last_phase_done_completes_chain PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_paused_chain_ignores_task_done PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_task_not_found_exits PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_chain_not_found_exits PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestTaskDone::test_dispatch_error_pauses_chain PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestStatus::test_status_output PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestStatus::test_status_nonexistent_exits PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestList::test_list_empty PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestList::test_list_multiple_chains PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestList::test_list_shows_correct_fields PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestUpdateChainTask::test_update_chain_task_sets_task_id PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestUpdateChainTask::test_update_chain_task_chain_not_found PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestUpdateChainTask::test_update_chain_task_does_not_overwrite_existing_task_id PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestUpdateChainTask::test_update_chain_task_correct_team_match PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestDispatchPhaseTaskFile::test_dispatch_phase_writes_task_file PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestDispatchPhaseTaskFile::test_dispatch_phase_uses_task_file_flag PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestDispatchPhaseTaskFile::test_dispatch_phase_special_chars PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestCronNotifyGracefulSkip::test_cron_notify_skips_when_no_anu_key PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestCronNotifyGracefulSkip::test_cron_notify_works_when_anu_key_set PASSED [ 18%] ../../../workspace/tests/test_chain.py::TestShellInjectionDefense::test_dispatch_phase_rejects_injection_in_chain_id PASSED [ 19%] ../../../workspace/tests/test_chain.py::TestShellInjectionDefense::test_dispatch_phase_rejects_injection_in_team PASSED [ 19%] ../../../workspace/tests/test_chain.py::TestShellInjectionDefense::test_dispatch_phase_accepts_valid_ids PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestCreate::test_create_normal PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestCreate::test_create_registers_watchdog_cron PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestCreate::test_create_max_tasks_exceeded PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestCreate::test_create_duplicate_chain_id PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestCreate::test_create_invalid_tasks_json PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_returns_dispatch PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_qc_fail_triggers_retry PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_qc_fail_out_of_scope_does_not_stall PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_gate_none_skips_qc PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_chain_complete PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_removes_watchdog_cron_on_complete PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_no_chain PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_duplicate_task_file_blocked PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_marks_completed_at PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_idempotency_already_done PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_idempotency_next_already_running PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestNext::test_next_creates_missing_task_file_from_original PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestUpdate::test_update_to_running PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestUpdate::test_update_to_done PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestUpdate::test_update_to_failed PASSED [ 19%] ../../../workspace/tests/test_chain_manager.py::TestUpdate::test_update_to_stalled PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestUpdate::test_update_task_not_found_exits PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheckStalled::test_check_stalled_detects_stalled PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheckStalled::test_check_stalled_no_stalled PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheckStalled::test_check_stalled_empty_result PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheckStalled::test_check_stalled_skips_completed_chains PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestList::test_list_empty PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestList::test_list_multiple_chains PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestList::test_list_shows_required_fields PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestList::test_list_task_count_correct PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestLock::test_lock_file_created_and_removed PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestLock::test_sequential_updates_consistency PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestBackup::test_backup_created_on_update PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestBackup::test_backup_contains_original_data PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestBackup::test_backup_created_on_next PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_check_in_chain_not_last PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_check_in_chain_is_last PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_check_not_in_chain PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_check_next_task_id_none_when_pending PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_create_preserves_task_id PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_check_finds_chain_by_task_id PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_next_includes_task_id_in_output PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_next_task_id_none_when_pending_has_no_id PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestCheck::test_next_advances_by_task_id PASSED [ 20%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_first_qc_fail_retries PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_second_qc_fail_retries PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_circuit_breaker_on_max_retry PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_escalation_file_content PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_max_retry_constant_is_2 PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_qc_pass_no_retry_needed PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_retry_resets_task_status PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestF12RetryPhase::test_f12_gate_none_bypasses_retry PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestCircuitBreakerIntegration::test_trigger_uses_circuit_breaker_module PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestCircuitBreakerIntegration::test_trigger_fallback_when_cb_unavailable PASSED [ 21%] ../../../workspace/tests/test_chain_manager.py::TestCircuitBreakerIntegration::test_write_escalation_file_extra_fields PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_load_task_timers PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_load_task_timers_missing_file PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_collect_daily_completed PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_collect_daily_completed_no_match PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_collect_ai_cost PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_collect_ai_cost_no_token_usage PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_collect_all_structure PASSED [ 21%] ../../../workspace/tests/test_collect_metrics.py::test_save_metrics PASSED [ 21%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_allowed_teams_is_frozenset PASSED [ 21%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_allowed_teams_contains_expected PASSED [ 21%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_max_composite_teams_is_3 PASSED [ 21%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_handoff_fields_keys_are_frozensets PASSED [ 21%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_handoff_fields_values_are_lists PASSED [ 21%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_default_handoff_fields_is_list PASSED [ 22%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_handoff_marketing_design_exists PASSED [ 22%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_allowed_teams_no_dev_teams PASSED [ 22%] ../../../workspace/tests/test_composite_constants.py::TestCompositeConstants::test_team_bot_not_contaminated PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestLoadLogicalTeamAgents::test_loads_existing_json PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestLoadLogicalTeamAgents::test_caches_result PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestLoadLogicalTeamAgents::test_fallback_to_team_info PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_defense_in_depth_invalid_team PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_defense_in_depth_single_team PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_two_teams_prompt_generation PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_critical_level_header PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_security_level_header PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_handoff_fields_dynamic PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_default_handoff_fields_for_three_teams PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_prompt_contains_all_sections PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestBuildCompositePrompt::test_task_file_created PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestAssembleCompositePrompt::test_agents_with_dict_members PASSED [ 22%] ../../../workspace/tests/test_composite_prompt.py::TestAssembleCompositePrompt::test_agents_with_string_members PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestTodoTabSwitching::test_desktop_tab_switching PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestTodoTabSwitching::test_mobile_tab_switching PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestTodoTabSwitching::test_api_status_all PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestTodoTabSwitching::test_api_status_done PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestTodoTabSwitching::test_api_status_default PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestTodoTabSwitching::test_api_status_counts_consistent PASSED [ 22%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestButtonStyles::test_button_cursor_pointer PASSED [ 23%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestButtonStyles::test_button_min_height PASSED [ 23%] ../../../workspace/tests/test_dashboard_todo_tabs.py::TestServiceWorkerCache::test_cache_version_updated PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestTeamBotMapping::test_dev1_team_maps_to_dev1 PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestTeamBotMapping::test_dev2_team_maps_to_dev2 PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestTeamBotMapping::test_dev3_team_maps_to_dev3 PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestTeamBotMapping::test_team_bot_contains_all_dev_teams PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskId::test_first_id_is_task_1 PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskId::test_second_id_increments PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskId::test_ids_are_unique PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskId::test_id_written_to_timer_file PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskId::test_reserved_status_in_timer_file PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskId::test_existing_timer_file_increments_correctly PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_dev1_team_contains_leader_name PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_dev1_team_contains_members PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_dev2_team_contains_leader_name PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_dev2_team_contains_members PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_dev3_team_contains_leader_name PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_dev3_team_contains_team_id_in_prompt PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestBuildPrompt::test_prompt_contains_task_id PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGetDispatchTime::test_returns_string PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGetDispatchTime::test_returns_parseable_datetime PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGetDispatchTime::test_returns_future_time PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestGetDispatchTime::test_default_delay PASSED [ 23%] ../../../workspace/tests/test_dispatch.py::TestOrganizationConstants::test_team_info_has_all_teams PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestOrganizationConstants::test_each_team_info_has_required_keys PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestOrganizationConstants::test_cross_functional_has_expected_roles PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestOrganizationConstants::test_cross_functional_each_has_name_and_role PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestInvalidTeamId::test_invalid_team_causes_sys_exit PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestInvalidTeamId::test_team_info_does_not_contain_invalid_key PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestInvalidTeamId::test_empty_team_id_causes_sys_exit PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskIdErrorHandling::test_corrupted_json_raises_runtime_error PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskIdErrorHandling::test_unparseable_task_id_skipped PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskIdErrorHandling::test_timer_file_reread_failure PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskIdErrorHandling::test_timer_data_without_tasks_key PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestGenerateTaskIdErrorHandling::test_write_failure_still_returns_id PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_success PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_failure PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_nonexistent_project PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_no_bot_key PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_bot_key_none_exits PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_json_decode_error_in_stdout PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_creates_task_file PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_existing_project PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_returns_lead_name PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestDispatchFunction::test_dispatch_level_propagated PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestMainCLI::test_main_dispatches_and_prints_json PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestMainCLI::test_main_with_level_critical PASSED [ 24%] ../../../workspace/tests/test_dispatch.py::TestMainCLI::test_main_with_session_and_project PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMainCLI::test_main_dev3_team PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMainCLI::test_main_marketing_team PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMainCLI::test_main_consulting_team PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestSubprocessTimeout::test_dispatch_cokacdir_timeout PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestSubprocessTimeout::test_dispatch_cokacdir_timeout_calls_cleanup PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestSubprocessTimeout::test_notify_completion_send_failure_no_exit PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestSubprocessTimeout::test_dispatch_timer_cmd_has_timeout_30 PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestSubprocessTimeout::test_dispatch_cokacdir_cmd_has_timeout_60 PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_all_bots_free_returns_bot_b PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_dev1_running_returns_bot_c PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_dev1_dev2_running_returns_bot_d PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_all_bots_busy_raises_error PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_completed_tasks_dont_block PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_marketing_on_bot_b_blocks_bot_b PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_no_timer_file_returns_bot_b PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestFindAvailableBot::test_corrupted_json_returns_bot_b PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestPatchTimerMetadata::test_patches_existing_task PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestPatchTimerMetadata::test_nonexistent_task_no_error PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestPatchTimerMetadata::test_no_timer_file_no_error PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestPatchTimerMetadata::test_preserves_existing_fields PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMarketingConsultingDispatch::test_marketing_dispatch_success PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMarketingConsultingDispatch::test_consulting_dispatch_success PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMarketingConsultingDispatch::test_marketing_all_bots_busy_returns_error PASSED [ 25%] ../../../workspace/tests/test_dispatch.py::TestMarketingConsultingDispatch::test_marketing_bot_key_none_returns_error PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestMarketingConsultingDispatch::test_marketing_metadata_recorded PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestTaskIdReplacement::test_task_desc_first_line_task_id_replaced PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestTaskIdReplacement::test_task_desc_without_task_id_unchanged PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestTaskIdReplacement::test_task_desc_with_explicit_task_id_flag PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchFailureCleanup::test_cleanup_on_project_dir_not_exists PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchFailureCleanup::test_cleanup_on_bot_key_missing PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchPhasedChaining::test_dispatch_with_phases_creates_chain PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchPhasedChaining::test_dispatch_phases_generates_correct_chain_tasks PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchPhasedChaining::test_dispatch_phases_extracts_base_from_task_id PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchPhasedChaining::test_dispatch_chain_failure_does_not_abort_dispatch PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchPhasedChaining::test_dispatch_result_includes_chain_id_when_phases_set PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_running_task_same_team_force_false_returns_error PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_running_task_same_team_error_message_contains_running_task_id PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_running_task_same_team_force_true_allows_dispatch PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_no_running_task_dispatches_normally PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_running_task_different_team_does_not_block PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_block_calls_cleanup_task PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_force_true_only_logs_warning_not_error PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchParallelBlock::test_force_default_is_false PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchForceCLI::test_main_with_force_flag_passes_force_true PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestDispatchForceCLI::test_main_without_force_flag_passes_force_false PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestWarnResearchImplMix::test_mixed_research_impl_emits_warning PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestWarnResearchImplMix::test_impl_only_no_warning PASSED [ 26%] ../../../workspace/tests/test_dispatch.py::TestWarnResearchImplMix::test_research_only_no_warning PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestWarnResearchImplMix::test_mixed_but_research_type_no_warning PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::test_warn_large_task_desc PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::test_warn_large_task_desc_under_3000 PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::test_warn_research_impl_mix_session_msg PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterBasedTaskId::test_counter_file_determines_next_id PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterBasedTaskId::test_counter_increments_after_generation PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterBasedTaskId::test_consecutive_ids_from_counter PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterBasedTaskId::test_corrupted_counter_falls_back_to_timers PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterBasedTaskId::test_missing_counter_falls_back_to_timers PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterBasedTaskId::test_counter_outlier_1000_over_timers_corrected PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestOutlierFiltering::test_large_gap_ids_filtered PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestOutlierFiltering::test_no_outliers_normal_behavior PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestOutlierFiltering::test_counter_takes_precedence_over_outliers PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestOutlierFiltering::test_gap_threshold_is_1000 PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestOutlierFiltering::test_gap_exactly_1000_is_outlier PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterFileEdgeCases::test_counter_file_created_on_first_run PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterFileEdgeCases::test_empty_counter_file_falls_back PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestCounterFileEdgeCases::test_negative_counter_falls_back PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestSyncCounterPhaseAware::test_phase_suffix_ignored PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestSyncCounterPhaseAware::test_parallel_suffix_ignored PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestSyncCounterPhaseAware::test_retry_suffix_ignored PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestTaskIdFormatValidation::test_valid_simple_format PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestTaskIdFormatValidation::test_invalid_format_emits_warning PASSED [ 27%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_empty_timers_returns_empty PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_no_timer_file_returns_empty PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_dev_team_running_maps_to_bot PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_composite_bot_field_mapped PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_completed_tasks_excluded PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_corrupted_json_returns_empty PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfo::test_multiple_running_tasks PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_composite_on_bot_g_blocks_dev6_dispatch PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_composite_on_bot_b_blocks_dev1_dispatch PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_no_composite_allows_dev6_dispatch PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_composite_on_bot_g_force_true_allows_dev6 PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_composite_completed_allows_dev6_dispatch PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_marketing_on_bot_g_blocks_dev6_dispatch PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_conflict_calls_cleanup_task PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestDevTeamBotConflict::test_same_team_running_not_treated_as_bot_conflict PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfoExclude::test_exclude_removes_own_entry PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfoExclude::test_exclude_keeps_other_entries PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfoExclude::test_exclude_none_returns_all PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetBusyBotsInfoExclude::test_exclude_prevents_overwrite_of_composite_entry PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestBotConflictWithTimerEntry::test_composite_conflict_detected_despite_own_timer_entry PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestBotConflictWithTimerEntry::test_dynamic_bot_on_dev_team_bot_blocks PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestBotConflictWithTimerEntry::test_force_bypasses_conflict_with_timer_entry PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetAvailableBotsWithTeams::test_all_bots_available_when_none_busy PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetAvailableBotsWithTeams::test_excludes_busy_bots PASSED [ 28%] ../../../workspace/tests/test_dispatch.py::TestGetAvailableBotsWithTeams::test_all_bots_busy_returns_empty PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestGetAvailableBotsWithTeams::test_returns_correct_default_team_mapping PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestBotConflictAvailableBots::test_conflict_error_includes_available_bots_field PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestBotConflictAvailableBots::test_conflict_error_message_includes_alternatives PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestBotConflictAvailableBots::test_conflict_error_available_bots_excludes_busy PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestBotConflictAvailableBots::test_conflict_all_bots_busy_message PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_image_keyword_without_workflow_exits PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_image_keyword_with_skip_qc_gate_passes PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_image_keyword_with_workflow_passes PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_no_image_keyword_without_workflow_passes PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_english_banner_keyword_blocks PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_english_image_keyword_blocks PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_korean_ad_keyword_blocks PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestImageQcGateBlock::test_korean_design_keyword_blocks PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestLogicalTeamBotConflict::test_design_on_bot_e_blocks_dev4_dispatch PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestLogicalTeamBotConflict::test_content_on_bot_b_blocks_dev1_dispatch PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestLogicalTeamBotConflict::test_design_completed_allows_dev4_dispatch PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestLogicalTeamBotConflict::test_logical_team_without_bot_field_no_false_block PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestLogicalTeamBotConflict::test_multiple_logical_teams_different_bots PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestSelectAndReserveBot::test_selects_first_available_bot PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestSelectAndReserveBot::test_skips_busy_bots PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestSelectAndReserveBot::test_reserves_bot_in_timer_file PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestSelectAndReserveBot::test_raises_when_all_busy PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestValidateModelConsistency::test_consistent_models PASSED [ 29%] ../../../workspace/tests/test_dispatch.py::TestValidateModelConsistency::test_inconsistent_models PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestValidateModelConsistency::test_org_file_missing PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestValidateModelConsistency::test_bot_settings_missing PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestValidateModelConsistency::test_unknown_team_id PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestSyncBotSettings::test_sync_creates_file PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestSyncBotSettings::test_token_masked PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestSyncBotSettings::test_other_fields_preserved PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestSyncBotSettings::test_bot_settings_missing PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestPrdDecomposition::test_parse_prd_regex_basic PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestPrdDecomposition::test_parse_prd_regex_with_sprint PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestPrdDecomposition::test_parse_prd_regex_empty PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestPrdDecomposition::test_handle_prd_nonexistent_file PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestPrdDecomposition::test_handle_prd_creates_files PASSED [ 30%] ../../../workspace/tests/test_dispatch.py::TestPrdDecomposition::test_handle_prd_skips_existing PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestGateInstructions::test_gate_instructions_levels_0_to_4 PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestGateInstructions::test_gate_instructions_unknown_level_fallback PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestGateInstructions::test_format_for_prompt_level_0 PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestGateInstructions::test_format_for_prompt_level_2 PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestGateInstructions::test_format_for_prompt_level_4 PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_basic PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_empty PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_with_spaces PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_multiline PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_section_format PASSED [ 30%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_section_format_with_context PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_section_stops_at_next_heading PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_inline_still_works PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_section_empty_list PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_section_inline_comma PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseAffectedFiles::test_parse_affected_files_section_inline_with_comment PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckAffectedFilesOverlap::test_check_overlap_no_timer_file PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckAffectedFilesOverlap::test_check_overlap_detected PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckAffectedFilesOverlap::test_check_overlap_no_conflict PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckAffectedFilesOverlap::test_check_overlap_self_excluded PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestWarnMissingAffectedFiles::test_warn_missing_af_level2_no_files PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestWarnMissingAffectedFiles::test_warn_missing_af_level1 PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestWarnMissingAffectedFiles::test_warn_missing_af_level2_with_files PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckBatchCompletion::test_batch_completion_all_done PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckBatchCompletion::test_batch_completion_partial PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestCheckBatchCompletion::test_batch_completion_no_match PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestEstimateTaskLevel::test_estimate_level_many_files PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestEstimateTaskLevel::test_estimate_level_server_py PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestEstimateTaskLevel::test_estimate_level_architecture_keyword PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestEstimateTaskLevel::test_estimate_level_simple PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseTaskLevel::test_parse_task_level_lv2 PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestParseTaskLevel::test_parse_task_level_default PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestAstBlastRadius::test_returns_empty_when_no_py_files PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestAstBlastRadius::test_returns_importers_on_success PASSED [ 31%] ../../../workspace/tests/test_dispatch_gate.py::TestAstBlastRadius::test_returns_empty_on_timeout PASSED [ 32%] ../../../workspace/tests/test_dispatch_gate.py::TestAstBlastRadius::test_returns_empty_on_script_error PASSED [ 32%] ../../../workspace/tests/test_dispatch_memory_check.py::TestCheckMemoryBeforeDispatch::test_memory_check_no_memory_file PASSED [ 32%] ../../../workspace/tests/test_dispatch_memory_check.py::TestCheckMemoryBeforeDispatch::test_memory_check_star_items_extracted PASSED [ 32%] ../../../workspace/tests/test_dispatch_memory_check.py::TestCheckMemoryBeforeDispatch::test_memory_check_design_keyword_dev_team_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_memory_check.py::TestCheckMemoryBeforeDispatch::test_memory_check_design_keyword_non_dev_team_no_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_memory_check.py::TestCheckMemoryBeforeDispatch::test_memory_check_no_design_keyword_no_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_memory_check.py::TestCheckMemoryBeforeDispatch::test_memory_check_linked_files_read PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phase_pattern_with_auto_generated_id_logs_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phase_pattern_with_manual_task_id_no_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_no_phase_pattern_no_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phase_pattern_uppercase_integer PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phase_pattern_lowercase_integer PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phase_pattern_decimal_1_1 PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phase_pattern_decimal_2_3 PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phases_plural_not_detected PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_phased_word_not_detected PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_function_does_not_block_returns_none PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_task_id_exactly_equal_to_generated_id_triggers_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_phase_warn.py::TestWarnPhaseWithoutTaskId::test_task_id_differs_from_generated_id_no_warning PASSED [ 32%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesPositive::test_blog_writing PASSED [ 32%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesPositive::test_blog_publishing PASSED [ 32%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesPositive::test_blog_publish_naver_skill PASSED [ 32%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesPositive::test_blog_posting PASSED [ 32%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesPositive::test_blog_writing_2 PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesPositive::test_naver_blog_english PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_api_deprecation PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_code_verification PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_publish_test_execution PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_refactoring PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_migration PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_no_blog_keywords PASSED [ 33%] ../../../workspace/tests/test_dispatch_platform_rules.py::TestInjectPlatformRulesNegative::test_debugging PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestResumeFromNone::test_task_desc_unchanged_when_resume_from_is_none PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestResumeFromExistingFile::test_summary_prepended_to_task_desc PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestResumeFromExistingFile::test_full_injected_task_desc_format PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestResumeFromNonExistentFile::test_returns_error_when_file_not_found PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestResumeFromNonExistentFile::test_error_message_contains_path PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestCliResumeParsing::test_resume_from_parsed_correctly PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestCliResumeParsing::test_resume_from_default_is_none PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestCliResumeParsing::test_resume_from_can_be_used_with_task PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestCliResumeParsing::test_resume_from_can_be_used_with_task_file PASSED [ 33%] ../../../workspace/tests/test_dispatch_resume.py::TestCliResumeParsing::test_dispatch_main_has_resume_from_option PASSED [ 33%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_design_keywords_suggest_design PASSED [ 33%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_marketing_keywords_suggest_marketing PASSED [ 33%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_content_keywords_suggest_content PASSED [ 33%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_publishing_keywords_suggest_publishing PASSED [ 33%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_no_match_returns_none PASSED [ 33%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_anti_keywords_exclude_design PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_highest_score_wins PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestSuggestTeam::test_empty_task_desc_returns_none PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestValidateTeamRouting::test_dev_team_with_design_task_returns_warning PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestValidateTeamRouting::test_dev_team_with_coding_task_returns_none PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestValidateTeamRouting::test_logical_team_returns_none PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestValidateTeamRouting::test_override_routing_bypasses_warning PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestValidateTeamRouting::test_marketing_team_no_self_warning PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestLoadLogicalTeams::test_returns_dict PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestLoadLogicalTeams::test_has_design_team PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestLoadLogicalTeams::test_design_has_keywords PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestLoadLogicalTeams::test_design_has_anti_keywords PASSED [ 34%] ../../../workspace/tests/test_dispatch_routing.py::TestLoadLogicalTeams::test_fallback_when_config_unavailable PASSED [ 34%] ../../../workspace/tests/test_dispatch_task_docs.py::TestCreateTaskDocs::test_create_docs_for_critical_level PASSED [ 34%] ../../../workspace/tests/test_dispatch_task_docs.py::TestCreateTaskDocs::test_yaml_frontmatter_valid PASSED [ 34%] ../../../workspace/tests/test_dispatch_task_docs.py::TestCreateTaskDocs::test_no_docs_for_normal_level PASSED [ 34%] ../../../workspace/tests/test_dispatch_task_docs.py::TestCreateTaskDocs::test_no_overwrite_existing_docs PASSED [ 34%] ../../../workspace/tests/test_dispatch_task_docs.py::TestCreateTaskDocs::test_invalid_task_id_rejected PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptBasic::test_returns_non_empty_string PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptBasic::test_contains_phase_string PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptBasic::test_contains_qc_string PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptCampaignType::test_brand_campaign_type_included_in_result PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptCampaignType::test_default_campaign_type_is_conversion PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptCampaignType::test_conversion_campaign_type_included_in_result PASSED [ 34%] ../../../workspace/tests/test_dispatch_workflow.py::TestDispatchWorkflowArgparse::test_help_output_contains_workflow_option PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestDispatchWorkflowArgparse::test_workflow_choices_include_image_qc_gate PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestDispatchWorkflowPrepend::test_workflow_prompt_prepended_when_workflow_set PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestDispatchWorkflowPrepend::test_workflow_prompt_uses_correct_task_id PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestDispatchNoWorkflow::test_no_workflow_task_desc_unchanged PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestDispatchNoWorkflow::test_no_workflow_means_no_phase_or_qc_injection PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptQCInfo::test_qc_details_not_inlined_in_overview PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptQCInfo::test_qc_loading_reference_present PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptQCInfo::test_contains_escalation_info PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptQCInfo::test_contains_five_phase_structure PASSED [ 35%] ../../../workspace/tests/test_dispatch_workflow.py::TestBuildWorkflowOverviewPromptQCInfo::test_contains_task_id_in_result PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestExtractTeamFromDoneFile::test_extract_from_filename PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestExtractTeamFromDoneFile::test_extract_from_filename_dev2 PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestExtractTeamFromDoneFile::test_extract_without_team_in_filename PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestSetBotIdle::test_set_idle_success PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestSetBotIdle::test_set_idle_already_idle PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestSetBotIdle::test_set_idle_unknown_team PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestScanDoneFiles::test_scan_done_files PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestScanDoneFiles::test_scan_no_done_files PASSED [ 35%] ../../../workspace/tests/test_done_watcher.py::TestProcessDoneFiles::test_process_done_files PASSED [ 35%] ../../../workspace/tests/test_ensure_bot_memory.py::TestScriptExists::test_script_exists PASSED [ 35%] ../../../workspace/tests/test_ensure_bot_memory.py::TestScriptExists::test_script_executable PASSED [ 35%] ../../../workspace/tests/test_ensure_bot_memory.py::TestHookRegistered::test_hook_in_settings PASSED [ 35%] ../../../workspace/tests/test_ensure_bot_memory.py::TestSymlinkCreation::test_symlink_creation_in_new_dir PASSED [ 35%] ../../../workspace/tests/test_ensure_bot_memory.py::TestSkipIfExists::test_skip_if_symlink_exists PASSED [ 36%] ../../../workspace/tests/test_ensure_bot_memory.py::TestExecutionTime::test_execution_time_under_100ms PASSED [ 36%] ../../../workspace/tests/test_ensure_bot_memory.py::TestWorkspaceCleanup::test_report_temp_files PASSED [ 36%] ../../../workspace/tests/test_env_loader.py::TestLoadEnvKeysNormalLoad::test_loads_variables_and_returns_count PASSED [ 36%] ../../../workspace/tests/test_env_loader.py::TestLoadEnvKeysMissingFile::test_missing_file_returns_zero_without_exception PASSED [ 36%] ../../../workspace/tests/test_env_loader.py::TestLoadEnvKeysNoOverwrite::test_existing_env_var_not_overwritten PASSED [ 36%] ../../../workspace/tests/test_env_loader.py::TestLoadEnvKeysQuotedValues::test_double_quoted_value_stripped PASSED [ 36%] ../../../workspace/tests/test_env_loader.py::TestLoadEnvKeysCommentsAndBlankLines::test_comments_and_blank_lines_ignored PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestCheckErrorThreshold::test_above_threshold_returns_true PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestCheckErrorThreshold::test_below_threshold_returns_false PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestCheckErrorThreshold::test_exact_threshold_returns_false PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestCheckErrorThreshold::test_no_file_returns_false PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestCheckErrorThreshold::test_old_errors_excluded PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestGetRecentErrorsInWindow::test_empty_file_returns_empty PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestGetRecentErrorsInWindow::test_returns_recent_only PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestFormatAlertMessage::test_empty_errors_handled PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestFormatAlertMessage::test_format_contains_alert_header PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestFormatAlertMessage::test_format_max_3_items PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestFormatAlertMessage::test_format_shows_count PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestFormatAlertMessage::test_format_shows_more_indicator PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestSendAlert::test_send_exception_returns_false PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestSendAlert::test_send_failure PASSED [ 36%] ../../../workspace/tests/test_error_alert.py::TestSendAlert::test_send_success PASSED [ 36%] ../../../workspace/tests/test_feature_flags.py::TestBasicLoading::test_all_six_flags_are_false PASSED [ 36%] ../../../workspace/tests/test_feature_flags.py::TestBasicLoading::test_get_all_flags_returns_six_entries PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestMtimeCache::test_no_reload_when_mtime_unchanged PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestMtimeCache::test_reload_triggered_when_mtime_changes PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestAtomicWrite::test_set_flag_persists_to_file PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestAtomicWrite::test_set_flag_updates_in_memory PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestAtomicWrite::test_set_flag_updates_updated_at PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestAtomicWrite::test_set_flag_no_tmp_files_left PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestJSONDecodeErrorRecovery::test_invalid_json_keeps_previous_cache PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestUnknownFlag::test_unknown_flag_returns_false PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestUnknownFlag::test_unknown_flag_does_not_raise PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestFileNotFoundHandling::test_missing_file_returns_false_for_any_flag PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestFileNotFoundHandling::test_missing_file_get_all_flags_returns_empty PASSED [ 37%] ../../../workspace/tests/test_feature_flags.py::TestRealWorkspaceFile::test_progressive_disclosure_is_false_in_real_file PASSED [ 37%] ../../../workspace/tests/test_file_touch_ratio_check.py::test_ratio_1_0_pass PASSED [ 37%] ../../../workspace/tests/test_file_touch_ratio_check.py::test_ratio_below_0_5_warn PASSED [ 37%] ../../../workspace/tests/test_file_touch_ratio_check.py::test_ratio_0_fail PASSED [ 37%] ../../../workspace/tests/test_file_touch_ratio_check.py::test_no_modified_files_section_skip PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTable::test_returns_empty_when_no_table PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTable::test_parses_verified_entry PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTable::test_skips_header_row PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTable::test_no_keyword_when_grep_col_empty PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTable::test_multiple_entries PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestResolveFilePath::test_absolute_path_unchanged PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestResolveFilePath::test_relative_path_prefixed_with_workspace_root PASSED [ 37%] ../../../workspace/tests/test_g3_verifier.py::TestResolveFilePath::test_strips_line_number_suffix PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckFileExistence::test_pass_when_all_files_exist PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckFileExistence::test_fail_when_file_missing PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestRunGrepVerification::test_pass_when_keyword_found PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestRunGrepVerification::test_fail_when_keyword_missing PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestRunGrepVerification::test_skips_non_verified_entries PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestRunGrepVerification::test_skips_entry_without_keyword PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierIntegration::test_pass_with_valid_report PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierIntegration::test_fail_missing_keyword PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierIntegration::test_fail_no_report PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierIntegration::test_skip_lv2_no_table PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierIntegration::test_subprocess_no_report PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckPlannedItems::test_fail_when_planned_items_exist PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckPlannedItems::test_pass_when_no_planned_items PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckPlannedItems::test_fail_with_multiple_planned PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckPlannedItems::test_pass_when_empty_entries PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierPlannedIntegration::test_fail_with_planned_in_report PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierPlannedIntegration::test_pass_with_all_verified PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckReportQuality::test_fail_minimal_report PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckReportQuality::test_fail_short_no_scqa PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckReportQuality::test_pass_scqa_with_length PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckReportQuality::test_fail_scqa_only_one PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckReportQuality::test_pass_with_header_style_scqa PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestCheckReportQuality::test_fail_length_under_200 PASSED [ 38%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTableV9::test_only_parses_verification_section PASSED [ 39%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTableV9::test_ignores_non_file_rows PASSED [ 39%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTableV9::test_accepts_absolute_paths PASSED [ 39%] ../../../workspace/tests/test_g3_verifier.py::TestParseVerificationTableV9::test_accepts_various_extensions PASSED [ 39%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierV5Integration::test_fail_one_line_report PASSED [ 39%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierV5Integration::test_pass_scqa_no_table PASSED [ 39%] ../../../workspace/tests/test_g3_verifier.py::TestG3VerifierV9Integration::test_multi_table_report PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_high_markdown_image PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_security_critical_markdown_image PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_critical_markdown_image PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_high_priority_svg_url PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_critical_svg_url PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_uppercase_HIGH PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_uppercase_CRITICAL PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_severity_colon_high PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_severity_colon_critical PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiHighDetection::test_red_circle_emoji PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiMediumDetection::test_medium_markdown_image PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiMediumDetection::test_medium_priority_svg_url PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiMediumDetection::test_uppercase_MEDIUM PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiMediumDetection::test_warning_emoji PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiLowDetection::test_plain_comment PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiLowDetection::test_suggestion_only PASSED [ 39%] ../../../workspace/tests/test_gemini_parser_1970.py::TestGeminiLowDetection::test_empty_body PASSED [ 40%] ../../../workspace/tests/test_gemini_parser_1970.py::TestRealGeminiComments::test_insuro_pr1_security_critical PASSED [ 40%] ../../../workspace/tests/test_gemini_parser_1970.py::TestRealGeminiComments::test_insuro_pr1_high_subprocess PASSED [ 40%] ../../../workspace/tests/test_gemini_parser_1970.py::TestRealGeminiComments::test_insuro_pr1_medium_asyncclient PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGoogleAdsClientInit::test_init_success PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGoogleAdsClientInit::test_init_missing_env PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGoogleAdsClientInit::test_init_missing_single_env_raises_value_error PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGetAccountInfo::test_get_account_info_returns_dict PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGetAccountInfo::test_get_account_info_empty_response_returns_empty_dict PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestListCampaigns::test_list_campaigns PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestListCampaigns::test_list_campaigns_default_limit_in_query PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestListCampaigns::test_list_campaigns_custom_limit_in_query PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestListCampaigns::test_list_campaigns_empty_returns_empty_list PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGetCampaign::test_get_campaign PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGetCampaign::test_get_campaign_not_found_raises_value_error PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestGetCampaign::test_get_campaign_includes_id_in_query PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestCreateCampaign::test_create_campaign PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestCreateCampaign::test_create_campaign_result_contains_expected_keys PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestCreateCampaign::test_create_campaign_default_status_paused PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestCreateCampaign::test_create_campaign_calls_budget_and_campaign_services PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestUpdateCampaign::test_update_campaign PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestUpdateCampaign::test_update_campaign_result_contains_id_and_updated_fields PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestUpdateCampaign::test_delete_campaign PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestUpdateCampaign::test_delete_campaign_calls_mutate_campaigns PASSED [ 40%] ../../../workspace/tests/test_google_ads_client.py::TestListAdGroups::test_list_ad_groups PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestListAdGroups::test_list_ad_groups_with_campaign_id_in_query PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestListAdGroups::test_list_ad_groups_without_campaign_id_no_where_clause PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestCreateAdGroup::test_create_ad_group PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestCreateAdGroup::test_create_ad_group_default_status_paused PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestCreateAdGroup::test_delete_ad_group PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestCreateAdGroup::test_update_ad_group PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestListKeywords::test_list_keywords PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestListKeywords::test_list_keywords_includes_ad_group_id_in_query PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestListKeywords::test_list_keywords_limit_in_query PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestAddKeywords::test_add_keywords PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestAddKeywords::test_add_keywords_calls_mutate_criteria_once PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestAddKeywords::test_add_keywords_result_contains_resource_name PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestUpdateKeywordStatus::test_update_keyword_status PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestUpdateKeywordStatus::test_update_keyword_status_contains_expected_keys PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_default_entity_type_campaign PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_ad_group_type PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_keyword_type PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_invalid_entity_type PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_invalid_entity_type_message PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_default_date_range_last_7_days PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_custom_date_range PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestGetInsights::test_get_insights_returns_records_with_entity_info PASSED [ 41%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad_result_contains_expected_keys PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad_too_few_headlines_raises PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad_too_many_headlines_raises PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad_too_few_descriptions_raises PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad_too_many_descriptions_raises PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestCreateResponsiveSearchAd::test_create_responsive_search_ad_max_headlines_and_descriptions PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestInterfaceConsistency::test_interface_consistency PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestInterfaceConsistency::test_all_common_methods_are_callable PASSED [ 42%] ../../../workspace/tests/test_google_ads_client.py::TestInterfaceConsistency::test_google_ads_specific_methods_exist PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadEnvKeys::test_skips_when_token_already_set PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadEnvKeys::test_loads_token_from_env_file PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadEnvKeys::test_no_token_in_env_file PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadEnvKeys::test_missing_env_file_does_not_raise PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadBotToken::test_loads_from_env_var PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadBotToken::test_loads_from_env_keys_fallback PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadBotToken::test_raises_when_no_token_found PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadBotToken::test_env_var_takes_priority PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_loads_from_org_structure PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_excludes_anu_from_org PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_excludes_planned_status PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_falls_back_to_personas_json PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_falls_back_to_defaults PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_org_loads_expected_count PASSED [ 42%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_default_personas_contain_expected_keys PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonas::test_default_personas_have_new_fields PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_parses_dev_teams PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_parses_security_team PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_parses_centers PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_persona_has_required_fields PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_name_parsing_strips_parenthetical PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_excludes_anu PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_excludes_planned_teams PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestLoadPersonasFromOrg::test_raises_on_missing_org_file PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_with_team_and_role PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_with_role_only PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_unknown_persona_uses_default_emoji PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_missing_persona_key PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_odin_tag PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_loki_tag PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestFormatPersonaTag::test_format_with_real_org_data PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestEmojiMap::test_known_personas_have_emoji PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestEmojiMap::test_hermes_emoji PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestEmojiMap::test_loki_emoji PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestEmojiMap::test_emoji_map_is_dict PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestEmojiMap::test_emoji_map_values_are_strings PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestReadTrigger::test_returns_none_when_file_absent PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestReadTrigger::test_reads_and_deletes_file PASSED [ 43%] ../../../workspace/tests/test_group_chat.py::TestReadTrigger::test_returns_none_on_invalid_json PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestDumpAndLoadSession::test_dump_creates_file PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestDumpAndLoadSession::test_load_session_returns_active_session PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestDumpAndLoadSession::test_load_session_returns_none_when_inactive PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestDumpAndLoadSession::test_load_session_returns_none_when_file_missing PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestDumpAndLoadSession::test_dump_and_load_roundtrip PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_calls_send_correct_number_of_times PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_sets_active_true PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_initializes_speak_counts PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_with_user_message_adds_to_history PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_first_message_content PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_last_message_contains_member_count PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_api_error_uses_fallback_greeting PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionStart::test_start_persona_message_contains_new_format PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionEnd::test_end_sets_active_false PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionEnd::test_end_removes_session_file PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionEnd::test_end_sends_farewell_per_persona_plus_summary PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionEnd::test_end_final_message_contains_topic PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionEnd::test_end_api_failure_uses_fallback_farewell PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestGroupChatSessionEnd::test_end_farewell_message_contains_new_format PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestAddUserInput::test_resets_auto_turns PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestAddUserInput::test_appends_to_history PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestAddUserInput::test_updates_last_activity PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestAddUserInput::test_multiple_inputs_accumulate_in_history PASSED [ 44%] ../../../workspace/tests/test_group_chat.py::TestAddUserInput::test_auto_turns_resets_regardless_of_previous_value PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestSelectNextSpeaker::test_excludes_last_speaker_in_fallback PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestSelectNextSpeaker::test_fallback_picks_least_spoken PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestSelectNextSpeaker::test_uses_api_response_when_valid PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestSelectNextSpeaker::test_falls_back_when_api_returns_invalid_key PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestSelectNextSpeaker::test_fallback_allows_last_speaker_when_only_one_candidate PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestSelectNextSpeaker::test_api_returns_json_with_surrounding_text PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestMaxAutoTurns::test_max_auto_turns_constant_is_six PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestMaxAutoTurns::test_run_loop_does_not_select_speaker_when_at_limit PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestMaxAutoTurns::test_auto_turns_increments_on_speak PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestMaxAutoTurns::test_auto_turns_increments_cumulatively PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestMaxAutoTurns::test_add_user_input_resets_auto_turns_to_zero PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestMaxAutoTurns::test_run_loop_resumes_after_user_input_resets_auto_turns PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_init_sets_attributes PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_returns_messages_on_success PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_filters_by_chat_id PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_returns_empty_on_api_error PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_returns_empty_on_exception PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_updates_last_update_id PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_returns_empty_on_no_results PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_skips_messages_without_text PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestTelegramPoller::test_get_updates_passes_correct_offset PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_start_keyword_team_gather PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_start_keyword_have_meeting PASSED [ 45%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_start_chat_result_has_topic_and_personas PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_normal_message_calls_claude_when_no_session PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_end_keyword_sleep PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_end_keyword_bye PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_normal_question_calls_claude_when_session_active PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_claude_fallback_when_session_active PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_claude_fallback_when_session_inactive PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_claude_returns_invalid_json_fallback_active PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_claude_returns_invalid_json_fallback_inactive PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_start_keywords_not_matched_when_session_active PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestDetectIntent::test_end_keywords_not_matched_when_session_inactive PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestIsActive::test_is_active_returns_false_by_default PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestIsActive::test_is_active_returns_false_when_active_false PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestIsActive::test_is_active_returns_true_after_start PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestIsActive::test_is_active_returns_false_after_end PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestIsActive::test_is_active_reflects_active_attribute PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestRunOneTurn::test_does_nothing_when_inactive PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestRunOneTurn::test_calls_end_on_timeout PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestRunOneTurn::test_does_not_speak_when_max_auto_turns_reached PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestRunOneTurn::test_calls_speak_on_normal_turn PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestRunOneTurn::test_fallback_speaker_on_select_error PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestRunOneTurn::test_ends_session_on_speak_exception PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_does_nothing_when_no_trigger PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_start_calls_session_start PASSED [ 46%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_user_input_with_active_session PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_end_with_active_session PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_user_input_with_inactive_session_is_ignored PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_end_with_inactive_session_is_ignored PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_start_ends_existing_session_first PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestCheckTriggerFile::test_action_start_error_sends_telegram_notification PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_start_keywords_exists PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_start_keywords_is_list PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_start_keywords_contains_expected_items PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_end_keywords_exists PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_end_keywords_is_list PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_end_keywords_contains_expected_items PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_all_persona_ids_exists PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_all_persona_ids_is_list PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_all_persona_ids_has_19_members PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_all_persona_ids_contains_expected_members PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestNewConstants::test_all_persona_ids_no_duplicates PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_limit_personas_10명만 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_limit_personas_5명까지만 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_remove_persona_로키 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_remove_persona_나가 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_add_persona_불러 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_add_persona_합류 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_filter_by_role_백엔드 PASSED [ 47%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_filter_by_team_1팀 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_set_auto_turns_3턴 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_set_auto_turns_계속 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_end_chat_still_works PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentControl::test_normal_user_input PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentStartPersonas::test_전원_집합 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentStartPersonas::test_백엔드만_모여 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentStartPersonas::test_1팀_모여 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentStartPersonas::test_팀장들_모여 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentStartPersonas::test_5명만_모여 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestDetectIntentStartPersonas::test_기본_소집 PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_limit_personas PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_limit_personas_zero_ignored PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_remove_persona PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_remove_persona_last_one PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_add_persona PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_add_persona_duplicate PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_filter_by_role PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_filter_by_team PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_set_auto_turns PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestHandleControl::test_set_auto_turns_unlimited PASSED [ 48%] ../../../workspace/tests/test_group_chat.py::TestSendSystemMessage::test_sends_with_gear_emoji PASSED [ 48%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportExists::test_report_file_exists PASSED [ 48%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportExists::test_report_has_content PASSED [ 48%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportSections::test_has_overview_section PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportSections::test_has_architecture_section PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportSections::test_has_skills_section PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportSections::test_has_philosophy_section PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportSections::test_has_comparison_section PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackReportSections::test_has_conclusion_section PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_boil_the_lake_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_search_before_building_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_ref_system_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_fix_first_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_preamble_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_garry_tan_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestGstackKeyConcepts::test_y_combinator_mentioned PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestDoneFile::test_done_file_exists PASSED [ 49%] ../../../workspace/tests/test_gstack_analysis.py::TestDoneFile::test_done_file_content PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportExists::test_report_file_exists PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportExists::test_report_has_content PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_core_agent_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_memory_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_skills_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_security_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_infrastructure_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_ux_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportStructure::test_has_summary_section PASSED [ 49%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportCompleteness::test_has_all_categories PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportCompleteness::test_has_value_ratings PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportCompleteness::test_has_difficulty_ratings PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportCompleteness::test_has_comparison_tables PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportCompleteness::test_item_count_sufficient PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditReportCompleteness::test_has_implementation_details PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_prompt_injection_detection_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_context_compression_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_frozen_snapshot_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_fts5_search_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_skill_system_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_subagent_delegation_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_security_scanning_mentioned PASSED [ 50%] ../../../workspace/tests/test_hermes_audit.py::TestHermesAuditKeyConcepts::test_summary_table_exists PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_circuit_breaker_warning_threshold PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_circuit_breaker_consecutive_tuple PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_flag_disabled_hook_skipped PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_circuit_breaker_reset PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_circuit_breaker_critical_threshold PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_consecutive_tuple_broken_by_different_event PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_settings_json_exists PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_qc_rules_hooks_section PASSED [ 50%] ../../../workspace/tests/test_hooks_enforcement.py::test_post_tool_use_sh_executable PASSED [ 50%] ../../../workspace/tests/test_image_workflow_v25.py::TestPipelineTokens::test_knowhow_preload_ok_in_tokens PASSED [ 50%] ../../../workspace/tests/test_image_workflow_v25.py::TestPipelineTokens::test_design_qc_ok_in_tokens PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPipelineTokens::test_tokens_order_knowhow_first PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestEscalationRules::test_plan_qc_immediate_pass PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestEscalationRules::test_design_qc_immediate_pass PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhaseMinus1::test_contains_three_knowhow_files PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhaseMinus1::test_contains_knowhow_preload_token PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhaseMinus1::test_contains_repeat_warning PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Assignee::test_contains_loki PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Assignee::test_no_amaterasu PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Assignee::test_third_party_eval_note PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_item7_world_class PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_learning_record PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_immediate_pass_rule PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_learning_record_three_types PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_no_cycle_cap_phase1_5 PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_uniform_threshold_phase1_5 PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase1_5Content::test_no_conditional_approval_phase1_5 PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_all_dq_items PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_dq_content PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_cycle_thresholds PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_immediate_pass PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_no_cycle_cap PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_no_escalation_text PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5DQItems::test_cycle_beyond_3 PASSED [ 51%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5Learning::test_learning_record_design PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5Learning::test_design_qc_ok_token PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase3_5Learning::test_assignee_loki_only PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase5::test_comprehensive_review PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase5::test_cross_insight PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestPhase5::test_three_knowhow_files PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestWorkflowOverview::test_approval_required PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestWorkflowOverview::test_all_phases_listed PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestWorkflowOverview::test_no_3cycle_text PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestRouterNewPhases::test_phase_minus1 PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestRouterNewPhases::test_phase_3_5 PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestRouterNewPhases::test_phase_5 PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestRouterErrors::test_invalid_phase_raises PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestRouterErrors::test_error_message_includes_new_phases PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestRouterErrors::test_phase_3_5_requires_image_paths PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestDispatchWarning::test_warning_logic_exists PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_a07_wcag_aaa PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_a08_min_40px_no_exception PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_a09_font_weight_exists PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_font_weight_fail_category PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase3_font_weight_rule PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase3_wcag_aaa_rule PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase3_glassmorphism_guide PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase3_logo_rule PASSED [ 52%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase2_5_40px_reference PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase2_5_aaa_reference PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestFeedbackV26::test_phase3_5_a09_reference PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase0_5_total_100 PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase0_5_scoring_ranges PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase1_5_total_100 PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase0_5_no_conditional PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase1_5_item_scores PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase1_5_immediate_pass_90 PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_phase3_5_unchanged_100 PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_escalation_rules_updated PASSED [ 53%] ../../../workspace/tests/test_image_workflow_v25.py::TestScoreUnification100::test_workflow_overview_100 PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationDispatchFlow::test_task_id_passed_to_build_prompt PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationDispatchFlow::test_generate_id_recorded_before_build_prompt PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationDispatchFlow::test_get_dispatch_time_returns_future PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationDispatchFlow::test_full_flow_sequential PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationTaskTimerLifecycle::test_full_lifecycle PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationTaskTimerLifecycle::test_multiple_tasks_lifecycle PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationLoggerErrorTracker::test_logger_writes_file_and_error_tracker_records PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationLoggerErrorTracker::test_multiple_errors_retrievable_in_order PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationLoggerErrorTracker::test_get_recent_errors_returns_empty_when_no_file PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationTeamPrompts::test_all_teams_prompts_generated_successfully PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationTeamPrompts::test_direct_teams_contain_member_names PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationTeamPrompts::test_glm_team_contains_openclaw_keyword PASSED [ 53%] ../../../workspace/tests/test_integration.py::TestIntegrationTeamPrompts::test_all_prompts_contain_task_id PASSED [ 54%] ../../../workspace/tests/test_integration.py::TestIntegrationRunTests::test_run_tests_produces_valid_json PASSED [ 54%] ../../../workspace/tests/test_integration.py::TestIntegrationRunTests::test_run_tests_output_has_required_keys PASSED [ 54%] ../../../workspace/tests/test_integration.py::TestIntegrationRunTests::test_run_tests_all_passed PASSED [ 54%] ../../../workspace/tests/test_integration.py::TestIntegrationRunTests::test_run_tests_results_list_exists PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchRedactIntegration::test_redact_module_importable PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchRedactIntegration::test_redact_masks_api_key_in_text PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchRedactIntegration::test_dispatch_has_redact_flag PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchRedactIntegration::test_dispatch_redact_available_true_when_module_present PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchRedactIntegration::test_dispatch_redact_fallback_when_import_error PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchInjectionGuardIntegration::test_injection_guard_module_importable PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchInjectionGuardIntegration::test_scan_content_detects_injection PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchInjectionGuardIntegration::test_scan_content_safe_text_returns_safe PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchInjectionGuardIntegration::test_dispatch_has_injection_guard_flag PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchInjectionGuardIntegration::test_dispatch_injection_guard_available_true_when_module_present PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchInjectionGuardIntegration::test_dispatch_injection_guard_fallback_when_import_error PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchApprovalIntegration::test_approval_module_importable PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchApprovalIntegration::test_check_command_detects_rm_rf PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchApprovalIntegration::test_check_command_safe_returns_safe PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchApprovalIntegration::test_dispatch_has_approval_flag PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchApprovalIntegration::test_dispatch_approval_available_true_when_module_present PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchAuditLoggerIntegration::test_audit_logger_module_importable PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchAuditLoggerIntegration::test_log_file_operation_writes_jsonl PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchAuditLoggerIntegration::test_dispatch_has_audit_logger_flag PASSED [ 54%] ../../../workspace/tests/test_integration_modules.py::TestDispatchAuditLoggerIntegration::test_dispatch_audit_logger_available_true_when_module_present PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorConfigLoaderIntegration::test_config_loader_module_importable PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorConfigLoaderIntegration::test_load_config_returns_config_object PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorConfigLoaderIntegration::test_config_get_with_default PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorConfigLoaderIntegration::test_orchestrator_has_config_loader_flag PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorConfigLoaderIntegration::test_orchestrator_init_uses_default_poll_interval_without_config PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorConfigLoaderIntegration::test_orchestrator_init_applies_config_poll_interval PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorInterruptIntegration::test_interrupt_module_importable PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorInterruptIntegration::test_interrupt_flag_set_and_reset PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorInterruptIntegration::test_orchestrator_has_interrupt_flag PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorInterruptIntegration::test_orchestrator_interrupt_available_true PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorMemoryManagerIntegration::test_memory_manager_module_importable PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorMemoryManagerIntegration::test_orchestrator_has_memory_manager_flag PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorMemoryManagerIntegration::test_orchestrator_has_save_state_snapshot_method PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorMemoryManagerIntegration::test_save_state_snapshot_returns_bool PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestOrchestratorMemoryManagerIntegration::test_save_state_snapshot_creates_file_when_available PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_atomic_write_module_importable PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_atomic_json_write_creates_valid_json PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_atomic_json_write_overwrites_existing PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_chain_manager_has_atomic_write_flag PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_chain_manager_atomic_write_available_true PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_save_chain_file_uses_atomic_write_when_available PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerAtomicWriteIntegration::test_save_chain_file_fallback_when_atomic_write_unavailable PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerUsagePricingIntegration::test_usage_pricing_module_importable PASSED [ 55%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerUsagePricingIntegration::test_calculate_cost_returns_cost_result PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerUsagePricingIntegration::test_chain_manager_has_usage_pricing_flag PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerUsagePricingIntegration::test_chain_manager_usage_pricing_available_true PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestChainManagerUsagePricingIntegration::test_cmd_next_logs_cost_on_chain_complete PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestBackwardCompatibility::test_dispatch_all_flags_default_to_bool PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestBackwardCompatibility::test_orchestrator_all_flags_default_to_bool PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestBackwardCompatibility::test_chain_manager_all_flags_default_to_bool PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestBackwardCompatibility::test_save_chain_file_works_without_atomic_write PASSED [ 56%] ../../../workspace/tests/test_integration_modules.py::TestBackwardCompatibility::test_orchestrator_save_snapshot_returns_false_when_unavailable PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_creates_state_file PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_json_schema PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_project_and_task_id_values PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_all_phases_pending PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_current_phase_is_zero PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_approval_points_schema PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestInit::test_init_duplicate_raises_error PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestStatus::test_status_output_contains_project_name PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestStatus::test_status_output_contains_phase_info PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestStatus::test_status_missing_project_returns_error PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase0_done_sets_completed PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase0_done_sets_phase1_in_progress PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase0_done_updates_current_phase PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase0_done_records_output_path PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase0_done_records_completed_at PASSED [ 56%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase1_before_phase0_raises_error PASSED [ 57%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_invalid_phase_number_raises_error PASSED [ 57%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_full_flow_all_phases_completed PASSED [ 57%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_full_flow_current_phase_after_last PASSED [ 57%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_approval_point_updated_after_phase0 PASSED [ 57%] ../../../workspace/tests/test_kickoff.py::TestPhaseDone::test_phase_done_missing_project_raises_error PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestParseMeetingFile::test_parse_real_meeting_file PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestParseMeetingFile::test_parse_returns_required_keys PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestParseMeetingFile::test_parse_cycle_count_integer PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestParseMeetingFile::test_parse_personas_list PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestParseMeetingFile::test_parse_content_not_empty PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckCycleCount::test_check_cycle_count_pass PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckCycleCount::test_check_cycle_count_fail PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckCycleCount::test_check_cycle_count_lv1_skip PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckCycleCount::test_check_cycle_count_lv3_exact_boundary PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckCycleCount::test_check_cycle_count_lv3_insufficient PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckCycleCount::test_check_cycle_count_result_has_message PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckPersonaValidation::test_check_persona_registered PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckPersonaValidation::test_check_persona_unregistered PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckPersonaValidation::test_check_persona_loki_missing PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckPersonaValidation::test_check_persona_loki_present PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckPersonaValidation::test_check_persona_result_has_required_keys PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckPersonaValidation::test_check_persona_real_meeting_file PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_required_present PASSED [ 57%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_required_missing PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_optional_lv2 PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_optional_lv1 PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_three_questions PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_rebuttal_found PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_verdict_found PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_result_has_required_keys PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckDA::test_check_da_real_meeting_file PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_mentioned PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_not_mentioned PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_with_task_id_no_dir PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_with_task_id_existing_dir PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_result_has_required_keys PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_no_task_id_files_exist_none PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestCheckThreeDocs::test_check_three_docs_real_meeting_file PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditFull::test_run_audit_full_json_structure PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditFull::test_run_audit_each_section_has_status PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditFull::test_run_audit_with_task_id PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditFull::test_run_audit_serializable_to_json PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestEmptyMeetingFile::test_empty_meeting_file PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestEmptyMeetingFile::test_empty_meeting_run_audit PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestNonexistentFile::test_nonexistent_file_parse PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestNonexistentFile::test_nonexistent_file_run_audit PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditRealFile::test_run_audit_real_file PASSED [ 58%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditRealFile::test_run_audit_real_file_lv2 PASSED [ 59%] ../../../workspace/tests/test_meeting_audit.py::TestRunAuditRealFile::test_run_audit_real_file_json_serializable PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestParseStarItems::test_parse_star_items_normal PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestParseStarItems::test_parse_star_items_empty_file PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestParseStarItems::test_parse_star_items_no_file PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestParseStarItems::test_parse_star_items_markdown_stripped PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestFindFeedbackFiles::test_find_feedback_files_normal PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestFindFeedbackFiles::test_find_feedback_files_empty_dir PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestFindFeedbackFiles::test_find_feedback_files_no_dir PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestMatchFeedbackToTask::test_match_feedback_to_task PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestMatchFeedbackToTask::test_match_feedback_to_task_no_match PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestMatchFeedbackToTask::test_match_feedback_to_task_keyword_extraction PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestMatchFeedbackToTask::test_match_feedback_to_task_empty_dir PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetNextMcId::test_get_next_mc_id_no_file PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetNextMcId::test_get_next_mc_id_empty_checks PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetNextMcId::test_get_next_mc_id_existing PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetNextMcId::test_get_next_mc_id_format PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestIssueMc::test_issue_mc_creates_log PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestIssueMc::test_issue_mc_appends_to_existing PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestIssueMc::test_issue_mc_return_structure PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetUncheckedTasks::test_get_unchecked_tasks_all_checked PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetUncheckedTasks::test_get_unchecked_tasks_some_missing PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetUncheckedTasks::test_get_unchecked_tasks_no_timers PASSED [ 59%] ../../../workspace/tests/test_memory_check.py::TestGetUncheckedTasks::test_get_unchecked_tasks_no_log PASSED [ 60%] ../../../workspace/tests/test_memory_check.py::TestGetUncheckedTasks::test_get_unchecked_tasks_only_running_included PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC01_db_creation PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC02_parse_diary_file PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC03_parse_memory_file PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC04_index_single_file PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC05_incremental_indexing PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC06_update_on_change PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC07_fts5_search_korean PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC08_search_with_filter PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC09_reindex_all PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC10_stats PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC11_index_directory PASSED [ 60%] ../../../workspace/tests/test_memory_indexer.py::test_TC12_search_empty_db PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC13_layer_index_fields PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC14_layer_summary_fields PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC15_layer_full_compatibility PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC16_invalid_layer_raises PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC17_get_by_ids_basic PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC18_get_by_ids_empty PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC19_get_by_ids_nonexistent PASSED [ 60%] ../../../workspace/tests/test_memory_progressive.py::test_TC20_token_saving_by_layer PASSED [ 60%] ../../../workspace/tests/test_meta_ads_client.py::TestMetaAdsClientInit::test_init_success_with_all_env_vars PASSED [ 60%] ../../../workspace/tests/test_meta_ads_client.py::TestMetaAdsClientInit::test_init_raises_value_error_when_access_token_missing PASSED [ 60%] ../../../workspace/tests/test_meta_ads_client.py::TestMetaAdsClientInit::test_init_raises_value_error_when_multiple_keys_missing PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestToDict::test_to_dict_uses_export_all_data_when_available PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestToDict::test_to_dict_falls_back_to_dict_conversion PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestExchangeToken::test_exchange_token_returns_new_token_on_success PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestExchangeToken::test_exchange_token_raises_on_http_error PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestExchangeToken::test_exchange_token_raises_value_error_when_no_access_token_in_response PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestCheckToken::test_check_token_returns_data_field PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestCheckToken::test_check_token_returns_raw_response_when_no_data_key PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateEnvToken::test_update_env_token_replaces_export_prefix_line PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateEnvToken::test_update_env_token_replaces_plain_prefix_line PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateEnvToken::test_update_env_token_appends_when_line_not_found PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateEnvToken::test_update_env_token_does_nothing_when_file_not_exists PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestGetAccountInfo::test_get_account_info_returns_dict PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestListCampaigns::test_list_campaigns_returns_list_of_dicts PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestListCampaigns::test_list_campaigns_passes_limit_param PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestListCampaigns::test_list_campaigns_uses_custom_fields PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCampaign::test_create_campaign_returns_dict PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCampaign::test_create_campaign_includes_daily_budget_when_given PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCampaign::test_create_campaign_omits_daily_budget_when_none PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCampaign::test_create_campaign_default_special_ad_categories_empty PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestGetCampaign::test_get_campaign_returns_dict PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateCampaign::test_update_campaign_returns_dict PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateCampaign::test_update_campaign_passes_kwargs_as_params PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestDeleteCampaign::test_delete_campaign_returns_true_on_success PASSED [ 61%] ../../../workspace/tests/test_meta_ads_client.py::TestDeleteCampaign::test_delete_campaign_propagates_sdk_exception PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestListAdsets::test_list_adsets_from_account_when_no_campaign_id PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestListAdsets::test_list_adsets_from_campaign_when_campaign_id_given PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestListAdsets::test_list_adsets_passes_limit PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateAdset::test_create_adset_returns_dict PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateAdset::test_create_adset_passes_correct_params PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestUpdateAdset::test_update_adset_returns_dict PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestDeleteAdset::test_delete_adset_returns_true PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestUploadImage::test_upload_image_returns_hash_from_flat_response PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestUploadImage::test_upload_image_returns_hash_from_nested_images_response PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestUploadImage::test_upload_image_raises_file_not_found PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCreative::test_create_creative_returns_dict PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCreative::test_create_creative_includes_link_when_given PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCreative::test_create_creative_omits_link_when_none PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestCreateCreative::test_create_creative_sets_page_id_and_message PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_for_campaign_type PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_for_adset_type PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_for_ad_type PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_invalid_object_type_raises_value_error PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_uses_default_date_preset_when_no_range PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_uses_given_date_preset PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_uses_given_time_range PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_uses_custom_fields PASSED [ 62%] ../../../workspace/tests/test_meta_ads_client.py::TestGetInsights::test_get_insights_object_type_case_insensitive PASSED [ 62%] ../../../workspace/tests/test_model_map.py::test_model_map_keys PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_model_map_has_updated PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_model_map_default_models PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_build_model_guide_contains_all_roles PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_build_model_guide_no_metakeys PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_staleness_warning_over_7_days PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_staleness_no_warning_within_7_days PASSED [ 63%] ../../../workspace/tests/test_model_map.py::test_feature_flag_off_keeps_existing PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestGetAnuKey::test_get_anu_key_empty_exits PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestGetAnuKey::test_get_anu_key_missing_exits PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestGetAnuKey::test_get_anu_key_success PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestCheckChainStatus::test_check_chain_status_failure_returns_default PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestCheckChainStatus::test_check_chain_status_invalid_json_returns_default PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestCheckChainStatus::test_check_chain_status_success PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestCheckChainStatus::test_check_chain_status_timeout_returns_default PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestLogProtocol::test_log_protocol_creates_parent_dirs PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestLogProtocol::test_log_protocol_silent_on_oserror PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestLogProtocol::test_log_protocol_writes_to_file PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestSendTelegramNotification::test_send_telegram_notification_calls_subprocess PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestSendTelegramNotification::test_send_telegram_notification_no_exit_on_failure PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestMain::test_main_chain_last_phase PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestMain::test_main_chain_mid_phase PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestMain::test_main_missing_anu_key_does_not_exit PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestMain::test_main_not_in_chain PASSED [ 63%] ../../../workspace/tests/test_notify_completion.py::TestMain::test_main_uses_cli_anu_key PASSED [ 64%] ../../../workspace/tests/test_notify_completion.py::TestDispatchExecution::test_dispatch_failure_sends_telegram_anyway PASSED [ 64%] ../../../workspace/tests/test_notify_completion.py::TestDispatchExecution::test_mid_chain_dispatch_calls_subprocess PASSED [ 64%] ../../../workspace/tests/test_orphan_watchdog.py::test_no_zombies PASSED [ 64%] ../../../workspace/tests/test_orphan_watchdog.py::test_detect_zombie PASSED [ 64%] ../../../workspace/tests/test_orphan_watchdog.py::test_running_status_also_detected PASSED [ 64%] ../../../workspace/tests/test_orphan_watchdog.py::test_within_threshold_not_zombie PASSED [ 64%] ../../../workspace/tests/test_orphan_watchdog.py::test_file_not_exists PASSED [ 64%] ../../../workspace/tests/test_orphan_watchdog.py::test_custom_threshold PASSED [ 64%] ../../../workspace/tests/test_planned_check.py::TestPlannedCheckVerifier::test_fail_with_planned_items PASSED [ 64%] ../../../workspace/tests/test_planned_check.py::TestPlannedCheckVerifier::test_pass_with_all_verified PASSED [ 64%] ../../../workspace/tests/test_planned_check.py::TestPlannedCheckVerifier::test_skip_no_table PASSED [ 64%] ../../../workspace/tests/test_planned_check.py::TestPlannedCheckVerifier::test_skip_no_report PASSED [ 64%] ../../../workspace/tests/test_planned_check.py::TestPlannedCheckVerifier::test_fail_multiple_planned PASSED [ 64%] ../../../workspace/tests/test_progressive_disclosure.py::test_summary_phase_token_ratio PASSED [ 64%] ../../../workspace/tests/test_progressive_disclosure.py::test_summary_phase_token_limit PASSED [ 64%] ../../../workspace/tests/test_progressive_disclosure.py::test_critical_set_always_included PASSED [ 64%] ../../../workspace/tests/test_progressive_disclosure.py::test_flag_disabled_fallback PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestGatePassCreatesDoneFile::test_gate_pass_creates_done_file PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestGateWarnCreatesDoneFile::test_gate_warn_creates_done_file PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestGateFailNoDoneFile::test_gate_fail_no_done_file PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestNoGateFlagNoDoneFile::test_no_gate_flag_no_done_file PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestDoneFileContent::test_done_file_content PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestDoneFileContent::test_done_file_content_warn PASSED [ 64%] ../../../workspace/tests/test_qc_gate.py::TestDoneFileContent::test_done_file_timestamp_format PASSED [ 65%] ../../../workspace/tests/test_qc_gate.py::TestDoneFileContent::test_done_file_parent_dir_auto_created PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionNormal::test_normal_contains_selfcheck PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionNormal::test_normal_contains_qc_rules_ref PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionNormal::test_normal_contains_auto_verify_keyword PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionNormal::test_normal_no_maat_no_loki PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionCritical::test_critical_contains_maat PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionCritical::test_critical_contains_independent_verification PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionCritical::test_critical_contains_qc_rules_ref PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionCritical::test_critical_no_loki PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionCritical::test_critical_contains_selfcheck PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionSecurity::test_security_contains_maat PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionSecurity::test_security_contains_loki PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionSecurity::test_security_contains_audit_keyword PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionSecurity::test_security_contains_qc_rules_ref PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestVerificationSectionSecurity::test_security_contains_selfcheck PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestRegressionTeamPrompts::test_team_prompts_tests_all_pass PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_outputs_valid_json PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_task_id_correct PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_has_all_check_keys PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_skipped_checks_are_skip PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_data_integrity_is_fail PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_overall_is_fail PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_summary_contains_fail PASSED [ 65%] ../../../workspace/tests/test_qc_integration.py::TestEndToEndQCVerify::test_e2e_exit_code_nonzero PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesFound::test_infer_test_files_found PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesFound::test_infer_test_files_found_parent_tests PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesFound::test_infer_test_files_found_workspace_tests PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesNotFound::test_infer_test_files_not_found PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesNotFound::test_infer_empty_list PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesSkipTestFiles::test_infer_test_files_skip_test_files PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestInferTestFilesSkipNonPython::test_infer_test_files_skip_non_python PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestRunCheckTestRunnerManualSkip::test_run_check_test_runner_manual_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestRunCheckTestRunnerManualSkip::test_manual_skip_details_contains_warning PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestRunCheckTestRunnerAutoInferNoFiles::test_run_check_test_runner_auto_infer_no_files PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestRunCheckTestRunnerAutoInferNoFiles::test_run_check_test_runner_no_dir_no_files_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestRunCheckTestRunnerWithTestDirWarns::test_run_check_test_runner_with_test_dir_warns PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestSummarizeWithManualSkip::test_summarize_with_manual_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestSummarizeWithManualSkip::test_summarize_no_manual_skip_no_entry PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestDetermineOverallManualSkipIsWarn::test_determine_overall_manual_skip_is_warn PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestDetermineOverallManualSkipIsWarn::test_determine_overall_fail_beats_manual_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestDetermineOverallManualSkipIsWarn::test_determine_overall_all_pass_no_manual_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestVerifyWithTestFiles::test_verify_with_test_files_empty_list_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestVerifyWithTestFiles::test_verify_with_nonexistent_test_files_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestVerifyWithTestFiles::test_verify_with_existing_test_file PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestVerifyWithTestFiles::test_verify_with_no_args_skip PASSED [ 66%] ../../../workspace/tests/test_qc_verify.py::TestVerifyWithTestFiles::test_verify_test_files_overrides_test_dir PASSED [ 66%] ../../../workspace/tests/test_regression.py::TestRegressionCLIRecursion::test_patched_init_does_not_recurse PASSED [ 66%] ../../../workspace/tests/test_regression.py::TestRegressionCLIRecursion::test_original_init_preserved PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionDev8GLMPrompt::test_dev8_prompt_contains_team_id PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionDev8GLMPrompt::test_dev8_prompt_type_is_mcp PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionTaskTimerHelp::test_no_args_exits_with_usage PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionTaskTimerHelp::test_list_command_works_without_args PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionGenerateTaskIdCollision::test_no_collision_with_existing_ids PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionGenerateTaskIdCollision::test_sequential_ids_never_collide PASSED [ 67%] ../../../workspace/tests/test_regression.py::TestRegressionGenerateTaskIdCollision::test_new_id_is_higher_than_existing PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_merge_needed_delegate_to_anu PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_merge_not_needed PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_no_merge_keywords PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_branch_extraction PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_summarize_oneline_merge_indicator PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_worktree_path_extraction PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_anu_judgment_keyword PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_merge_needed_positive PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_summarize_oneline_no_merge_indicator PASSED [ 67%] ../../../workspace/tests/test_report_parser.py::test_merge_unnecessary_keyword PASSED [ 67%] ../../../workspace/tests/test_rw_isolation.py::test_read_agent_no_worktree PASSED [ 67%] ../../../workspace/tests/test_rw_isolation.py::test_write_agent_default_read_only_false PASSED [ 67%] ../../../workspace/tests/test_rw_isolation.py::test_default_agent_type_is_write PASSED [ 67%] ../../../workspace/tests/test_rw_isolation.py::test_flag_disabled_always_write PASSED [ 67%] ../../../workspace/tests/test_rw_isolation.py::test_workflow_section5_exists PASSED [ 67%] ../../../workspace/tests/test_sanitize_gate.py::TestShouldSanitize::test_should_sanitize_levels PASSED [ 67%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_rrn PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_phone PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_email PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_apikey PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_policy PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_multiple PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeText::test_sanitize_text_no_pii PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeFileContent::test_sanitize_file_content PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestSanitizeFileContent::test_sanitize_file_not_found PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestGenerateSanitizeReport::test_generate_report_empty PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestGenerateSanitizeReport::test_generate_report_with_detections PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestPatternsCompleteness::test_patterns_completeness PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestGateInstructionsSanitize::test_gate_instructions_sanitize_lv3 PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestGateInstructionsSanitize::test_gate_instructions_sanitize_lv4 PASSED [ 68%] ../../../workspace/tests/test_sanitize_gate.py::TestGateInstructionsSanitize::test_gate_instructions_no_sanitize_lv2 PASSED [ 68%] ../../../workspace/tests/test_secret_rotation_check.py::TestSecretRotationCheck::test_all_ok PASSED [ 68%] ../../../workspace/tests/test_secret_rotation_check.py::TestSecretRotationCheck::test_expired_detected PASSED [ 68%] ../../../workspace/tests/test_secret_rotation_check.py::TestSecretRotationCheck::test_warning_14days PASSED [ 68%] ../../../workspace/tests/test_secret_rotation_check.py::TestSecretRotationCheck::test_json_output PASSED [ 68%] ../../../workspace/tests/test_secret_rotation_check.py::TestSecretRotationCheck::test_update_checked PASSED [ 68%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_returns_tuple PASSED [ 68%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_reduces_message_count PASSED [ 68%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_event_file_created PASSED [ 68%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_event_file_json_format PASSED [ 68%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_monitor_reset_called PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_empty_messages PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestAutoCompress::test_auto_compress_event_info_in_return PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_returns_path PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_file_exists PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_filename_contains_task_id PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_content_has_task_id PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_content_has_team_id PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_content_has_modified_files PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_content_has_remaining_tasks PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_content_has_last_success_step PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_content_has_errors PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_empty_messages PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_none_optional_fields PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSaveSessionSummary::test_save_session_summary_markdown_headers PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSetupAutoHooks::test_setup_auto_hooks_registers_callback PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSetupAutoHooks::test_setup_auto_hooks_callback_is_callable PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSetupAutoHooks::test_setup_auto_hooks_callback_invoked_on_critical PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestSetupAutoHooks::test_setup_auto_hooks_idempotent PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestDefaultPaths::test_default_events_dir PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestDefaultPaths::test_default_sessions_dir PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestDefaultPaths::test_custom_dirs_accepted PASSED [ 69%] ../../../workspace/tests/test_session_auto_compress.py::TestEstimateTokensKoreanIntegration::test_korean_messages_estimated_higher PASSED [ 69%] ../../../workspace/tests/test_session_integration.py::test_dispatch_has_check_sessions_arg PASSED [ 69%] ../../../workspace/tests/test_session_integration.py::test_dispatch_check_sessions_returns_json PASSED [ 70%] ../../../workspace/tests/test_session_integration.py::test_team_prompts_include_session_monitoring PASSED [ 70%] ../../../workspace/tests/test_session_integration.py::test_session_resilience_importable_from_dispatch PASSED [ 70%] ../../../workspace/tests/test_session_integration.py::test_session_auto_compress_importable PASSED [ 70%] ../../../workspace/tests/test_session_integration.py::test_session_resilience_check_all_sessions PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_default_context_limit PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_initial_total_tokens_zero PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_initial_level_normal PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_initial_usage_pct_zero PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_custom_context_limit PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_custom_warning_pct PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestInitialState::test_custom_critical_pct PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_returns_normal_below_warning PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_returns_warning_at_70pct PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_returns_warning_between_70_and_85 PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_returns_critical_at_85pct PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_accumulates_tokens PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_uses_input_and_output_tokens PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_with_only_input_tokens PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_with_only_output_tokens PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_update_empty_dict_stays_normal PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestUpdate::test_usage_pct_calculation PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestGetUsageStatus::test_returns_required_keys PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestGetUsageStatus::test_level_warning_in_status PASSED [ 70%] ../../../workspace/tests/test_session_monitor.py::TestGetUsageStatus::test_level_critical_in_status PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestGetUsageStatus::test_usage_pct_is_float PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestReset::test_reset_clears_tokens PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestReset::test_reset_level_returns_normal PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestReset::test_reset_with_new_total PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestReset::test_reset_with_new_total_updates_level PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestReset::test_reset_with_new_total_warning PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestReset::test_reset_usage_pct_zero PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_register_warning_callback_called PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_register_critical_callback_called PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_warning_callback_not_called_below_threshold PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_critical_callback_not_called_at_warning PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_callback_receives_status_dict PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_multiple_callbacks_same_level PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_callback_called_only_on_level_transition PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCallbacks::test_critical_callback_on_transition_from_warning PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCLIStatus::test_cli_status_output_format PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCLIStatus::test_cli_status_warning_level PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCLIStatus::test_cli_status_no_running_tasks PASSED [ 71%] ../../../workspace/tests/test_session_monitor.py::TestCLIStatus::test_cli_status_task_not_in_ledger PASSED [ 71%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_init_defaults PASSED [ 71%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_all_sessions_no_running PASSED [ 71%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_all_sessions_normal_level PASSED [ 71%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_all_sessions_warning_level PASSED [ 71%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_all_sessions_critical_level PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_session_returns_status PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_handle_warning_creates_event_file PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_handle_critical_creates_event_file PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_handle_critical_saves_session_summary PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_handle_critical_triggers_resume PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_already_handled_session_not_re_triggered PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_get_bot_mapping PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_session_warning_level PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_session_critical_level PASSED [ 72%] ../../../workspace/tests/test_session_resilience.py::TestSessionResilience::test_check_all_sessions_multiple_tasks PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogCheck::test_check_returns_result PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogCheck::test_check_prints_json_output PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogCheck::test_check_with_no_running_sessions PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogCheck::test_check_detects_warning PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogCheck::test_check_detects_critical PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogStatus::test_status_returns_session_list PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogStatus::test_status_output_format PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_main_function_check_mode PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_main_function_status_mode PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_exit_code_success PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_exit_code_on_critical PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_exit_code_warning_only_is_zero PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_status_mode_no_running_sessions PASSED [ 72%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_check_result_has_timestamp PASSED [ 73%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_run_check_normals_count PASSED [ 73%] ../../../workspace/tests/test_session_watchdog.py::TestWatchdogIntegration::test_run_status_returns_empty_when_no_files PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_signature_pass_grep_exists PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_signature_fail_grep_missing PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_signature_skip_no_section PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_level_normal_grep_only PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_level_critical_all PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_grep_signature_multiple PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_signature_file_not_found PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestSignatureCheckVerify::test_task_file_not_found_returns_skip PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestVerifyDone::test_verify_done_pass PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestVerifyDone::test_verify_done_fail_creates_rejected PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestVerifyDone::test_verify_done_skip_no_signature PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestVerifyDone::test_verify_done_rejected_contains_reject_reason PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestVerifyDone::test_verify_done_autodelegate_message_on_rejected PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestLevelDetection::test_security_level_treated_as_critical PASSED [ 73%] ../../../workspace/tests/test_signature_check.py::TestLevelDetection::test_no_level_section_defaults_to_grep_only PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestClassifySkill::test_security_whitelist_skills_are_core PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestClassifySkill::test_keyword_trigger_skills_are_standard PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestClassifySkill::test_unregistered_skill_is_extended PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestClassifySkill::test_blog_writer_is_standard PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestClassifySkill::test_nuclear_approval_is_core PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestClassifySkill::test_retro_is_standard PASSED [ 73%] ../../../workspace/tests/test_skill_loader.py::TestFeatureFlag::test_flag_default_is_enabled PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestFeatureFlag::test_flag_off_all_skills_become_core PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestFeatureFlag::test_flag_on_normal_classification PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestFeatureFlag::test_flag_toggle_restores_classification PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestFeatureFlag::test_flag_is_restored_after_test PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_korean_keyword_matches_blog_writer PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_english_keyword_matches_pdf PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_case_insensitive_seo_audit PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_no_keyword_returns_empty_list PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_multiple_skills_match_simultaneously PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_result_type_is_list_of_skill_summary PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_retro_keyword_match PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestMatchSkillsByPrompt::test_lowercase_pdf_keyword PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestCheckSecurityWhitelist::test_returns_list_type PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestCheckSecurityWhitelist::test_all_items_are_strings PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestCheckSecurityWhitelist::test_whitelisted_skills_not_in_warnings PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestCheckSecurityWhitelist::test_nonexistent_dir_returns_empty_list PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestGetSkillsByLevel::test_core_level_includes_security_whitelist_skills PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestGetSkillsByLevel::test_core_level_returns_list_of_skill_summary PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestGetSkillsByLevel::test_standard_level_includes_keyword_trigger_skills PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestGetSkillsByLevel::test_extended_level_excludes_whitelist_and_triggers PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestGetSkillsByLevel::test_flag_off_all_skills_in_core PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestGetSkillsByLevel::test_flag_off_standard_and_extended_empty PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_list_skills_returns_list PASSED [ 74%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_list_skills_not_empty PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_list_skills_contains_skill_summary_instances PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_view_skill_retro_returns_skill_detail PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_view_skill_detail_has_required_fields PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_load_skill_pdf_returns_string PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_load_skill_pdf_not_empty PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_view_skill_nonexistent_raises_file_not_found PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_load_skill_nonexistent_raises_file_not_found PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_list_skills_nonexistent_dir_returns_empty PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_view_skill_blog_writer_returns_skill_detail PASSED [ 75%] ../../../workspace/tests/test_skill_loader.py::TestLegacyFunctions::test_load_skill_retro_returns_string PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_parse_frontmatter_valid PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_parse_frontmatter_no_description PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_parse_frontmatter_none PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_check_skill_pass PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_check_skill_fail_no_skillmd PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_check_skill_warn_no_registry PASSED [ 75%] ../../../workspace/tests/test_skill_quality_check.py::test_summary_runs PASSED [ 75%] ../../../workspace/tests/test_symbol_existence_check.py::test_pass_symbol_exists PASSED [ 75%] ../../../workspace/tests/test_symbol_existence_check.py::test_fail_symbol_missing PASSED [ 75%] ../../../workspace/tests/test_symbol_existence_check.py::test_skip_no_modified_files_section PASSED [ 75%] ../../../workspace/tests/test_task522.py::test_simple_http_server_stats PASSED [ 75%] ../../../workspace/tests/test_task522.py::test_fastapi_server_stats PASSED [ 75%] ../../../workspace/tests/test_task522.py::test_json_dumps_format PASSED [ 75%] ../../../workspace/tests/test_task522.py::test_interval_logic PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_direct_prompt_has_design_restriction PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_direct_prompt_mentions_design_team PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_direct_prompt_forbids_skills PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_glm_prompt_has_design_restriction PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_import_works PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_build_prompt_generates_design_rule PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestTeamPromptsDesignRestriction::test_glm_prompt_generates_design_rule PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestDirectWorkflowDesignRestriction::test_has_design_restriction_section PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestDesignTeamModel::test_venus_model_is_gemini PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestDesignTeamModel::test_venus_engine_is_google PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestDesignTeamModel::test_design_team_structure_valid PASSED [ 76%] ../../../workspace/tests/test_task_1037_1_design_restriction.py::TestIntegration::test_no_syntax_errors PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestGetRecordsList::test_function_exists PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestGetRecordsList::test_returns_list PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestGetRecordsList::test_record_has_required_fields PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestGetRecordsList::test_end_time_is_iso_format PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestGetRecordsList::test_title_not_empty PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestTitleExtraction::test_extracts_title_after_colon PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestTitleExtraction::test_fallback_to_description PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestEndTimeExtraction::test_uses_task_timers_end_time PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestEndTimeExtraction::test_fallback_to_mtime PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestArchiveViewRendering::test_component_file_exists PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestArchiveViewRendering::test_uses_end_time_field PASSED [ 76%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestArchiveViewRendering::test_displays_time_not_just_date PASSED [ 77%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestIntegration::test_api_returns_complete_data PASSED [ 77%] ../../../workspace/tests/test_task_1044_1_archive_title_time.py::TestIntegration::test_no_empty_titles PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestBeforeStartingUnification::test_all_skill_files_exist PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestBeforeStartingUnification::test_no_korean_before_starting PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestBeforeStartingUnification::test_before_starting_consistent PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestBeforeStartingUnification::test_yaml_frontmatter_unchanged PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestBeforeStartingUnification::test_section_content_preserved PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestChangeSummary::test_change_count PASSED [ 77%] ../../../workspace/tests/test_task_1058_1_before_starting.py::TestIntegration::test_all_skill_md_files_valid PASSED [ 77%] ../../../workspace/tests/test_task_1085_1_sidebar_spacing.py::TestSidebarSpacingOptimization::test_navigation_item_spacing_reduced PASSED [ 77%] ../../../workspace/tests/test_task_1085_1_sidebar_spacing.py::TestSidebarSpacingOptimization::test_user_profile_spacing_reduced PASSED [ 77%] ../../../workspace/tests/test_task_1085_1_sidebar_spacing.py::TestSidebarSpacingOptimization::test_file_exists PASSED [ 77%] ../../../workspace/tests/test_task_1085_1_sidebar_spacing.py::TestSidebarSpacingOptimization::test_file_not_empty PASSED [ 77%] ../../../workspace/tests/test_task_1085_1_sidebar_spacing.py::TestSidebarSpacingOptimization::test_has_tailwind_classes PASSED [ 77%] ../../../workspace/tests/test_task_1096_1_org_details.py::TestDevTeamDetailFiles::test_all_team_files_exist PASSED [ 77%] ../../../workspace/tests/test_task_1096_1_org_details.py::TestDevTeamDetailFiles::test_files_are_valid_json PASSED [ 77%] ../../../workspace/tests/test_task_1096_1_org_details.py::TestDevTeamDetailFiles::test_has_required_fields PASSED [ 77%] ../../../workspace/tests/test_task_1096_1_org_details.py::TestDevTeamDetailFiles::test_team_ids_match_filename PASSED [ 77%] ../../../workspace/tests/test_task_1096_1_org_details.py::TestDevTeamDetailFiles::test_leads_are_correct PASSED [ 77%] ../../../workspace/tests/test_task_1096_1_org_details.py::TestDevTeamDetailFiles::test_members_detail_not_empty PASSED [ 77%] ../../../workspace/tests/test_task_1919.py::test_skip_test_runner_blocked_by_mandatory PASSED [ 77%] ../../../workspace/tests/test_task_1919.py::test_full_suite_check_in_all_checks PASSED [ 77%] ../../../workspace/tests/test_task_1919.py::test_full_suite_runs_all_tests PASSED [ 77%] ../../../workspace/tests/test_task_1919.py::test_full_suite_fails_on_failure PASSED [ 78%] ../../../workspace/tests/test_task_1919.py::test_full_suite_check_fail_becomes_warn PASSED [ 78%] ../../../workspace/tests/test_task_1919.py::test_parse_report_test_results PASSED [ 78%] ../../../workspace/tests/test_task_1919.py::test_parse_report_test_results_no_pattern PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_returns_status_started PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_returns_task_id PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_returns_start_time PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_task_written_to_timer_file PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_task_status_is_running_in_file PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_start_task_with_team_and_description PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_start_task_with_project_id PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_start_task_end_time_is_none_initially PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTask::test_start_task_duration_is_none_initially PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTaskCompletedGuard::test_start_completed_task_returns_error PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTaskCompletedGuard::test_start_completed_task_preserves_original PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestStartTaskCompletedGuard::test_running_task_still_rejected PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_returns_status_completed PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_returns_task_id PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_returns_start_time PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_returns_end_time PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_returns_duration_seconds PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_returns_duration_human PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_task_status_updated_in_file PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_done_event_file_created PASSED [ 78%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_done_event_file_contains_valid_json PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestEndTask::test_end_time_is_after_start_time PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestEndTaskNotFound::test_returns_status_error PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestEndTaskNotFound::test_error_response_contains_reason PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestEndTaskNotFound::test_no_done_file_created_on_error PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestGetTaskStatus::test_returns_none_for_nonexistent_task PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestGetTaskStatus::test_returns_running_status PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestGetTaskStatus::test_returns_completed_status PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestGetTaskStatus::test_returns_task_data_dict PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_empty_list_initially PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_total_count_after_start PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_list_all_tasks PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_list_filter_by_running PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_list_filter_by_completed PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_list_returns_dict_with_total_and_tasks_keys PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_list_tasks_data_structure PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestListTasks::test_list_with_nonexistent_status_returns_empty PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_seconds_under_60 PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_seconds_zero PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_seconds_59 PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_seconds_exactly_60_is_one_minute PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_minutes_and_seconds PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_minutes_without_seconds PASSED [ 79%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_just_under_one_hour PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_exactly_one_hour PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_one_hour_thirty_minutes PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_two_hours PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestFormatDuration::test_format_returns_string PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_returns_status_logged PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_returns_message PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_returns_entry_type PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_returns_timestamp PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_creates_daily_log_file PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_daily_log_file_name_is_today PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_log_file_contains_message PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_multiple_log_entries_appended PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_dispatch_type_log_entry PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_decision_type_log_entry PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_system_type_log_entry PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_start_task_writes_to_daily_log PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestAddLogEntry::test_end_task_writes_to_daily_log PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_start_command PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_end_command_after_start PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_list_command PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_status_command PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_status_not_found_exits PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_log_command PASSED [ 80%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_no_args_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_unknown_command_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_log_invalid_type_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_start_command_task_n_format PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMain::test_end_command_fuzzy_match PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestLoadTimersError::test_corrupted_json_returns_empty PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestLoadTimersError::test_unreadable_file_returns_empty PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestSaveTimersError::test_save_to_readonly_dir PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestUpdatePipelineStatusEdgeCases::test_corrupted_pipeline_json PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestUpdatePipelineStatusEdgeCases::test_pipeline_update_exception_ignored PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestAppendToSection::test_section_exists_insert_before_next_section PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestAppendToSection::test_section_exists_no_next_section PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestAppendToSection::test_new_section_created_when_missing PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestAppendToSection::test_content_without_newline_ending PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestAppendToSection::test_wrong_date_header_gets_prepended PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMainEdgeCases::test_start_without_task_id_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMainEdgeCases::test_end_without_task_id_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMainEdgeCases::test_status_without_task_id_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMainEdgeCases::test_log_without_message_exits PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMainEdgeCases::test_start_with_positional_args PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestCLIMainEdgeCases::test_start_with_project_flag PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_simple PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_large_numbers PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_multi_digit_sub PASSED [ 81%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_no_prefix PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_wrong_prefix PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_no_dot PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_large_no_dot PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_start_task_accepts_task_n_format PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_alpha PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_empty PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_spaces PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_phase PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_parallel PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_phase_parallel PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_retry PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_full_v2 PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_phase_retry PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_valid_task_id_parallel_retry PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_uppercase_parallel PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_bad_phase PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_invalid_task_id_double_underscore PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_start_task_rejects_invalid_task_id PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestTaskIdValidation::test_start_task_accepts_valid_task_id PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchEnd::test_end_fuzzy_match_single_running PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchEnd::test_end_fuzzy_match_multiple_running_picks_latest PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchEnd::test_end_exact_match_preferred_over_fuzzy PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchEnd::test_end_fuzzy_no_running_returns_error PASSED [ 82%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchEnd::test_end_exact_still_works PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchStatus::test_status_fuzzy_match_single PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchStatus::test_status_exact_match_preferred PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestFuzzyMatchStatus::test_status_no_match_returns_none PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_dev1_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_dev2_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_dev3_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_anu_direct PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_empty_string PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_invalid_odin_2 PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_dev4_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_invalid_random PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_start_task_rejects_invalid_team_id PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_start_task_accepts_empty_team_id PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_start_task_accepts_valid_team_id PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_design_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_publishing_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_valid_composite_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_start_task_accepts_design_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_start_task_accepts_publishing_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestTeamIdValidation::test_start_task_accepts_composite_team PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestAtomicSave::test_save_creates_valid_json PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestAtomicSave::test_save_does_not_leave_tmp_files PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestAtomicSave::test_concurrent_save_preserves_data PASSED [ 83%] ../../../workspace/tests/test_task_timer.py::TestAtomicSave::test_save_uses_lock_file PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestStaleGuard::test_start_task_rejects_stale PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestStaleGuard::test_start_task_stale_preserves_original_data PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossStart::test_cross_start_valid_agent PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossStart::test_cross_start_invalid_agent PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossStart::test_cross_start_invalid_task_id PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossStart::test_cross_start_overwrite_active PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossEnd::test_cross_end_active_agent PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossEnd::test_cross_end_idle_agent PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossEnd::test_cross_end_invalid_agent PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossFunctionalFile::test_cross_start_creates_file PASSED [ 84%] ../../../workspace/tests/test_task_timer.py::TestCrossFunctionalFile::test_cross_status_persists PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_with_qc_result_pass PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_without_qc_result PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_with_qc_result_fail PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_with_qc_result_warn PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_empty_string_qc_result PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_qc_result_persisted_in_json PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestEndTaskQcResult::test_end_task_idempotent_already_completed PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestCliQcResult::test_cli_end_with_qc_result_pass PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestCliQcResult::test_cli_end_without_qc_result PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_completed_only PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_team_classification PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_qc_pass_rate PASSED [ 84%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_empty_data PASSED [ 85%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_avg_duration PASSED [ 85%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_avg_duration_human_format PASSED [ 85%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_no_duration_tasks PASSED [ 85%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_qc_none_count PASSED [ 85%] ../../../workspace/tests/test_task_timer_qc.py::TestGetHistoryStats::test_unknown_team_id PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev1_team_contains_hermes PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev1_team_contains_all_members PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev2_team_contains_odin PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev2_team_contains_all_members PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev3_team_contains_dagda PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev8_team_contains_ra PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev8_team_contains_mcp_tools PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_dev8_team_contains_team_id PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptTeamContent::test_prompt_contains_task_id PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_normal_contains_selfcheck PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_normal_does_not_contain_critical_marker PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_normal_does_not_contain_security_marker PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_critical_contains_critical_marker PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_critical_contains_maat_subagent PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_critical_does_not_contain_security_marker PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_security_contains_security_marker PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_security_contains_maat_subagent PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_security_contains_loki_subagent PASSED [ 85%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_security_contains_selfcheck PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_critical_marker_at_start_of_prompt PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptLevels::test_security_marker_at_start_of_prompt PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptProjectId::test_no_project_id_contains_system_task_message PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptProjectId::test_project_id_contains_project_path PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptProjectId::test_no_project_id_glm_team_contains_system_task PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptProjectId::test_project_id_glm_team_contains_project_path PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptProjectId::test_project_id_isolation_rule_present PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptInvalidTeamId::test_invalid_team_id_raises_value_error PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptInvalidTeamId::test_empty_team_id_raises_value_error PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptInvalidTeamId::test_none_team_id_raises_value_error PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[dev1-team] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[dev2-team] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[dev3-team] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[marketing] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[consulting] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[publishing] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_team_info_has_required_keys[design] PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_dev3_team_type_is_direct PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_dev8_team_type_is_mcp PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_dev1_dev2_team_type_is_direct PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_marketing_type PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_consulting_type PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_publishing_type PASSED [ 86%] ../../../workspace/tests/test_team_prompts.py::TestTeamInfo::test_design_type PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_direct_team_build_prompt PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_mcp_team_build_prompt PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_critical_level_original PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_security_level_original PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_normal_level_no_markers PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_project_id_direct PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_project_id_glm PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildPromptOriginal::test_invalid_team_raises_error PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildCoworkSection::test_dev1_team_cowork_contains_members PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildCoworkSection::test_dev2_team_cowork_contains_members PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildCoworkSection::test_unknown_team_returns_empty_members PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildCoworkSection::test_cowork_contains_task_tool PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildVerificationSection::test_normal_returns_selfcheck_only PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildVerificationSection::test_critical_returns_selfcheck_and_maat PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildVerificationSection::test_security_returns_all PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestBuildVerificationSection::test_unknown_level_treated_as_security PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_coding_type_includes_qc PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_research_type_skips_qc PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_check_type_skips_qc PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_default_type_is_coding PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_glm_team_coding_includes_qc PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_glm_team_research_skips_qc PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_critical_with_research_still_skips_qc PASSED [ 87%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_security_with_research_still_skips_qc PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestTaskTypeQCSkip::test_research_type_still_has_critical_marker PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_role PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_apollo PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_peitho PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_skills PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_brand_info PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_task_id PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_prompt_contains_workflow PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_with_coding_type_includes_qc PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildMarketingPrompt::test_marketing_with_research_type_skips_qc PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_role PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_asclepius PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_themis PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_skills PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_task_id PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_workflow PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_prompt_contains_insurance_context PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildConsultingPrompt::test_consulting_with_coding_type_includes_qc PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestModuleLevelImportSafety::test_import_without_anu_key_no_crash PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_role PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_calliope PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_erato PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_clio PASSED [ 88%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_terpsichore PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_polyhymnia PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_task_id PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_anti_hallucination PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_6dim_review PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_prompt_contains_content_balance PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_with_coding_type_includes_qc PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_with_research_type_skips_qc PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildPublishingPrompt::test_publishing_type_is_publishing PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_role PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_benzaiten PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_inari PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_kaguya PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_skills PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_task_id PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_workflow PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_prompt_contains_routing_rules PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_with_coding_type_includes_qc PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestBuildDesignPrompt::test_design_with_research_type_skips_qc PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_marketing_card_contains_members PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_marketing_card_contains_skills PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_marketing_card_contains_brand_info PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_consulting_card_contains_members PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_consulting_card_contains_skills PASSED [ 89%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_publishing_card_contains_members PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_publishing_card_contains_quality_rules PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_design_card_contains_members PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_design_card_contains_skills PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_design_card_contains_routing PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_workflow_file_contains_meeting_rules PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_workflow_file_contains_subagent_rules PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_workflow_file_contains_cross_org PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCardFileContent::test_workflow_file_contains_finish_task PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestSessionOptimizationInPrompts::test_direct_prompt_contains_session_optimization PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestSessionOptimizationInPrompts::test_glm_prompt_contains_session_optimization PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_critical_included PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_security_included PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_normal_excluded PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_contains_plan_path PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_contains_context_notes_path PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_contains_checklist_path PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_contains_leader_duties PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsSection::test_three_docs_section_empty_for_unknown_level PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsInBuildPrompt::test_critical_prompt_includes_three_docs PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsInBuildPrompt::test_normal_prompt_excludes_three_docs PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestThreeDocsInBuildPrompt::test_security_prompt_includes_three_docs PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_critical_contains_codex_gate_command PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_critical_contains_sanitize_gate PASSED [ 90%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_security_contains_codex_gate_command PASSED [ 91%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_security_contains_sanitize_gate PASSED [ 91%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_normal_excludes_codex_gate PASSED [ 91%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_normal_excludes_sanitize_gate_detail PASSED [ 91%] ../../../workspace/tests/test_team_prompts.py::TestCodexAndSanitizeGateInPrompt::test_codex_command_contains_task_id PASSED [ 91%] ../../../workspace/tests/test_team_prompts.py::TestL1SmokeTestRecordFormat::test_prompt_contains_l1_record_format PASSED [ 91%] ../../../workspace/tests/test_team_prompts.py::TestL1SmokeTestRecordFormat::test_prompt_contains_incomplete_warning PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev1] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev2] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev3] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev4] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev5] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev6] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_is_symlink[dev7] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev1] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev2] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev3] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev4] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev5] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev6] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_verifiers_points_to_shared[dev7] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev1] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev2] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev3] PASSED [ 91%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev4] PASSED [ 92%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev5] PASSED [ 92%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev6] PASSED [ 92%] ../../../workspace/tests/test_team_structure.py::test_qc_verify_is_symlink[dev7] PASSED [ 92%] ../../../workspace/tests/test_team_structure.py::test_dev8_excluded PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestLoadData::test_load_existing_data PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestLoadData::test_load_missing_file PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestLoadData::test_default_has_items_list PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestLoadData::test_default_has_metadata PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestSaveData::test_save_creates_file PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestSaveData::test_save_updates_stats PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestSaveData::test_save_updates_last_updated PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestSaveData::test_save_creates_parent_dirs PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestSaveData::test_save_persists_to_disk PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestGenerateId::test_first_id_is_td_001 PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestGenerateId::test_increments_from_existing PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestGenerateId::test_finds_max_id PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestGenerateId::test_handles_gap_in_ids PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_returns_dict PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_status_open PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_persisted PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_with_tags PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_with_description PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_increments_id PASSED [ 92%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_default_tags_empty PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_all_required_fields_present PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_resolved_at_is_none PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestAddItem::test_add_item_resolution_note_is_none PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_all_items PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_filter_by_status_open PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_filter_by_status_resolved PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_filter_by_severity PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_sorted_by_severity PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_empty PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_resolved_items_after_open PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestListItems::test_list_combined_filters PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_sets_status PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_sets_resolved_at PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_sets_note PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_nonexistent_returns_none PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_already_resolved_returns_none PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_persists PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestResolveItem::test_resolve_without_note PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestShowItem::test_show_existing_item PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestShowItem::test_show_nonexistent_returns_none PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestShowItem::test_show_returns_correct_item PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestShowStats::test_stats_structure PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestShowStats::test_stats_after_add PASSED [ 93%] ../../../workspace/tests/test_tech_debt.py::TestShowStats::test_stats_after_resolve PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestShowStats::test_stats_empty_data PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemTable::test_print_with_items PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemTable::test_print_empty PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemTable::test_print_table_header PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemTable::test_print_multiple_items PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemDetail::test_print_detail PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemDetail::test_print_resolved_detail PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemDetail::test_print_detail_without_description PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestPrintItemDetail::test_print_detail_without_tags PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_add_command PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_list_command PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_list_command_with_filters PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_resolve_command PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_show_command PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_stats_command PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_no_command_exits PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_show_nonexistent_exits PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_add_command_with_tags_and_desc PASSED [ 94%] ../../../workspace/tests/test_tech_debt.py::TestCLIMain::test_resolve_command_without_note PASSED [ 94%] ../../../workspace/tests/test_three_docs_check.py::test_pass_complete_docs PASSED [ 94%] ../../../workspace/tests/test_three_docs_check.py::test_warn_status_draft PASSED [ 94%] ../../../workspace/tests/test_three_docs_check.py::test_fail_missing_directory PASSED [ 94%] ../../../workspace/tests/test_three_docs_check.py::test_skip_no_docs_dir PASSED [ 94%] ../../../workspace/tests/test_three_docs_check.py::test_fail_broken_yaml PASSED [ 95%] ../../../workspace/tests/test_three_docs_check.py::test_warn_low_checklist PASSED [ 95%] ../../../workspace/tests/test_three_docs_check.py::test_warn_placeholder_unfilled PASSED [ 95%] ../../../workspace/tests/test_three_docs_check.py::test_fail_missing_files PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_init_from_env PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_init_from_args PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_load_session_file_not_found PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_load_session_success PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_check_session_valid_true PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_check_session_valid_expired PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_publish_post_private PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_publish_post_with_tags PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_publish_post_session_expired PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_publish_post_failure PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_edit_post_success PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_get_post_status PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_upload_image_success PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_close PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_visibility_default_private PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_pipeline_parse_html_title PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_pipeline_parse_html_tags PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_pipeline_file_not_found PASSED [ 95%] ../../../workspace/tests/test_tistory_publisher.py::test_pipeline_publish_flow PASSED [ 95%] ../../../workspace/tests/test_todo_manager.py::TestLoadSave::test_load_empty PASSED [ 95%] ../../../workspace/tests/test_todo_manager.py::TestLoadSave::test_load_existing PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestLoadSave::test_save_creates_file PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestLoadSave::test_save_creates_backup PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestLoadSave::test_atomic_write PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestLoadSave::test_json_validation PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestList::test_list_all PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestList::test_list_filter_project PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestList::test_list_filter_status PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestShow::test_show_existing PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestShow::test_show_not_found PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestAdd::test_add_minimal PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestAdd::test_add_full PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestAdd::test_auto_id_generation PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestUpdate::test_update_status PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestUpdate::test_update_priority PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestUpdate::test_update_not_found PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestRemove::test_remove_with_confirm PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestRemove::test_remove_force PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestRemove::test_remove_creates_backup PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestSubAdd::test_sub_add PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestSubDone::test_sub_done_by_index PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestSubDone::test_sub_done_by_match PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestSubDone::test_sub_done_invalid_index PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestSubDone::test_sub_done_no_match PASSED [ 96%] ../../../workspace/tests/test_todo_manager.py::TestLink::test_link_new PASSED [ 97%] ../../../workspace/tests/test_todo_manager.py::TestLink::test_link_duplicate PASSED [ 97%] ../../../workspace/tests/test_todo_manager.py::TestJsonIntegrity::test_save_validates_json PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_sync_task_completion_match PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_sync_task_completion_no_match PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_sync_task_completion_already_done PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_sync_issue_all_done PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_retroactive_sync PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_link_task_to_issue PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_link_task_to_issue_with_sub_item_title PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_backup_created PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_no_reverse_done PASSED [ 97%] ../../../workspace/tests/test_todo_sync.py::test_linked_tasks_match PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG1SelectiveKnowhowLoading::test_default_phase_group_loads_all_three PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG1SelectiveKnowhowLoading::test_copy_phase_group PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG1SelectiveKnowhowLoading::test_design_phase_group PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG1SelectiveKnowhowLoading::test_final_phase_group_explicit PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG1SelectiveKnowhowLoading::test_invalid_phase_group_raises PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG1SelectiveKnowhowLoading::test_backward_compatibility PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_no_category_a_details PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_no_category_b_details PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_no_fail_categories_details PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_no_escalation_details PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_qc_loading_note_present PASSED [ 97%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_phase_list_preserved PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG2OverviewQCRemoval::test_start_condition_preserved PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_escalation_rules_file_exists PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_escalation_rules_file_content PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_phase0_uses_reference PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_phase1_uses_reference PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_phase2_uses_reference PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_phase3_uses_reference PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_phase4_uses_reference PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG3EscalationDedup::test_phase3_5_uses_reference PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG4SubagentResultRules::test_marketing_prompt_contains_subagent_rules PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG4SubagentResultRules::test_design_prompt_contains_subagent_rules PASSED [ 98%] ../../../workspace/tests/test_token_optimization_green.py::TestG4SubagentResultRules::test_composite_prompt_contains_subagent_rules PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_trust_map_contains_all_dimensions PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_trust_map_verifier_mapping PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_api_health_in_independent PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_build_trust_summary_all_pass PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_build_trust_summary_one_fail PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_build_trust_summary_skip_not_fail PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_trust_summary_schema PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_feature_flag_off_no_trust_summary PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_feature_flag_on_includes_trust_summary PASSED [ 98%] ../../../workspace/tests/test_trust_tagging.py::test_mapping_coverage_original_9 PASSED [ 98%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_valid_two_teams PASSED [ 98%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_valid_three_teams PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_valid_with_spaces PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_single_team_raises PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_empty_string_raises PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_consecutive_commas PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_four_teams_exceeds_max PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_unknown_team_raises PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_dev_team_not_allowed PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_duplicate_teams_raises PASSED [ 99%] ../../../workspace/tests/test_validate_composite.py::TestValidateCompositeTeams::test_returns_list PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_style_check_skip_no_files PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_style_check_skip_no_python PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_style_check_fail_threshold PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_scope_check_skip_no_expected PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_extract_files_from_report_nonexistent PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_extract_files_from_report_table PASSED [ 99%] ../../../workspace/tests/test_verifiers.py::test_scope_check_pass_all_expected PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestAutoFixClaudeCommand::test_no_print_flag_in_subprocess_call PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestAutoFixClaudeCommand::test_dangerously_skip_permissions_in_claude_call PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestAutoFixClaudeCommand::test_p_flag_in_claude_call PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestAutoFixCollectMode::test_subprocess_not_called_in_collect_mode PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestAutoFixCollectMode::test_executed_false_in_collect_mode PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestGeminiRetryCodePresence::test_gemini_retry_keyword_exists PASSED [ 99%] ../../../workspace/tests/test_worktree_auto_fix_1993.py::TestGeminiRetryCodePresence::test_not_gemini_found_and_pr_number_condition_exists PASSED [100%] =============================== warnings summary =============================== ../../../../../usr/lib/python3.12/unittest/mock.py:1129 /usr/lib/python3.12/unittest/mock.py:1129: PytestCollectionWarning: cannot collect 'test_runner' because it is not a function. def __call__(self, /, *args, **kwargs): ../../../workspace/dashboard/routes_post.py:59 /home/jay/workspace/dashboard/routes_post.py:59: DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13 import cgi -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ================================ tests coverage ================================ _______________ coverage: platform linux, python 3.12.3-final-0 ________________ Name Stmts Miss Cover Missing ----------------------------------------------------------------------------------------------------- /home/jay/workspace/chain.py 272 48 82% 35-37, 132-134, 136, 260-261, 284-296, 300-301, 381-386, 485-487, 499-549, 553 /home/jay/workspace/chain_manager.py 434 103 76% 35-37, 46-48, 55-58, 64-66, 72-74, 106-112, 119-120, 138-147, 162-163, 173-174, 187-188, 203, 230-231, 237-239, 256, 272-273, 293-295, 319-320, 388, 427-429, 551-559, 599-600, 638-639, 672-673, 683, 686, 689-690, 727-729, 791-847, 851 /home/jay/workspace/config/loader.py 94 19 80% 67-71, 83, 98, 100, 116-117, 133, 140-141, 144, 165-171 /home/jay/workspace/conftest.py 9 0 100% /home/jay/workspace/content-pipeline/__init__.py 0 0 100% /home/jay/workspace/content-pipeline/auto_approve.py 110 110 0% 11-216 /home/jay/workspace/content-pipeline/hook_scorer.py 93 93 0% 11-197 /home/jay/workspace/content-pipeline/tests/__init__.py 0 0 100% /home/jay/workspace/content-pipeline/tests/test_auto_approve.py 80 80 0% 2-150 /home/jay/workspace/content-pipeline/tests/test_hook_scorer.py 94 94 0% 2-151 /home/jay/workspace/cross_model_review.py 85 39 54% 41-47, 90, 141-172, 194-221, 225-243, 247 /home/jay/workspace/dashboard/__init__.py 0 0 100% /home/jay/workspace/dashboard/absorption.py 78 60 23% 22-23, 37-39, 61-133, 153-161, 166-175 /home/jay/workspace/dashboard/ads_integration.py 396 350 12% 54-55, 67-69, 75-77, 84-86, 107-119, 124-130, 136-145, 150-156, 161-175, 199-207, 218-254, 265-310, 321-392, 403-443, 459-467, 478-543, 554-593, 604-671, 682-703, 719-757, 767-775 /home/jay/workspace/dashboard/auth.py 29 29 0% 9-67 /home/jay/workspace/dashboard/auto_reload.py 67 67 0% 9-100 /home/jay/workspace/dashboard/blog_engine.py 244 191 22% 18-19, 81-86, 98, 103-292, 301-338, 344-354, 359-422, 433-482, 487-495, 506-548, 559-636 /home/jay/workspace/dashboard/blog_writer.py 182 113 38% 29-31, 47-49, 112-152, 156-181, 205, 207-249, 287-288, 304-332, 361-362, 369-463 /home/jay/workspace/dashboard/data_loader.py 1393 1230 12% 41-47, 88-94, 108-110, 120, 137-143, 152-158, 167-177, 186-191, 198-209, 222-236, 240-246, 256-434, 438-483, 494-539, 543-561, 565-576, 580-583, 587-592, 596-603, 607-617, 621-634, 638-657, 661-700, 704-775, 783-840, 852-913, 917-1040, 1044-1086, 1091-1110, 1114-1125, 1129-1150, 1154-1193, 1199-1204, 1214-1322, 1326-1409, 1428-1518, 1525-1537, 1541-1618, 1631-1664, 1673-1682, 1693-1715, 1720-1943, 1948-2009, 2020-2350, 2356, 2360, 2365, 2419-2539, 2554-2621 /home/jay/workspace/dashboard/extract_banner_html.py 140 140 0% 14-302 /home/jay/workspace/dashboard/helpers.py 343 152 56% 35-46, 60, 70, 85, 95-96, 101, 139, 141-142, 203, 209-212, 269, 272-273, 277-294, 298-327, 331-365, 374-379, 420-421, 460-461, 495-521, 543-608 /home/jay/workspace/dashboard/routes_get.py 1449 1310 10% 121-125, 139-140, 160-161, 182-183, 198-199, 243-417, 423-489, 494-589, 601-615, 620-638, 643-656, 661-685, 690-732, 738-758, 768, 784-808, 813-819, 824-829, 834-849, 855-857, 862-868, 873-875, 880-882, 887-888, 900-902, 907-909, 914-916, 921-923, 928-929, 934-935, 940-961, 966-968, 980-996, 1001-1022, 1027-1038, 1043-1049, 1054-1062, 1067-1123, 1128-1317, 1322-1324, 1329-1344, 1349-1351, 1362-1368, 1373-1375, 1380, 1385-1411, 1416, 1421-1448, 1454-1461, 1478-1541, 1546, 1551-1558, 1569, 1596-1602, 1625-1626, 1634-1655, 1668-1670, 1675-1677, 1682-1685, 1690, 1695-1697, 1702-1703, 1708, 1713, 1718-1746, 1751-1788, 1795-1807, 1822-1844, 1857-1868, 1873-1964, 1969-1989, 1994-2042, 2048-2067, 2072-2083, 2100-2110, 2115-2186, 2200-2219, 2227-2255, 2260-2270, 2275-2314, 2330-2396, 2401-2508, 2515-2523, 2530-2542, 2558-2584, 2599-2655 /home/jay/workspace/dashboard/routes_post.py 1213 1103 9% 104-105, 140-141, 161-162, 173-174, 183-184, 196-199, 205-206, 208-209, 221-319, 335-383, 392-399, 404-414, 419-428, 433-467, 472-483, 494, 525, 533, 543-544, 549-592, 597-604, 609-634, 639-713, 718-791, 796-932, 937-974, 979-1028, 1033-1066, 1071-1105, 1111-1170, 1175-1191, 1197-1266, 1271-1417, 1423-1521, 1527-1566, 1572-1742, 1748-1800, 1805-1863, 1868-1882, 1887-1976, 1981-2040, 2045-2073, 2078-2083, 2092-2111, 2116-2142, 2147-2182, 2191-2210, 2215-2237, 2242-2284, 2289-2305 /home/jay/workspace/dashboard/server.py 344 227 34% 33, 42-45, 316-317, 321-325, 334-341, 348, 351, 353-358, 362-363, 370-388, 392-393, 405-431, 441-442, 448-460, 467-476, 482, 486, 490-594, 605, 634, 640-642, 649-652, 657-683, 687, 692-717 /home/jay/workspace/dashboard/server_utils.py 161 114 29% 73-84, 89-93, 98-105, 110-114, 119-120, 125-136, 141-172, 177-200, 205-211, 216-228, 251-255, 260-278 /home/jay/workspace/dashboard/system_monitor.py 375 355 5% 24-25, 38-66, 81-105, 115-159, 169-496, 511-599, 610-631, 649-726, 748-773 /home/jay/workspace/dashboard/test_blog_image_classify.py 36 36 0% 2-58 /home/jay/workspace/dashboard/test_server.py 715 715 0% 3-1849 /home/jay/workspace/dashboard/wiki_engine.py 205 176 14% 21-22, 72-80, 85-103, 108-154, 159-160, 165-179, 184-233, 242-261, 266-282, 287-292, 297-309, 314-326, 331-351, 362-387, 392-395, 400 /home/jay/workspace/decision_logger.py 91 91 0% 21-199 /home/jay/workspace/dispatch.py 1753 631 64% 32-33, 38-58, 67-69, 76-79, 96, 112-114, 120-122, 128-130, 136-138, 144-146, 152-154, 167-169, 207-237, 276-302, 325-331, 337-338, 342, 418-420, 425-431, 439-440, 446, 463-464, 472-473, 482-497, 513-514, 522-533, 541-554, 582-584, 620-621, 657-658, 664, 682, 690, 695-698, 702-705, 757-758, 785, 805, 822-872, 995-998, 1029-1031, 1105, 1150-1152, 1166-1168, 1184-1185, 1200-1218, 1234, 1244-1245, 1258-1299, 1333, 1363-1364, 1378-1379, 1436-1437, 1493-1494, 1517, 1526-1527, 1531-1532, 1542-1543, 1549-1550, 1588-1600, 1607, 1613, 1631, 1643-1656, 1665-1679, 1739-1740, 1746-1748, 1807-1809, 1820, 1827-1828, 1842-1847, 1860-1861, 1883-1884, 1896-1904, 1917-1942, 1968-1982, 2025-2284, 2362-2411, 2438-2440, 2567, 2569, 2574-2575, 2602-2614, 2626-2627, 2635-2638, 2654-2660, 2669, 2713-2714, 2744-2747, 2754, 2772, 2788-2789, 2820-2825, 2829, 2835, 2840, 2843, 2852-2855, 2867, 2871-2881, 2974-2975, 2982-2986, 3030, 3039-3040, 3051, 3090-3091, 3126-3127, 3134-3135, 3273-3275, 3279, 3283-3287, 3291, 3297-3301, 3303-3304, 3313-3330, 3335, 3350-3357, 3374-3385, 3390-3394, 3428 /home/jay/workspace/glm-coder.py 18 18 0% 6-40 /home/jay/workspace/group_chat.py 663 154 77% 229, 273-284, 436-437, 462-463, 484, 500, 530, 558-562, 594-595, 619-627, 650-651, 664-665, 671-694, 704-742, 797, 823-832, 863, 891-897, 923, 1086-1087, 1092, 1117-1118, 1137-1211, 1215 /home/jay/workspace/hooks/circuit_breaker.py 90 27 70% 147-183, 187 /home/jay/workspace/inbox_utils.py 164 164 0% 13-255 /home/jay/workspace/kickoff.py 148 148 0% 4-244 /home/jay/workspace/libs/__init__.py 10 10 0% 7-20 /home/jay/workspace/libs/chunker.py 86 86 0% 12-204 /home/jay/workspace/libs/doc_parser.py 219 219 0% 8-403 /home/jay/workspace/libs/embedding_service.py 52 52 0% 9-159 /home/jay/workspace/libs/ingest.py 57 57 0% 11-194 /home/jay/workspace/libs/search.py 51 51 0% 16-239 /home/jay/workspace/libs/tests/__init__.py 0 0 100% /home/jay/workspace/libs/tests/conftest.py 5 5 0% 3-11 /home/jay/workspace/libs/tests/test_chunker.py 117 117 0% 5-232 /home/jay/workspace/libs/tests/test_comparison.py 164 164 0% 8-331 /home/jay/workspace/libs/tests/test_doc_parser.py 153 153 0% 6-311 /home/jay/workspace/libs/tests/test_embedding_service.py 160 160 0% 7-331 /home/jay/workspace/libs/tests/test_ingest.py 226 226 0% 7-477 /home/jay/workspace/libs/tests/test_search.py 383 383 0% 8-752 /home/jay/workspace/memory/task-timer.py 664 223 66% 29-31, 320, 335-349, 355-392, 408, 414-415, 420, 440-441, 540-546, 552-558, 689-692, 717-718, 783-831, 888-893, 914-915, 939-944, 951-955, 972-977, 992-1008, 1052-1138, 1141-1185, 1188-1200, 1214 /home/jay/workspace/memory/todo-manager.py 172 60 65% 110-111, 123-124, 131-132, 137-138, 157-158, 173-174, 201-202, 214-215, 226-285, 289 /home/jay/workspace/memory/todo_utils.py 47 1 98% 82 /home/jay/workspace/orchestrator.py 408 300 26% 25-27, 34-36, 43-45, 51-53, 59-61, 109-110, 116-139, 145, 151-154, 159-185, 190-191, 213-225, 229-236, 240-245, 249-263, 267-268, 272-281, 287-290, 295-297, 302-306, 312-319, 346-347, 354-355, 360-377, 381-384, 388-392, 397-430, 434-442, 446-471, 481-494, 498, 518-521, 535-537, 541-557, 561-563, 567-626, 630-634, 639-648, 653-674, 678 /home/jay/workspace/orchestrator/__init__.py 8 0 100% /home/jay/workspace/orchestrator/auto_orch.py 413 413 0% 16-843 /home/jay/workspace/orchestrator/event_bus.py 43 43 0% 10-106 /home/jay/workspace/orchestrator/pipeline_validator.py 111 111 0% 20-200 /home/jay/workspace/orchestrator/team_lock.py 38 38 0% 7-75 /home/jay/workspace/orchestrator/tests/__init__.py 0 0 100% /home/jay/workspace/orchestrator/tests/test_enabled_field.py 57 57 0% 11-137 /home/jay/workspace/orchestrator/tests/test_phase2.py 242 242 0% 12-554 /home/jay/workspace/orchestrator/tests/test_phase3.py 313 313 0% 11-591 /home/jay/workspace/orchestrator/tests/test_phase4.py 347 347 0% 16-597 /home/jay/workspace/orchestrator/tests/test_phase5.py 286 286 0% 11-601 /home/jay/workspace/orchestrator/tests/test_phase6.py 143 143 0% 15-268 /home/jay/workspace/orchestrator/token_ledger.py 71 71 0% 7-157 /home/jay/workspace/prompts/__init__.py 2 0 100% /home/jay/workspace/prompts/gate_instructions.py 25 0 100% /home/jay/workspace/prompts/image_workflow.py 215 63 71% 17, 977-978, 981, 984-987, 990-994, 1001-1005, 1014, 1016, 1023-1026, 1032-1038, 1049, 1134-1183 /home/jay/workspace/prompts/team_prompts.py 279 24 91% 37, 217-218, 256, 273-274, 320-321, 326, 513-522, 559, 564-566, 692, 718, 803, 846, 865, 867, 929 /home/jay/workspace/prompts/test_consistency.py 27 27 0% 4-45 /home/jay/workspace/prompts/test_team_prompts.py 172 172 0% 6-270 /home/jay/workspace/report_parser.py 136 68 50% 44-51, 65-67, 92-122, 131-133, 188, 192, 222-239, 243-273 /home/jay/workspace/scripts/__init__.py 0 0 100% /home/jay/workspace/scripts/absorption-health-check.py 187 187 0% 13-390 /home/jay/workspace/scripts/activity-watcher.py 229 229 0% 12-377 /home/jay/workspace/scripts/add-team.py 111 2 98% 161, 246 /home/jay/workspace/scripts/analyze_ab.py 93 32 66% 26-27, 39, 56-57, 75-76, 106, 125, 135, 150-194, 198 /home/jay/workspace/scripts/ast_dependency_map.py 245 245 0% 17-523 /home/jay/workspace/scripts/auto_merge.py 824 312 62% 31, 36-41, 111-112, 195-200, 235-239, 244-249, 287-288, 318-329, 375-379, 390-429, 445-468, 480, 486-487, 569-573, 584-586, 594-601, 613-620, 648-653, 658-676, 734, 772-773, 784-785, 808, 812-814, 821, 855, 859-861, 882, 884-885, 907, 911-913, 937, 940-941, 973-974, 1042-1043, 1062-1109, 1148-1149, 1158, 1198, 1203-1204, 1217-1239, 1272-1273, 1284-1285, 1337-1339, 1351-1352, 1363-1411, 1431-1450, 1484, 1487-1488, 1523-1532, 1571-1632, 1697-1701, 1709-1714, 1725-1726, 1744-1756, 1761-1775, 1779 /home/jay/workspace/scripts/autoresearch/__init__.py 0 0 100% /home/jay/workspace/scripts/autoresearch/capture.py 32 32 0% 14-94 /home/jay/workspace/scripts/autoresearch/changelog.py 57 57 0% 3-213 /home/jay/workspace/scripts/autoresearch/claude_runner.py 14 14 0% 3-49 /home/jay/workspace/scripts/autoresearch/judge.py 52 52 0% 3-142 /home/jay/workspace/scripts/autoresearch/mutator.py 31 31 0% 3-110 /home/jay/workspace/scripts/autoresearch/reporter.py 109 109 0% 3-196 /home/jay/workspace/scripts/autoresearch/runner.py 213 213 0% 8-515 /home/jay/workspace/scripts/autoresearch/skill_executor.py 60 60 0% 3-134 /home/jay/workspace/scripts/autoresearch/tests/__init__.py 0 0 100% /home/jay/workspace/scripts/autoresearch/tests/test_capture.py 171 171 0% 12-365 /home/jay/workspace/scripts/autoresearch/tests/test_changelog.py 179 179 0% 3-378 /home/jay/workspace/scripts/autoresearch/tests/test_claude_runner.py 91 91 0% 3-140 /home/jay/workspace/scripts/autoresearch/tests/test_judge.py 183 183 0% 3-388 /home/jay/workspace/scripts/autoresearch/tests/test_mutator.py 98 98 0% 3-171 /home/jay/workspace/scripts/autoresearch/tests/test_reporter.py 223 223 0% 3-472 /home/jay/workspace/scripts/autoresearch/tests/test_runner.py 489 489 0% 3-1309 /home/jay/workspace/scripts/autoresearch/tests/test_skill_executor.py 112 112 0% 3-215 /home/jay/workspace/scripts/blog/__init__.py 0 0 100% /home/jay/workspace/scripts/blog/publish_pipeline.py 139 86 38% 94-99, 104-105, 120-175, 193-284, 289-300, 304 /home/jay/workspace/scripts/blog/tistory_publisher.py 267 75 72% 64-76, 89, 126, 128, 172-197, 247-249, 310-313, 322-326, 339-344, 353-354, 365-366, 382, 413, 431-432, 451-455, 479, 508-512, 534, 540, 570, 575-579, 603, 606 /home/jay/workspace/scripts/bot-status-watchdog.py 178 60 66% 37, 43-44, 60-61, 68, 71-73, 87-89, 135-136, 138-140, 153-168, 181-193, 253-254, 282-283, 293, 299-310, 314-321, 325 /home/jay/workspace/scripts/browser.py 226 226 0% 4-425 /home/jay/workspace/scripts/canary-test.py 181 181 0% 8-318 /home/jay/workspace/scripts/check-dev3.py 217 217 0% 11-481 /home/jay/workspace/scripts/check-dev8.py 217 217 0% 11-481 /home/jay/workspace/scripts/ci-report.py 81 81 0% 7-150 /home/jay/workspace/scripts/cleanup-workspace.py 128 128 0% 10-195 /home/jay/workspace/scripts/code-review.py 203 203 0% 24-580 /home/jay/workspace/scripts/codex_gate_check.py 170 66 61% 22-23, 33-35, 58-59, 109, 117-124, 132, 154-155, 171-175, 205-255, 277, 282, 287-289, 342-360 /home/jay/workspace/scripts/collect_metrics.py 192 86 55% 36-38, 43-66, 81-83, 101-103, 128, 136-137, 153-180, 185-193, 208-216, 237, 241-243, 250, 254-255, 268, 292, 301-314, 318 /home/jay/workspace/scripts/crawl_utils.py 108 108 0% 8-289 /home/jay/workspace/scripts/curl_to_fetcher.py 92 92 0% 3-177 /home/jay/workspace/scripts/design_md_search.py 383 383 0% 6-605 /home/jay/workspace/scripts/diff-aware-qa.py 132 132 0% 8-253 /home/jay/workspace/scripts/done-watcher.py 141 49 65% 41-42, 49, 52-54, 65-67, 93-96, 121, 134, 137, 151-168, 198-200, 205-216, 220-227, 231 /home/jay/workspace/scripts/drive-change-log.py 166 166 0% 22-295 /home/jay/workspace/scripts/extract-changed-files.py 183 183 0% 16-374 /home/jay/workspace/scripts/file-cleanup.py 278 278 0% 17-696 /home/jay/workspace/scripts/file_cleanup.py 278 278 0% 17-696 /home/jay/workspace/scripts/g3_independent_verifier.py 351 112 68% 91, 99, 181-187, 257-260, 274, 281-283, 294-311, 334-340, 360-391, 451-463, 469-526, 535-540, 689-691, 701, 714-718, 763 /home/jay/workspace/scripts/gen-skill-docs.py 105 105 0% 8-234 /home/jay/workspace/scripts/generate_file_summaries.py 215 215 0% 12-375 /home/jay/workspace/scripts/google_ads_cli.py 172 172 0% 4-406 /home/jay/workspace/scripts/health-score.py 6 6 0% 6-14 /home/jay/workspace/scripts/health_score.py 290 290 0% 7-559 /home/jay/workspace/scripts/hybrid_server.py 66 66 0% 9-145 /home/jay/workspace/scripts/insurance_crawler.py 86 86 0% 12-266 /home/jay/workspace/scripts/insurance_spider.py 126 126 0% 18-360 /home/jay/workspace/scripts/invoke_venus.py 34 34 0% 3-86 /home/jay/workspace/scripts/learning-analyzer.py 170 170 0% 20-260 /home/jay/workspace/scripts/learnings_archiver.py 149 149 0% 8-331 /home/jay/workspace/scripts/lint-workspace.py 92 92 0% 4-162 /home/jay/workspace/scripts/meeting-audit.py 149 23 85% 51, 121, 144, 238, 277-278, 326, 348-381 /home/jay/workspace/scripts/memory-janitor.py 224 224 0% 7-467 /home/jay/workspace/scripts/memory-search.py 85 85 0% 8-155 /home/jay/workspace/scripts/merge_refined.py 58 58 0% 2-82 /home/jay/workspace/scripts/meta_ads_cli.py 154 154 0% 4-341 /home/jay/workspace/scripts/notify-completion.py 289 126 56% 20, 29-30, 61-82, 100-102, 105-107, 110-112, 115-117, 140-141, 182-183, 195-200, 202-204, 206-208, 215-228, 233-242, 254-258, 268-304, 327-328, 358-360, 378, 399-404, 417-420, 436-437, 456-459, 469-470, 475-483, 489 /home/jay/workspace/scripts/orphan-watchdog.py 38 7 82% 61, 65-66, 84-86, 90 /home/jay/workspace/scripts/output-review.py 96 96 0% 2-200 /home/jay/workspace/scripts/output_review_ai.py 113 113 0% 3-200 /home/jay/workspace/scripts/output_review_helpers.py 108 108 0% 2-199 /home/jay/workspace/scripts/passive_feedback.py 112 112 0% 3-189 /home/jay/workspace/scripts/pattern-detector.py 113 113 0% 15-301 /home/jay/workspace/scripts/preview_manager.py 204 204 0% 8-383 /home/jay/workspace/scripts/project-map.py 861 861 0% 16-1574 /home/jay/workspace/scripts/refine_threads.py 378 378 0% 8-704 /home/jay/workspace/scripts/report_utils.py 232 194 16% 30-98, 119-279, 294-300, 304, 311, 313-316, 318, 322-324, 331, 333, 335, 345-357, 363 /home/jay/workspace/scripts/secret-rotation-check.py 83 83 0% 7-158 /home/jay/workspace/scripts/session_watchdog.py 49 6 88% 27, 94, 134-135, 152, 156 /home/jay/workspace/scripts/skill-judge.py 185 185 0% 15-450 /home/jay/workspace/scripts/skill-quality-check.py 182 105 42% 53, 67, 79-88, 99-103, 130-166, 185-186, 190-191, 193-194, 219-242, 251, 258-336, 340 /home/jay/workspace/scripts/split_threads.py 21 21 0% 2-34 /home/jay/workspace/scripts/tech-debt.py 170 3 98% 91-92, 326 /home/jay/workspace/scripts/test_utm_builder.py 182 182 0% 3-557 /home/jay/workspace/scripts/thread_dumper.py 31 31 0% 2-64 /home/jay/workspace/scripts/token-tracker.py 139 139 0% 4-197 /home/jay/workspace/scripts/transcript-learner.py 91 91 0% 12-251 /home/jay/workspace/scripts/unify_before_starting.py 57 57 0% 7-96 /home/jay/workspace/scripts/update-system-spec.py 228 228 0% 8-425 /home/jay/workspace/scripts/utm_builder.py 132 132 0% 10-315 /home/jay/workspace/scripts/validate-output-structure.py 173 173 0% 10-403 /home/jay/workspace/scripts/verify_done.py 32 5 84% 76-80 /home/jay/workspace/scripts/weekly-report.py 231 231 0% 7-439 /home/jay/workspace/scripts/weekly-retro.py 6 6 0% 6-14 /home/jay/workspace/scripts/weekly_retro.py 194 194 0% 11-447 /home/jay/workspace/scripts/whisper-compile.py 560 560 0% 13-929 /home/jay/workspace/scripts/whisper-save-guidance.py 115 115 0% 18-246 /home/jay/workspace/scripts/worktree_manager.py 519 458 12% 34-48, 85-86, 101-128, 141-165, 175, 180, 194-220, 251-297, 306-343, 357-421, 430-482, 497, 581-619, 624-644, 674-986, 1000-1031, 1046-1103, 1116-1160, 1170-1210, 1215-1248, 1252 /home/jay/workspace/scripts/youtube-check-new-transcripts.py 94 94 0% 17-220 /home/jay/workspace/scripts/youtube-transcribe.py 78 78 0% 18-249 /home/jay/workspace/sync-check.py 300 300 0% 15-605 /home/jay/workspace/teams/dev1/qc/__init__.py 0 0 100% /home/jay/workspace/teams/shared/qc_verify.py 361 141 61% 20, 44-45, 49-50, 55-58, 63-69, 74-80, 105-116, 130, 134-138, 144-149, 272, 304-309, 383-386, 390, 393, 396, 415-421, 436-528, 596, 651-659, 680-685, 688-701, 711-715, 728, 755, 758, 765 /home/jay/workspace/teams/shared/verifiers/__init__.py 2 0 100% /home/jay/workspace/teams/shared/verifiers/api_health.py 45 39 13% 14-51, 65-81, 85-92 /home/jay/workspace/teams/shared/verifiers/claude_md_check.py 32 28 12% 17-49, 53-58 /home/jay/workspace/teams/shared/verifiers/critical_gap.py 57 48 16% 26-32, 47-51, 68-127, 133-136 /home/jay/workspace/teams/shared/verifiers/data_integrity.py 94 81 14% 19-31, 36-42, 50-76, 90-167, 171-176 /home/jay/workspace/teams/shared/verifiers/duplicate_check.py 78 69 12% 15-19, 25-39, 47-70, 84-138, 142-147 /home/jay/workspace/teams/shared/verifiers/file_check.py 136 125 8% 18-30, 38-53, 61-86, 103-133, 149-225, 229-236 /home/jay/workspace/teams/shared/verifiers/file_touch_ratio_check.py 63 19 70% 30-36, 58-64, 80-81, 152-168 /home/jay/workspace/teams/shared/verifiers/planned_check.py 34 1 97% 43 /home/jay/workspace/teams/shared/verifiers/png_check.py 25 23 8% 21-65 /home/jay/workspace/teams/shared/verifiers/pyright_check.py 61 53 13% 18-27, 50-117, 124-128 /home/jay/workspace/teams/shared/verifiers/schema_contract.py 291 272 7% 33-37, 45-61, 69-78, 83-91, 98-107, 115-179, 187-200, 216-413, 437-497, 501-509 /home/jay/workspace/teams/shared/verifiers/scope_check.py 88 43 51% 33-35, 73-74, 86, 97-108, 117-136, 140-171 /home/jay/workspace/teams/shared/verifiers/signature_check.py 100 16 84% 37, 45, 78, 106-109, 126, 138-143, 147, 162 /home/jay/workspace/teams/shared/verifiers/spec_compliance.py 55 46 16% 68-69, 84-88, 102-108, 131-199 /home/jay/workspace/teams/shared/verifiers/style_check.py 61 46 25% 29, 31, 33, 39-119, 123-127 /home/jay/workspace/teams/shared/verifiers/symbol_existence_check.py 131 31 76% 52-57, 123-128, 134, 155-156, 175, 183-184, 199, 211, 231-232, 267-283 /home/jay/workspace/teams/shared/verifiers/tdd_check.py 137 124 9% 37-53, 68-86, 106-169, 185-222, 255-294, 301-333 /home/jay/workspace/teams/shared/verifiers/test_runner.py 101 41 59% 29, 55, 76-77, 89, 91-97, 119-125, 162-192, 199-206 /home/jay/workspace/teams/shared/verifiers/three_docs_check.py 112 22 80% 31, 43, 45-46, 124-128, 144-145, 177, 209-221 /home/jay/workspace/tests/conftest.py 51 6 88% 20, 52-53, 68-70, 98 /home/jay/workspace/tests/fakes/__init__.py 3 0 100% /home/jay/workspace/tests/fakes/fake_dispatch.py 29 0 100% /home/jay/workspace/tests/fakes/fake_llm_client.py 29 0 100% /home/jay/workspace/tests/fakes/test_fakes.py 139 0 100% /home/jay/workspace/tests/integration/__init__.py 0 0 100% /home/jay/workspace/tests/integration/test_3docs_lifecycle.py 74 1 99% 87 /home/jay/workspace/tests/integration/test_affected_files_overlap.py 65 0 100% /home/jay/workspace/tests/integration/test_batch_completion.py 69 0 100% /home/jay/workspace/tests/integration/test_codex_gate.py 116 0 100% /home/jay/workspace/tests/integration/test_g3_verifier.py 152 0 100% /home/jay/workspace/tests/integration/test_gate_instructions.py 79 0 100% /home/jay/workspace/tests/integration/test_gemini_review.py 158 2 99% 241-242 /home/jay/workspace/tests/integration/test_graduated_auto_gate.py 160 0 100% /home/jay/workspace/tests/integration/test_phase1_integration.py 63 0 100% /home/jay/workspace/tests/integration/test_phase4_integration.py 143 2 99% 34, 254 /home/jay/workspace/tests/integration/test_sanitize_gate.py 125 0 100% /home/jay/workspace/tests/test_3docs_e2e.py 162 5 97% 43, 172-173, 179, 205 /home/jay/workspace/tests/test_1921b_team_scope.py 88 0 100% /home/jay/workspace/tests/test_ab_analysis.py 75 6 92% 45-47, 113, 120, 133 /home/jay/workspace/tests/test_absorption_health_check.py 439 15 97% 140, 319-320, 328-329, 381, 389-390, 455-462, 838, 849, 864-865 /home/jay/workspace/tests/test_add_team.py 371 0 100% /home/jay/workspace/tests/test_affected_files_overlap.py 94 0 100% /home/jay/workspace/tests/test_atomic_timer_write.py 259 7 97% 75, 94, 147, 202-203, 264, 497 /home/jay/workspace/tests/test_auto_merge.py 338 2 99% 37, 42 /home/jay/workspace/tests/test_auto_merge_ttl.py 98 2 98% 18, 23 /home/jay/workspace/tests/test_banner_versions.py 132 1 99% 20 /home/jay/workspace/tests/test_blog_writer_codex_companion.py 66 0 100% /home/jay/workspace/tests/test_bot_settings_sync.py 166 8 95% 86, 91-92, 110, 331-332, 386-387 /home/jay/workspace/tests/test_bot_watchdog.py 179 1 99% 318 /home/jay/workspace/tests/test_chain.py 445 2 99% 40, 57 /home/jay/workspace/tests/test_chain_manager.py 746 2 99% 36, 122 /home/jay/workspace/tests/test_collect_metrics.py 81 0 100% /home/jay/workspace/tests/test_composite_constants.py 36 1 97% 15 /home/jay/workspace/tests/test_composite_prompt.py 112 1 99% 17 /home/jay/workspace/tests/test_dashboard_todo_tabs.py 117 1 99% 28 /home/jay/workspace/tests/test_dispatch.py 1823 30 98% 35, 54, 60, 87, 234, 254, 271, 275, 451, 484, 1056, 1099, 1249-1250, 1385, 1467-1471, 1959, 1981, 2003, 2305, 3264, 3308, 3357, 3405, 3450, 3503 /home/jay/workspace/tests/test_dispatch_gate.py 221 0 100% /home/jay/workspace/tests/test_dispatch_memory_check.py 77 1 99% 33 /home/jay/workspace/tests/test_dispatch_phase_warn.py 65 0 100% /home/jay/workspace/tests/test_dispatch_platform_rules.py 45 0 100% /home/jay/workspace/tests/test_dispatch_resume.py 155 3 98% 25, 37, 333 /home/jay/workspace/tests/test_dispatch_routing.py 91 1 99% 29 /home/jay/workspace/tests/test_dispatch_task_docs.py 105 6 94% 20, 158-159, 164, 227-228 /home/jay/workspace/tests/test_dispatch_workflow.py 171 6 96% 38, 184-188 /home/jay/workspace/tests/test_done_watcher.py 86 1 99% 171 /home/jay/workspace/tests/test_ensure_bot_memory.py 92 8 91% 76-77, 87-89, 105-107, 171, 193 /home/jay/workspace/tests/test_env_loader.py 48 1 98% 105 /home/jay/workspace/tests/test_error_alert.py 134 1 99% 217 /home/jay/workspace/tests/test_feature_flags.py 105 5 95% 81-82, 182-183, 213 /home/jay/workspace/tests/test_file_touch_ratio_check.py 72 1 99% 57 /home/jay/workspace/tests/test_g3_verifier.py 316 0 100% /home/jay/workspace/tests/test_gemini_parser_1970.py 76 0 100% /home/jay/workspace/tests/test_google_ads_client.py 557 15 97% 120-128, 523, 549, 650, 679, 709, 917, 1076 /home/jay/workspace/tests/test_group_chat.py 1283 29 98% 43-46, 51, 53, 66, 72, 81, 86, 92, 103, 116-120, 275, 284, 356, 389, 418, 429, 445, 457, 471, 479, 583, 1311 /home/jay/workspace/tests/test_gstack_analysis.py 80 6 92% 27, 32, 48, 61, 96, 140 /home/jay/workspace/tests/test_hermes_audit.py 75 0 100% /home/jay/workspace/tests/test_hooks_enforcement.py 66 0 100% /home/jay/workspace/tests/test_image_workflow_v25.py 272 1 99% 30 /home/jay/workspace/tests/test_integration.py 234 4 98% 28, 93, 129, 131 /home/jay/workspace/tests/test_integration_modules.py 331 9 97% 30, 40-42, 47-49, 105, 167 /home/jay/workspace/tests/test_kickoff.py 141 0 100% /home/jay/workspace/tests/test_meeting_audit.py 348 18 95% 38-39, 239-241, 246-248, 651-652, 663-664, 680, 683-685, 694, 697-698 /home/jay/workspace/tests/test_memory_check.py 210 0 100% /home/jay/workspace/tests/test_memory_indexer.py 172 0 100% /home/jay/workspace/tests/test_memory_progressive.py 133 0 100% /home/jay/workspace/tests/test_meta_ads_client.py 418 1 99% 834 /home/jay/workspace/tests/test_model_map.py 54 0 100% /home/jay/workspace/tests/test_notify_completion.py 189 6 97% 157-158, 182-183, 193, 385 /home/jay/workspace/tests/test_orphan_watchdog.py 65 0 100% /home/jay/workspace/tests/test_planned_check.py 38 0 100% /home/jay/workspace/tests/test_progressive_disclosure.py 50 2 96% 76-77 /home/jay/workspace/tests/test_qc_gate.py 108 0 100% /home/jay/workspace/tests/test_qc_integration.py 98 1 99% 26 /home/jay/workspace/tests/test_qc_verify.py 156 1 99% 342 /home/jay/workspace/tests/test_regression.py 111 3 97% 23, 101, 107 /home/jay/workspace/tests/test_report_parser.py 65 1 98% 18 /home/jay/workspace/tests/test_rw_isolation.py 39 1 97% 63 /home/jay/workspace/tests/test_sanitize_gate.py 84 1 99% 11 /home/jay/workspace/tests/test_secret_rotation_check.py 54 0 100% /home/jay/workspace/tests/test_session_auto_compress.py 265 3 99% 28, 525-526 /home/jay/workspace/tests/test_session_integration.py 59 1 98% 25 /home/jay/workspace/tests/test_session_monitor.py 266 1 99% 29 /home/jay/workspace/tests/test_session_resilience.py 256 1 99% 33 /home/jay/workspace/tests/test_session_watchdog.py 186 1 99% 38 /home/jay/workspace/tests/test_signature_check.py 206 2 99% 208, 459 /home/jay/workspace/tests/test_skill_loader.py 178 0 100% /home/jay/workspace/tests/test_skill_quality_check.py 74 1 99% 18 /home/jay/workspace/tests/test_symbol_existence_check.py 43 0 100% /home/jay/workspace/tests/test_task522.py 50 20 60% 57-86 /home/jay/workspace/tests/test_task_1037_1_design_restriction.py 81 6 93% 58-59, 150-151, 160-161 /home/jay/workspace/tests/test_task_1044_1_archive_title_time.py 141 15 89% 55-56, 89-93, 110, 204, 208-209, 219, 239, 243-244 /home/jay/workspace/tests/test_task_1058_1_before_starting.py 84 11 87% 43-45, 65-66, 78, 97, 106-107, 173-174 /home/jay/workspace/tests/test_task_1085_1_sidebar_spacing.py 24 1 96% 21 /home/jay/workspace/tests/test_task_1096_1_org_details.py 47 2 96% 44-45 /home/jay/workspace/tests/test_task_1919.py 72 1 99% 79 /home/jay/workspace/tests/test_task_timer.py 770 0 100% /home/jay/workspace/tests/test_task_timer_qc.py 194 4 98% 35-38 /home/jay/workspace/tests/test_team_prompts.py 588 6 99% 26, 89, 358, 364, 1086, 1092 /home/jay/workspace/tests/test_team_structure.py 22 1 95% 34 /home/jay/workspace/tests/test_tech_debt.py 403 0 100% /home/jay/workspace/tests/test_three_docs_check.py 64 0 100% /home/jay/workspace/tests/test_tistory_publisher.py 326 16 95% 55, 70-75, 186, 192-203, 632-633 /home/jay/workspace/tests/test_todo_manager.py 237 0 100% /home/jay/workspace/tests/test_todo_sync.py 130 1 99% 33 /home/jay/workspace/tests/test_token_optimization_green.py 125 1 99% 20 /home/jay/workspace/tests/test_trust_tagging.py 89 1 99% 150 /home/jay/workspace/tests/test_validate_composite.py 43 1 98% 15 /home/jay/workspace/tests/test_verifiers.py 36 18 50% 8, 15, 20-23, 28-35, 40-41, 46-47, 61-72 /home/jay/workspace/tests/test_worktree_auto_fix_1993.py 63 0 100% /home/jay/workspace/tools/__init__.py 0 0 100% /home/jay/workspace/tools/ai-image-gen/image_router.py 338 293 13% 101-119, 139-161, 180-206, 215-231, 240-272, 288-381, 386-421, 430-483, 488-504, 509-525, 547-558, 583-737 /home/jay/workspace/tools/browser_router.py 71 71 0% 17-236 /home/jay/workspace/tools/dq_rules.py 68 46 32% 73-82, 96-107, 117-127, 132, 137, 142, 147, 153-169 /home/jay/workspace/tools/glm-call.py 138 138 0% 7-352 /home/jay/workspace/tools/glm-mcp/__init__.py 0 0 100% /home/jay/workspace/tools/glm-mcp/server.py 69 69 0% 3-322 /home/jay/workspace/tools/glm-mcp/tests/__init__.py 0 0 100% /home/jay/workspace/tools/glm-mcp/tests/test_server.py 218 218 0% 7-534 /home/jay/workspace/tools/image-skill-router.py 84 73 13% 147-208, 232-237, 246-263, 271-302, 306-323, 327 /home/jay/workspace/tools/lightpanda_crawler.py 204 204 0% 15-439 /home/jay/workspace/tools/modularity-check.py 448 448 0% 10-829 /home/jay/workspace/tools/naver-ads/__init__.py 0 0 100% /home/jay/workspace/tools/naver-ads/collect_sa_stats.py 133 133 0% 2-225 /home/jay/workspace/tools/naver-ads/sa_api_client.py 93 64 31% 18, 20-21, 34-40, 43-49, 52-53, 67-94, 97-98, 101-105, 108-109, 119-135 /home/jay/workspace/tools/naver-ads/tests/__init__.py 0 0 100% /home/jay/workspace/tools/naver-ads/tests/test_sa_api_client.py 115 115 0% 5-249 /home/jay/workspace/tools/tests/__init__.py 0 0 100% /home/jay/workspace/tools/tests/test_browser_router.py 265 265 0% 6-502 /home/jay/workspace/tools/tests/test_glm_call.py 334 334 0% 17-615 /home/jay/workspace/tools/tests/test_image_skill_router.py 161 161 0% 18-386 /home/jay/workspace/tools/tests/test_lightpanda.py 341 341 0% 8-586 /home/jay/workspace/tools/tests/test_lightpanda_integration.py 252 252 0% 12-471 /home/jay/workspace/tools/validate-design-brief.py 144 144 0% 15-306 /home/jay/workspace/utils/__init__.py 0 0 100% /home/jay/workspace/utils/approval.py 22 0 100% /home/jay/workspace/utils/atomic_write.py 54 33 39% 62-63, 86-107, 126-145 /home/jay/workspace/utils/audit_logger.py 44 12 73% 20, 22, 24, 117-128 /home/jay/workspace/utils/aux_llm_router.py 39 39 0% 13-156 /home/jay/workspace/utils/benchmark_skill_loading.py 91 91 0% 3-141 /home/jay/workspace/utils/bot_activity.py 33 14 58% 45, 48, 56-58, 70-80 /home/jay/workspace/utils/bot_status.py 177 73 59% 43-45, 55-57, 62-69, 74-86, 160-162, 171, 175-176, 180-181, 189, 209-213, 261-262, 273, 288-305, 317-345, 361 /home/jay/workspace/utils/checkpoint.py 70 53 24% 28-33, 38, 43-45, 50-53, 58, 79-89, 105-108, 124-149, 167-175 /home/jay/workspace/utils/circuit_breaker.py 308 223 28% 73, 76-78, 81-82, 98, 101, 142-143, 155, 159-166, 170-171, 175-179, 183-197, 202, 214-215, 219-222, 225-240, 244-253, 257-264, 283-297, 301, 305, 309-349, 353-367, 371-388, 392-399, 402-404, 407, 411-423, 427-442, 457-462, 476-485, 489-495, 499-506, 510-517, 521-559, 563 /home/jay/workspace/utils/clarify.py 26 26 0% 12-266 /home/jay/workspace/utils/composite_constants.py 5 0 100% /home/jay/workspace/utils/config_loader.py 59 15 75% 26-28, 63, 70, 73-74, 88-89, 96, 98, 104-106, 123 /home/jay/workspace/utils/context_compressor.py 119 35 71% 30, 38, 50-53, 75-78, 83, 91, 101-114, 127-131, 145, 170-180, 190, 197, 204 /home/jay/workspace/utils/context_refs.py 111 111 0% 13-173 /home/jay/workspace/utils/context_summarizer.py 96 51 47% 36-54, 74-100, 124, 144-155, 161, 172-173, 176-177 /home/jay/workspace/utils/delegate_controller.py 74 74 0% 4-120 /home/jay/workspace/utils/delegate_runner.py 23 23 0% 10-77 /home/jay/workspace/utils/env_loader.py 32 5 84% 48, 53, 60-62 /home/jay/workspace/utils/error_alert.py 49 5 90% 32-33, 56, 61-62 /home/jay/workspace/utils/error_tracker.py 58 23 60% 54, 72-74, 97-99, 104-105, 117-121, 126-137, 141 /home/jay/workspace/utils/event_hooks.py 68 68 0% 19-179 /home/jay/workspace/utils/event_hooks_loader.py 49 49 0% 14-90 /home/jay/workspace/utils/feature_flags.py 58 0 100% /home/jay/workspace/utils/fuzzy_match.py 35 35 0% 12-115 /home/jay/workspace/utils/google_ads_client.py 338 56 83% 87-94, 145-147, 199-201, 250-251, 316-318, 364-366, 392-394, 456-458, 510-512, 539-540, 542-543, 561-563, 590-592, 644-646, 684, 694-696, 749-755, 816, 856-863, 939-941 /home/jay/workspace/utils/injection_guard.py 38 12 68% 146, 188-192, 210-215 /home/jay/workspace/utils/insights_engine.py 89 89 0% 29-198 /home/jay/workspace/utils/interrupt.py 18 4 78% 49-53 /home/jay/workspace/utils/logger.py 24 0 100% /home/jay/workspace/utils/memory_check.py 186 36 81% 20-23, 54-56, 86-88, 106-108, 145, 156-158, 186, 194-196, 271-272, 277, 289, 310-312, 318-319, 337, 339, 369-370, 375-377 /home/jay/workspace/utils/memory_indexer.py 210 32 85% 105, 112, 123, 146-147, 151-152, 166, 185, 220-221, 225, 259-261, 287-289, 308-313, 330-331, 337, 383-384, 430-431, 449-450 /home/jay/workspace/utils/memory_manager.py 69 29 58% 61-81, 107, 111, 116-117, 130-131, 149-152, 173-178 /home/jay/workspace/utils/memory_search.py 120 120 0% 11-204 /home/jay/workspace/utils/meta_ads_client.py 250 35 86% 222-224, 263-265, 297-299, 336-338, 356-358, 420-422, 463-465, 483-485, 501-503, 535-537, 581-583, 646-647 /home/jay/workspace/utils/model_metadata.py 31 31 0% 13-142 /home/jay/workspace/utils/model_router.py 35 7 80% 77-80, 90, 115, 124 /home/jay/workspace/utils/org_loader.py 82 31 62% 31-33, 38, 46, 94-99, 104-109, 114, 121-123, 128-137 /home/jay/workspace/utils/patch_parser.py 99 99 0% 13-168 /home/jay/workspace/utils/persistent_shell.py 112 112 0% 16-165 /home/jay/workspace/utils/pre_exec_patterns.py 1 1 0% 6 /home/jay/workspace/utils/pre_exec_scan.py 52 52 0% 18-145 /home/jay/workspace/utils/prompt_cache.py 27 27 0% 21-81 /home/jay/workspace/utils/redact.py 68 29 57% 96, 107, 109, 111, 113, 120-121, 127-128, 140-142, 154-157, 172-173, 188-208 /home/jay/workspace/utils/robots_policy.py 40 40 0% 15-84 /home/jay/workspace/utils/sanitize_gate.py 35 1 97% 153 /home/jay/workspace/utils/session_auto_compress.py 90 4 96% 47-50 /home/jay/workspace/utils/session_monitor.py 132 24 82% 31, 50-51, 183-184, 195, 218-219, 257, 259, 271-272, 282-283, 323-346, 350 /home/jay/workspace/utils/session_resilience.py 164 20 88% 27, 40-41, 200-201, 342-344, 381-393, 410-411, 423-424 /home/jay/workspace/utils/session_search.py 97 97 0% 4-178 /home/jay/workspace/utils/session_store.py 88 88 0% 9-166 /home/jay/workspace/utils/session_store_search.py 31 31 0% 12-182 /home/jay/workspace/utils/skill_guard.py 115 115 0% 11-189 /home/jay/workspace/utils/skill_guard_patterns.py 2 2 0% 7-124 /home/jay/workspace/utils/skill_loader.py 107 3 97% 88, 95-96 /home/jay/workspace/utils/skill_parser.py 80 35 56% 24-26, 46, 53-61, 64, 69-71, 88-92, 108, 111-121, 137-140 /home/jay/workspace/utils/tests/__init__.py 0 0 100% /home/jay/workspace/utils/tests/test_approval.py 149 149 0% 4-217 /home/jay/workspace/utils/tests/test_atomic_write.py 146 146 0% 4-225 /home/jay/workspace/utils/tests/test_audit_logger.py 138 138 0% 4-226 /home/jay/workspace/utils/tests/test_aux_llm_router.py 165 165 0% 7-306 /home/jay/workspace/utils/tests/test_bot_activity.py 105 105 0% 4-212 /home/jay/workspace/utils/tests/test_bot_status.py 160 160 0% 9-500 /home/jay/workspace/utils/tests/test_checkpoint.py 213 213 0% 4-346 /home/jay/workspace/utils/tests/test_circuit_breaker.py 238 238 0% 4-398 /home/jay/workspace/utils/tests/test_clarify.py 77 77 0% 4-147 /home/jay/workspace/utils/tests/test_config_loader.py 93 93 0% 4-144 /home/jay/workspace/utils/tests/test_context_compressor.py 246 246 0% 13-551 /home/jay/workspace/utils/tests/test_context_refs.py 139 139 0% 7-217 /home/jay/workspace/utils/tests/test_delegate_controller.py 126 126 0% 4-246 /home/jay/workspace/utils/tests/test_event_hooks.py 166 166 0% 4-311 /home/jay/workspace/utils/tests/test_fuzzy_match.py 110 110 0% 4-201 /home/jay/workspace/utils/tests/test_injection_guard.py 145 145 0% 4-225 /home/jay/workspace/utils/tests/test_insights_engine.py 159 159 0% 4-266 /home/jay/workspace/utils/tests/test_interrupt.py 75 75 0% 4-122 /home/jay/workspace/utils/tests/test_memory_manager.py 144 144 0% 4-205 /home/jay/workspace/utils/tests/test_meta_ads_client.py 196 196 0% 9-481 /home/jay/workspace/utils/tests/test_model_metadata.py 93 93 0% 4-166 /home/jay/workspace/utils/tests/test_model_router.py 100 100 0% 4-205 /home/jay/workspace/utils/tests/test_patch_parser.py 168 168 0% 4-308 /home/jay/workspace/utils/tests/test_persistent_shell.py 139 139 0% 4-244 /home/jay/workspace/utils/tests/test_pre_exec_scan.py 83 83 0% 7-169 /home/jay/workspace/utils/tests/test_prompt_cache.py 98 98 0% 4-199 /home/jay/workspace/utils/tests/test_redact.py 138 138 0% 4-251 /home/jay/workspace/utils/tests/test_robots_policy.py 84 84 0% 4-147 /home/jay/workspace/utils/tests/test_session_search.py 150 150 0% 4-286 /home/jay/workspace/utils/tests/test_session_store.py 145 145 0% 4-268 /home/jay/workspace/utils/tests/test_skill_guard.py 153 153 0% 7-337 /home/jay/workspace/utils/tests/test_skill_loader.py 121 121 0% 4-208 /home/jay/workspace/utils/tests/test_skill_parser.py 139 139 0% 7-249 /home/jay/workspace/utils/tests/test_usage_pricing.py 99 99 0% 4-269 /home/jay/workspace/utils/todo_sync.py 140 30 79% 42, 87, 184, 195, 207, 219, 234-250, 254-275, 279 /home/jay/workspace/utils/usage_pricing.py 44 7 84% 112-115, 138-140, 144 ----------------------------------------------------------------------------------------------------- TOTAL 68809 39281 43% ================= 2395 passed, 2 warnings in 219.86s (0:03:39) =================