Files
timmy-home/tests/test_fleet_progression.py
Alexander Whitestone 5d49b38ce3
Some checks failed
Smoke Test / smoke (pull_request) Failing after 18s
feat: add fleet progression evaluator (#547)
2026-04-15 01:06:18 -04:00

93 lines
3.1 KiB
Python

from scripts.fleet_progression import evaluate_progression, load_spec
def test_load_spec_contains_epic_and_all_six_phases():
spec = load_spec()
assert spec["epic_issue"] == 547
assert [phase["number"] for phase in spec["phases"]] == [1, 2, 3, 4, 5, 6]
assert [phase["issue_number"] for phase in spec["phases"]] == [548, 549, 550, 551, 552, 553]
def test_phase_two_unlocks_when_uptime_and_capacity_thresholds_are_met():
spec = load_spec()
result = evaluate_progression(
spec,
issue_states={548: "open", 549: "open", 550: "open", 551: "open", 552: "open", 553: "open"},
resources={
"uptime_percent_30d": 95.0,
"capacity_utilization": 61.0,
"innovation": 0,
"all_models_local": False,
"sovereign_stable_days": 0,
"human_free_days": 0,
},
)
phase2 = result["phases"][1]
assert phase2["unlocked"] is True
assert result["current_phase"]["number"] == 2
assert result["next_locked_phase"]["number"] == 3
def test_phase_three_stays_locked_until_phase_two_issue_is_closed():
spec = load_spec()
result = evaluate_progression(
spec,
issue_states={548: "open", 549: "open", 550: "open", 551: "open", 552: "open", 553: "open"},
resources={
"uptime_percent_30d": 99.0,
"capacity_utilization": 90.0,
"innovation": 250,
"all_models_local": False,
"sovereign_stable_days": 0,
"human_free_days": 0,
},
)
phase3 = result["phases"][2]
assert phase3["unlocked"] is False
blockers = {item["rule"] for item in phase3["blocking_requirements"]}
assert blockers == {"phase_2_issue_closed"}
def test_phase_five_requires_sovereign_stability_and_innovation():
spec = load_spec()
result = evaluate_progression(
spec,
issue_states={548: "closed", 549: "closed", 550: "closed", 551: "closed", 552: "open", 553: "open"},
resources={
"uptime_percent_30d": 99.0,
"capacity_utilization": 85.0,
"innovation": 400,
"all_models_local": True,
"sovereign_stable_days": 12,
"human_free_days": 0,
},
)
phase5 = result["phases"][4]
assert phase5["unlocked"] is False
blockers = {item["rule"] for item in phase5["blocking_requirements"]}
assert blockers == {"innovation_gt_500", "sovereign_stable_days_gte_30"}
def test_epic_complete_only_when_all_phase_issues_are_closed_and_phase_six_unlocked():
spec = load_spec()
result = evaluate_progression(
spec,
issue_states={548: "closed", 549: "closed", 550: "closed", 551: "closed", 552: "closed", 553: "closed"},
resources={
"uptime_percent_30d": 99.5,
"capacity_utilization": 85.0,
"innovation": 900,
"all_models_local": True,
"sovereign_stable_days": 45,
"human_free_days": 9,
},
)
assert result["epic_complete"] is True
assert result["current_phase"]["number"] == 6
assert result["next_locked_phase"] is None