Files
hockey_new/docs/validation.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
}
}