Files
Jyotisha/tests/test_minute_resolution_research.py
T
jesse-ux 2d2467dca1
Independent Staging Quality Gate / validate (push) Failing after 9m27s
Independent Staging Quality Gate / publish (push) Skipped
docs(research): measure minute-resolution scoring; no variant clears all radii
Build holdout v4 from the public AA set, correct the two v3 dates, and sweep
R1–R5 plus pairs offline. No production scoring defaults change. No
implementation brief: delivered width stays the full window on every radius.
2026-09-14 20:43:27 +08:00

98 lines
3.2 KiB
Python

from __future__ import annotations
from scripts.research.holdout_v4_build import MIN_DOMAINS, MIN_EVENTS, build
from scripts.research.minute_resolution_lib import (
aggregate_samples,
dynamic_signature_layers,
rescale_varga_points,
shannon_entropy,
subtract_event_floor,
varga_divisor,
)
from scripts.research.minute_resolution_sweep import all_variants, verdict
def test_v4_cases_meet_event_and_domain_floors() -> None:
payload = build()
assert payload["ayanamsa"] == "raman"
assert payload["node_mode"] == "mean"
assert len(payload["cases"]) >= 8
for case in payload["cases"]:
domains = {item["domain"] for item in case["events"]}
assert len(case["events"]) >= MIN_EVENTS, case["case_id"]
assert len(domains) >= MIN_DOMAINS, case["case_id"]
assert case["birth"]["source"]["rodden_rating"] == "AA"
assert str(case["birth"]["time"])[:5] == case["true_minute"]
def test_varga_divisor_modes() -> None:
assert varga_divisor(1, "2len") == 2.0
assert varga_divisor(3, "2len") == 6.0
assert varga_divisor(3, "len") == 3.0
assert abs(varga_divisor(4, "sqrt") - 2.0) < 1e-9
assert varga_divisor(3, "fixed2") == 2.0
def test_year_aggregation_keeps_peak() -> None:
samples = [1.0, 1.0, 12.0]
assert aggregate_samples(samples, "mean") == 4.6667
assert aggregate_samples(samples, "max") == 12.0
lse = aggregate_samples(samples, "lse", 1.0)
assert lse > aggregate_samples(samples, "mean")
assert lse < 12.0
def test_subtract_event_floor_zeroes_the_min() -> None:
out = subtract_event_floor({"04:50": 11.0, "04:51": 13.5, "04:52": 11.0})
assert out["04:50"] == 0.0
assert out["04:51"] == 2.5
def test_entropy_is_zero_for_a_spike() -> None:
assert shannon_entropy([0, 0, 5]) == 0.0
assert shannon_entropy([1, 1]) > 0.9
def test_varga_rescale_doubles_single_chart_hit() -> None:
points = rescale_varga_points(
1.0,
["vim_md_domain_varga", "event_kind:career_change"],
"career",
"career_change",
"day",
"len",
)
assert points > 1.0
def test_dynamic_layers_drop_md_and_follow_domains() -> None:
layers = dynamic_signature_layers(["career", "health_pressure"])
assert layers[0] == "d1"
assert "d10" in layers
assert "d30" in layers
assert "md" not in layers
def test_variant_grid_covers_pairs() -> None:
names = {item.name for item in all_variants()}
assert "baseline" in names
assert "R1@len" in names
assert "R3@1.0" in names
assert "R1+R3" in names
pair = next(item for item in all_variants() if item.name == "R1+R3")
assert pair.r1 == "len"
assert pair.r3 == 1.0
def test_verdict_requires_hit_and_coverage() -> None:
baseline = {
"n": 10, "top1": 0.2, "coverage": 0.9, "width_median": 21, "tie": 0.8,
"squeezed": 1, "entropy0": 3.0, "entropy6": 2.0, "too_narrow": 0, "replay_top1": 0.5,
}
better = {
**baseline, "top1": 0.4, "tie": 0.4, "width_median": 12, "squeezed": 0,
}
worse = {**baseline, "top1": 0.1, "coverage": 0.7, "squeezed": 3}
assert verdict(baseline, better) == "benefit"
assert verdict(baseline, worse) == "no_benefit"