Files
hiffi-artist-intelligence/tests/test_platform_invariants.py
T
Srilekha 12f0786be9
HIFFI Multi-Platform CI / test (3.11) (push) Failing after 39s
HIFFI Multi-Platform CI / test (3.12) (push) Failing after 39s
feat: complete Day 2 handoff with API service, PM2 process daemons, and test suites
2026-10-30 11:10:54 +05:30

85 lines
3.8 KiB
Python

"""
tests/test_platform_invariants.py
Rigorous mathematical invariance and governance test suite for HIFFI Artist Intelligence.
Guarantees zero-imputation, rank continuity, isolated simulation, and score bounds.
"""
from pathlib import Path
import sys
import pytest
import pandas as pd
import numpy as np
# Ensure project root is on sys.path for test discovery
PROJECT_ROOT = Path(__file__).resolve().parent.parent
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from core.cpi_engine import CommercialPowerEngine
DATA_PATH = PROJECT_ROOT / "data" / "hiffi_multiplatform_500.csv"
@pytest.fixture(scope="module")
def cohort_df():
assert DATA_PATH.exists(), f"Master dataset not found at {DATA_PATH}"
df = pd.read_csv(DATA_PATH)
assert len(df) == 500, f"Expected 500 rows, found {len(df)}"
return df
def test_zero_imputation_policy(cohort_df):
"""Enforces that missing streaming telemetry is strictly NaN, never synthetic zeroes."""
if "spotify_monthly_listeners" in cohort_df.columns:
zero_listeners = (cohort_df["spotify_monthly_listeners"] == 0).sum()
assert zero_listeners == 0, f"Violation: Found {zero_listeners} synthetic zeroes in Spotify listeners!"
def test_effective_weight_distribution_sums(cohort_df):
"""Verifies that all dynamic weights sum to 100% (+/- floating point tolerance)."""
assert "effective_weights" in cohort_df.columns, "Column 'effective_weights' missing."
for idx, weights_str in enumerate(cohort_df["effective_weights"]):
if pd.isna(weights_str) or weights_str == "NONE":
continue
# Extract percentage numbers: e.g. 'yt:50.0%,sp_monthly:25.0%'
percentages = [float(p.split(":")[1].replace("%", "")) for p in str(weights_str).split(",")]
total = sum(percentages)
assert abs(total - 100.0) < 0.25, f"Row {idx} weights do not sum to 100%: {weights_str} (sum={total})"
def test_published_rank_continuity(cohort_df):
"""Verifies published ranks are unique, consecutive integers from 1 to 500."""
ranks = cohort_df["hiffi_xp_published_rank"].dropna().astype(int).tolist()
assert len(ranks) == 500, f"Expected 500 published ranks, got {len(ranks)}"
expected_ranks = list(range(1, 501))
assert sorted(ranks) == expected_ranks, "Published ranks contain gaps, duplicates, or out-of-order sequences!"
def test_score_normalization_bounds(cohort_df):
"""Ensures production and XP composite scores are bounded in [0.0, 100.0]."""
for col in ["production_hiffi_score", "hiffi_xp_score"]:
if col in cohort_df.columns:
valid_vals = cohort_df[col].dropna()
assert (valid_vals >= 0.0).all(), f"Found negative scores in {col}"
assert (valid_vals <= 100.0).all(), f"Found scores exceeding 100.0 in {col}"
def test_sales_provenance_tiers_clean(cohort_df):
"""Verifies all 500 rows have valid, recognized provenance statuses."""
valid_statuses = {"VERIFIED_CSPC", "VERIFIED_RIAA", "ESTIMATED_SEA"}
actual_statuses = set(cohort_df["sales_data_status"].dropna().unique())
invalid = actual_statuses - valid_statuses
assert not invalid, f"Detected unrecognized sales statuses: {invalid}"
assert cohort_df["total_eas_cspc"].isna().sum() == 0, "Found NaN in total_eas_cspc"
def test_cpi_simulation_isolation(cohort_df):
"""Confirms running simulation engine in-memory does not modify published baseline ranks."""
engine = CommercialPowerEngine()
sim_df = engine.simulate_ranking(cohort_df, commercial_weight=0.20, mode="global_redistribution")
# Check that published baseline ranks remain identical
assert (sim_df["hiffi_xp_published_rank"] == cohort_df["hiffi_xp_published_rank"]).all()
# Check that simulated rank column was generated and populated
assert "simulated_rank" in sim_df.columns
assert (sim_df["simulated_rank"] >= 1).all()