151 lines
9.3 KiB
JSON
151 lines
9.3 KiB
JSON
{
|
|
"original_archive": {
|
|
"passed": 443,
|
|
"failed": 59,
|
|
"total": 502,
|
|
"seconds": 267.67,
|
|
"failed_ids": [
|
|
"tests/test_agent_bridge.py::test_saved_mapping_is_resolved_and_pushed_to_vmix",
|
|
"tests/test_build101_simple_timer_runtime.py::test_timer_start_stop_protocol_is_minimal",
|
|
"tests/test_build103_space_timer_fast_transport.py::test_space_edge_is_single_fire_and_local_timer_changes_before_transport",
|
|
"tests/test_build103_space_timer_fast_transport.py::test_timer_fast_contract_and_build_version",
|
|
"tests/test_build104_timer_stop_no_rollback.py::test_pause_stop_sends_only_pause_only_command",
|
|
"tests/test_build104_timer_stop_no_rollback.py::test_explicit_edit_still_can_seed_stopped_clock",
|
|
"tests/test_build104_timer_stop_no_rollback.py::test_penalty_pause_preserves_native_vmix_frozen_value",
|
|
"tests/test_build105_suspend_countdown_pause.py::test_space_pause_uses_suspend_not_stop_reset",
|
|
"tests/test_build105_suspend_countdown_pause.py::test_explicit_reset_set_path_keeps_stop_then_set",
|
|
"tests/test_build105_suspend_countdown_pause.py::test_penalty_normal_pause_uses_suspend",
|
|
"tests/test_build106_runtime_authoritative_timer.py::test_countdown_start_hard_reseeds_before_start",
|
|
"tests/test_build106_runtime_authoritative_timer.py::test_pause_is_reseeded_from_runtime_not_native_clock",
|
|
"tests/test_build106_runtime_authoritative_timer.py::test_scoreboard_show_syncs_timer_before_overlay_steps",
|
|
"tests/test_build106_runtime_authoritative_timer.py::test_build106_version",
|
|
"tests/test_build107_pause_change_countdown.py::test_start_uses_change_then_start_without_stop_or_set_duration",
|
|
"tests/test_build107_pause_change_countdown.py::test_runtime_version",
|
|
"tests/test_build108_native_pause_no_resync.py::test_game_clock_helper_only_seeds_on_set",
|
|
"tests/test_build108_native_pause_no_resync.py::test_explicit_time_change_seeds_even_before_first_space",
|
|
"tests/test_build110_match_roster_atomic_switch.py::test_selected_game_cache_is_match_scoped_and_local",
|
|
"tests/test_build110_match_roster_atomic_switch.py::test_first_time_match_waits_for_core_roster_before_polling",
|
|
"tests/test_build111_agent_match_handoff.py::test_mapping_is_refreshed_only_after_roster_enrichment",
|
|
"tests/test_build44_strength_vmix_sync.py::test_runtime_refreshes_only_changed_mapping_when_strength_changes",
|
|
"tests/test_build47_team_state_scoreboard_overlays.py::test_scoreboard_sequence_syncs_active_team_state_overlays",
|
|
"tests/test_build48_broadcast_states.py::test_penalty_preview_selection_persists_identifiers_before_trigger",
|
|
"tests/test_build55_agent_and_account_events.py::test_account_switch_now_controls_runtime_toasts_without_disabling_triggers",
|
|
"tests/test_build56_trigger_save_onair.py::test_quick_panel_on_air_tracking_has_ack_confirmed_fallback",
|
|
"tests/test_build57_quick_panel_parameters.py::test_quick_panel_selector_is_configurable_and_sent_before_sequence",
|
|
"tests/test_build58_onair_target_matching.py::test_onair_prefers_runtime_target_match",
|
|
"tests/test_build59_toasts_and_adaptive_runtime.py::test_runtime_can_grow_in_f11_and_large_viewports",
|
|
"tests/test_build62_quick_panel_onair_reconcile.py::test_overlay_parser_accepts_legacy_function_strings",
|
|
"tests/test_build69_runtime_entry_admin_editor.py::test_editor_server_paths_are_admin_protected",
|
|
"tests/test_build72_portable_mapping_transfer.py::test_portable_rebind_uses_title_when_input_key_changed",
|
|
"tests/test_build75_mapping_collapsed_rescan.py::test_mapping_heavy_data_sections_are_collapsed_by_default",
|
|
"tests/test_build78_penalty_mapping_context_auto_sync.py::test_side_penalty_mapping_context_is_derived_from_active_penalties_without_overwriting_manual_selection",
|
|
"tests/test_build86_penalty_context_prepared_titles.py::test_prepared_titles_is_forced_to_last_runtime_tab_and_uses_hockey_api_directly",
|
|
"tests/test_build93_countdown_reseed_on_start.py::test_game_countdown_resume_is_reseeded_before_start",
|
|
"tests/test_build93_countdown_reseed_on_start.py::test_hockey_timer_shortcut_reseeds_game_and_penalty_on_resume",
|
|
"tests/test_build93_countdown_reseed_on_start.py::test_native_mode_still_has_no_per_second_countdown_transport",
|
|
"tests/test_build95_countdown_explicit_start_stop_sync.py::test_prepared_penalty_shows_stopped_time_when_scoreboard_is_live",
|
|
"tests/test_build95_countdown_explicit_start_stop_sync.py::test_main_countdown_start_pause_stop_all_hard_sync_web_value",
|
|
"tests/test_build95_countdown_explicit_start_stop_sync.py::test_combined_shortcut_changes_web_first_then_synchronizes_vmix",
|
|
"tests/test_build96_penalty_strength_transition_state_machine.py::test_prepared_penalty_does_not_change_strength_until_explicit_start",
|
|
"tests/test_build96_penalty_strength_transition_state_machine.py::test_full_strength_waits_for_last_started_penalty_not_prepared_draft",
|
|
"tests/test_build97_mapping_chunked_transport.py::test_mapping_chunk_transport_sends_300_plus_links_in_small_batches",
|
|
"tests/test_build97_mapping_chunked_transport.py::test_mapping_transport_splits_timeout_batch_and_keeps_going",
|
|
"tests/test_build97_mapping_chunked_transport.py::test_mapping_transport_retries_isolated_failed_command",
|
|
"tests/test_build97_mapping_chunked_transport.py::test_build97_runtime_version_and_mapping_diagnostics",
|
|
"tests/test_build98_timer_countdown_sync_fixed_pin.py::test_countdown_start_is_simple_set_start",
|
|
"tests/test_build98_timer_countdown_sync_fixed_pin.py::test_pause_and_stop_freeze_without_reseed",
|
|
"tests/test_hotfix_penalty_visibility.py::test_assigned_penalty_display_with_real_runtime_functions",
|
|
"tests/test_khl_refresh_and_career.py::test_refresh_api_uses_current_python_fresh_cache_and_bounded_workers",
|
|
"tests/test_khl_site_module.py::test_admin_khl_tab_is_conditional_on_selected_khl_tournament",
|
|
"tests/test_mapping_admin_visibility.py::test_mapping_has_series_autolink_and_visible_sql_table_grid",
|
|
"tests/test_multi_agent_mapping_recovery.py::test_mapping_recovers_when_only_unrelated_vmix_inputs_change",
|
|
"tests/test_shortcut_sequences.py::test_hockey_timer_shortcut_supports_native_countdown_and_legacy_text_mirror",
|
|
"tests/test_shortcut_sequences.py::test_overlay_group_repeat_uses_transition_out_not_all_off",
|
|
"tests/test_shortcut_sequences.py::test_build90_native_countdown_avoids_per_second_transport",
|
|
"tests/test_stable_vmix_input_identity.py::test_shortcut_editor_persists_key_before_number",
|
|
"tests/test_stable_vmix_input_identity.py::test_mapping_links_do_not_resave_positional_number"
|
|
]
|
|
},
|
|
"first_work_full_run": {
|
|
"passed": 476,
|
|
"failed": 63,
|
|
"total": 539,
|
|
"seconds": 329.05,
|
|
"additional_failures": [
|
|
"tests/test_build72_portable_mapping_transfer.py::test_copy_profile_creates_target_specific_mapping_and_keeps_source",
|
|
"tests/test_build76_mapping_compact_copy.py::test_mapping_config_list_is_compact_and_has_copy_action",
|
|
"tests/test_hotfix_mapping_transport.py::test_372_mapping_fields_are_ordered_and_isolated_without_ack",
|
|
"tests/test_hotfix_mapping_transport.py::test_disconnect_stops_remaining_mapping_and_reports_failure"
|
|
]
|
|
},
|
|
"additional_failures_status": "All four expectations were adapted to approved published-snapshot/current-ACK/current-UI behavior. Six isolated tests pass, including an additional two-Agent concurrency case and actual JS rendering/escaping checks. Original 59 failures remain unmodified.",
|
|
"independent_log_qa": {
|
|
"passed": 3,
|
|
"events": 2000,
|
|
"parallel_writers": 8,
|
|
"read_and_write_errors": 0,
|
|
"week_export_records": 1000,
|
|
"month_export_records": 1000
|
|
},
|
|
"ui_runtime_qa": "PASS: 100 incoming patches coalesce into one render, no editor-only DOM work in runtime, settings freeze retains data, editor behavior and returned-data isolation preserved.",
|
|
"limitations": [
|
|
"No live PostgreSQL/WFL/Stat2TV/vMix calls",
|
|
"No Windows or actual Agent.exe/vMix end-to-end validation",
|
|
"SQLite/local ASGI/mock WebSockets; outbound TCP/UDP blocked by QA guard"
|
|
],
|
|
"environment": {
|
|
"python": "3.12.14",
|
|
"sqlalchemy": "2.1.5",
|
|
"fastapi": "0.156.8",
|
|
"httpx": "0.28.1",
|
|
"pydantic": "2.14.1",
|
|
"pytest": "9.1.1"
|
|
},
|
|
"final_behavioral_combined": {
|
|
"passed": 91,
|
|
"failed": 0,
|
|
"seconds": 109.12,
|
|
"areas": [
|
|
"ACK delivery/recovery",
|
|
"device mapping publications",
|
|
"operational logs",
|
|
"HTTP/browser auditing",
|
|
"control permissions/leases",
|
|
"database concurrency/performance",
|
|
"multi-Agent routing",
|
|
"Mapping context"
|
|
]
|
|
},
|
|
"final_collection": {
|
|
"collected": 552,
|
|
"errors": 0
|
|
},
|
|
"isolated_updated_expectations": {
|
|
"passed": 6,
|
|
"failed": 0,
|
|
"seconds": 13.48
|
|
},
|
|
"final_http_auth_checks": {
|
|
"passed": 9,
|
|
"failed": 0,
|
|
"includes": "Phone journal login redirect and logout during auth DB outage"
|
|
},
|
|
"browser_runtime": {
|
|
"desktop_mobile": "passed",
|
|
"controls_download_hotkeys": "passed",
|
|
"benchmark": {
|
|
"api_delay_ms": 150,
|
|
"runs_each": 3,
|
|
"baseline_median_ms": 3477,
|
|
"build190_median_ms": 1424,
|
|
"production_benchmark": false
|
|
}
|
|
},
|
|
"standalone_node": {
|
|
"program_log": "passed",
|
|
"penalty_countdown": "passed",
|
|
"session_activity": "passed",
|
|
"analytics_checks": 13
|
|
}
|
|
}
|