CI Test Baseline – v20.66.9
CI ska skydda dagens stödda funktionalitet, inte pensionerade implementationer.
Principer
- Live-motor, polling, scheduler och automatisk Min Golf-sync är pensionerade.
- Min Golf/golf.se server-side fetch har endast negativa policytester.
- Historiska resultat, ranking, manuella snapshots/anmälningsdata, spelar-/rankingmatchning, rekommendationer och klubb/venue/distance är aktiva.
- Gamla release-meta-tester tas bort när de ersatts av aktuella funktionskontrakt.
Inventering
| Testfil | Beslut |
|---|---|
test_ci_foundation.py |
KEEP |
test_club_catalogue.py |
KEEP |
test_club_distance_night_run.py |
KEEP |
test_club_distances.py |
KEEP |
test_club_venues.py |
KEEP |
test_competition_recommendations.py |
KEEP |
test_coordinate_enrichment.py |
KEEP |
test_geocoding_fallbacks.py |
KEEP |
test_golf_se_club_information.py |
KEEP |
test_golf_se_har_schema.py |
KEEP |
test_golf_se_results_parser.py |
KEEP |
test_historical_results.py |
KEEP |
test_historical_sync.py |
DELETE |
test_importer_models.py |
KEEP |
test_importer_pipeline.py |
KEEP |
test_list_filters.py |
KEEP |
test_live_dashboard.py |
DELETE |
test_live_results.py |
DELETE |
test_location_distance_integration.py |
KEEP |
test_location_enrichment.py |
KEEP |
test_mingolf_integration.py |
DELETE |
test_mobile_first_design.py |
KEEP |
test_mobile_search_filter_class_fix.py |
KEEP |
test_performance_maintenance.py |
KEEP |
test_player_autocomplete_ux.py |
KEEP |
test_player_identity.py |
KEEP |
test_player_identity_performance.py |
KEEP |
test_player_search_performance.py |
KEEP |
test_presentation_feature.py |
KEEP |
test_python_warnings.py |
KEEP |
test_ranking_import_resilience.py |
KEEP |
test_ranking_points.py |
KEEP |
test_report_registry.py |
KEEP |
test_result_preview.py |
KEEP |
test_sgf_club_registry.py |
KEEP |
test_sync_policy.py |
DELETE |
test_ux_telemetry.py |
KEEP |
test_v20_53_1_ux_performance.py |
KEEP |
test_v20_53_2_mobile_history.py |
KEEP |
test_v20_53_3_entry_analysis.py |
KEEP |
test_v20_53_4_analysis_progress.py |
KEEP |
test_v20_53_5_analysis_state_navigation.py |
KEEP |
test_v20_53_6_player_back_link_hotfix.py |
KEEP |
test_v20_53_7_entry_player_link_visibility.py |
KEEP |
test_v20_53_8_entry_player_links_rendering.py |
KEEP |
test_v20_53_9_entry_identity_refresh.py |
KEEP |
test_v20_55_0_focused_ux.py |
KEEP |
test_v20_56_0_task_navigation.py |
KEEP |
test_v20_56_1_unified_live_dashboard.py |
DELETE |
test_v20_60_0_dashboard_foundation.py |
DELETE |
test_v20_60_1_dashboard_layout_live_classes.py |
DELETE |
test_v20_60_2_live_detail_discovery.py |
DELETE |
test_v20_60_3_result_presentation_refactor.py |
KEEP |
test_v20_60_4_application_boot_import_hotfix.py |
DELETE |
test_v20_61_0_unified_dashboard_experience.py |
DELETE |
test_v20_61_10_live_auto_repair.py |
DELETE |
test_v20_61_11_live_auto_repair_test_contract.py |
DELETE |
test_v20_61_1_dashboard_completeness_live_refresh.py |
DELETE |
test_v20_61_2_live_score_parity_dashboard.py |
DELETE |
test_v20_61_3_live_diagnostics_capture.py |
DELETE |
test_v20_61_4_live_engine_trace.py |
DELETE |
test_v20_61_5_live_source_bootstrap.py |
DELETE |
test_v20_61_7_live_snapshot_repair.py |
DELETE |
test_v20_61_8_live_visibility_trace_semantics.py |
DELETE |
test_v20_61_9_live_parity_repair_runner.py |
DELETE |
test_v20_62_0_live_engine_stable.py |
DELETE |
test_v20_63_0_information_first_dashboard.py |
DELETE |
test_v20_63_10_live_results_history_filter.py |
DELETE |
test_v20_63_11_results_workspace_complete.py |
KEEP |
test_v20_63_12_results_date_range_and_expand_fix.py |
KEEP |
test_v20_63_13_results_club_alias_canonicalization.py |
KEEP |
test_v20_63_14_ci_regression_contract_alignment.py |
DELETE |
test_v20_63_15_results_club_filter_performance.py |
KEEP |
test_v20_63_16_competition_planning_workspace.py |
KEEP |
test_v20_63_1_information_first_dashboard_test_contract.py |
DELETE |
test_v20_63_2_dashboard_ux_complete.py |
DELETE |
test_v20_63_3_live_refresh.py |
DELETE |
test_v20_63_4_live_score_parity_diagnostics.py |
DELETE |
test_v20_63_5_live_stale_snapshot_refresh.py |
DELETE |
test_v20_63_6_live_scheduler_decision_diagnostics.py |
DELETE |
test_v20_63_7_live_scheduler_starvation_fix.py |
DELETE |
test_v20_63_8_live_runtime_stability.py |
DELETE |
test_v20_63_9_analysis_request_nonblocking.py |
DELETE |
test_v20_64_1_competition_deadline_parsing.py |
KEEP |
test_v20_64_2_competition_planning_column_sort.py |
KEEP |
test_v20_64_3_dashboard_next_deadlines_ordering.py |
KEEP |
test_v20_65_1_promotion_aware_recommendations.py |
KEEP |
test_v20_65_2_integrated_entry_field_and_full_period.py |
KEEP |
test_v20_65_3_recommendation_open_entry_filter.py |
KEEP |
test_v20_65_4_live_import_retention.py |
DELETE |
test_v20_65_5_sgf_remote_fetch_kill_switch.py |
KEEP |
test_v20_65_6_offline_data_mode.py |
KEEP |
test_v20_66_0_private_competition_analysis.py |
KEEP |
test_v20_66_1_ci_contract_alignment.py |
KEEP |
test_v20_66_2_ci_contract_finalization.py |
DELETE |
test_v20_66_3_ci_contract_hardening.py |
DELETE |
test_v20_66_4_manual_golfdata_ranking_sync.py |
KEEP |
test_v20_66_5_manual_ranking_contract_ci_reporting.py |
DELETE |
test_v20_66_6_release_and_reporting_contract.py |
DELETE |
test_v20_66_7_ci_reporting_mounted_path.py |
DELETE |
test_v20_66_8_ci_host_container_separation.py |
DELETE |
test_visible_status.py |
KEEP |
Nya baseline-tester
test_current_architecture.pytest_ci_reporting.py
Målarkitektur
| Funktion | Status |
|---|---|
| Manuell GolfData-ranking | ACTIVE |
| Manuell tävlingssnapshot/anmälningsdata | ACTIVE |
| Historiska resultat | ACTIVE |
| Spelaridentitet/rankingmatchning | ACTIVE |
| Klubb/venue/distance | ACTIVE |
| Min Golf/golf.se server-side fetch | BLOCKED |
| Live-resultat/polling/scheduler | RETIRED |
| ## v20.67.0 | |
| Aktiv baseline omfattar nu manuell GolfData-historik och filbaserad anmälningssnapshot. CI ska verifiera parser, avgränsad manuell körning och att startsidan inte exponerar teknisk databasstatistik. | |
| ## Regressionregel v20.67.1 | |
| Befintliga funktionsregressioner är blockerande. Ett legacy-test får endast ändras när dess krav avsiktligt ändrats. Dashboard-/startsidesändringar får exempelvis inte påverka resultathistorikens helper-funktioner. | |
| ## v20.67.4 | |
| Regression täcker entydigt route-ägarskap, separat historisk resultatroute, GolfData-historikens placering/loggning och personlig branding. | |
| ## v20.67.5 | |
| Regression täcker alla lagrade tävlingsklasser och dynamiskt klassfilter. |
Versionsoberoende regressionstester och release gate
Regressionstester får inte patch-låsas när de skyddar funktionalitet som ska leva vidare. Före varje release kör ci_check.sh den obligatoriska scripts/check_version_contracts.py. Gaten stoppar oannoterade exakta patchkontrakt. Använd semver eller relevant releasefamilj. Exakt version får endast användas när versionsnumret självt är det beteende som verifieras och raden måste märkas # version-contract: exact-ok.
Releaseordning: versionskontrakt → riktade regressioner → full CI → paketering.
Analysproveniens
Analytiska resultat får inte presenteras utan känt underlag. Tävlingsanalys ska kunna redovisa anmälningssnapshot/källa och tid samt rankingimport, källdatum och importtid. Canonical player ID är primär identitet; namn+klubb är endast kontrollerad fallback. Herr/Dam i källdata normaliseras till Pojkar/Flickor i analysdomänen. Saknat underlag får aldrig ge en fabricerad placering.