存档求解器回归基线与当前改动
纳管 AMESim 对齐基线、发布锁、回归测试及当前物理门禁调整。 更新日志仅记录已完成成果,并注明当前 HEAD 尚待真实 production 复跑与远端 workflow 验证。
This commit is contained in:
1 parent
53f8601fec
commit
a8c733883c
32 files changed
+47241
-108
No files matched your search
@@ -154,6 +154,26 @@ class TestMql8StaticRegressionTests(unittest.TestCase):
|
||||
self.assertEqual(audit["maxAbsoluteError"], 0.0)
|
||||
self.assertEqual(audit["maxToleranceRatio"], 0.0)
|
||||
|
||||
def test_approved_production_golden_replays_its_source_report(self) -> None:
|
||||
repository_root = Path(self.manifest["_repositoryRoot"])
|
||||
reference = self.manifest["variants"]["0.2s"]["goldens"]["production"]
|
||||
golden = load_regression_golden(
|
||||
repository_root / reference["path"],
|
||||
expected_sha256=reference["sha256"],
|
||||
repository_root=repository_root,
|
||||
)
|
||||
source_report = golden["provenance"]["sourceReport"]
|
||||
report = json.loads(
|
||||
(repository_root / source_report["path"]).read_text(encoding="utf-8")
|
||||
)
|
||||
case = next(item for item in report["cases"] if item["caseId"] == "0.2s")
|
||||
audit = evaluate_regression_golden(case["worker"]["summary"], golden)
|
||||
|
||||
self.assertTrue(audit["passed"], audit)
|
||||
self.assertEqual(audit["comparedValueCount"], 426)
|
||||
self.assertEqual(audit["maxAbsoluteError"], 0.0)
|
||||
self.assertEqual(audit["maxToleranceRatio"], 0.0)
|
||||
|
||||
def test_historical_v2_extension_decision_remains_auditable(self) -> None:
|
||||
repository_root = Path(self.manifest["_repositoryRoot"])
|
||||
runs = repository_root / "tests/baselines/simulation/test_mql_8/runs"
|
||||
@@ -202,7 +222,70 @@ class TestMql8StaticRegressionTests(unittest.TestCase):
|
||||
self.assertEqual(first_decision["outcome"], "deferred")
|
||||
self.assertTrue(decision["simulationWasNotStartedForDeferredCases"])
|
||||
|
||||
def test_periodic_main_lane_uses_the_current_production_source(self) -> None:
|
||||
def test_extension_decision_is_bound_to_the_current_report_and_budget(self) -> None:
|
||||
repository_root = Path(self.manifest["_repositoryRoot"])
|
||||
evidence = self.manifest["acceptanceEvidence"]
|
||||
decision_reference = evidence["extensionDecision"]
|
||||
decision_path = repository_root / decision_reference["path"]
|
||||
decision_payload = decision_path.read_bytes()
|
||||
decision = json.loads(decision_payload)
|
||||
report_reference = evidence["production0.2ApprovedReplay"]
|
||||
report_path = repository_root / report_reference["path"]
|
||||
report_payload = report_path.read_bytes()
|
||||
report = json.loads(report_payload)
|
||||
source_case = next(
|
||||
item for item in report["cases"] if item["caseId"] == "0.2s"
|
||||
)
|
||||
first_decision = decision["decisions"][0]
|
||||
|
||||
self.assertEqual(
|
||||
decision["sourceXmlSha256"], self.manifest["source"]["sha256"]
|
||||
)
|
||||
self.assertEqual(decision["sourceReport"], report_path.name)
|
||||
self.assertEqual(len(report_payload), report_reference["bytes"])
|
||||
self.assertEqual(
|
||||
hashlib.sha256(report_payload).hexdigest(), report_reference["sha256"]
|
||||
)
|
||||
self.assertEqual(len(decision_payload), decision_reference["bytes"])
|
||||
self.assertEqual(
|
||||
hashlib.sha256(decision_payload).hexdigest(),
|
||||
decision_reference["sha256"],
|
||||
)
|
||||
self.assertEqual(
|
||||
hashlib.sha256(report_payload).hexdigest(),
|
||||
decision["sourceReportSha256"],
|
||||
)
|
||||
self.assertTrue(source_case["acceptance"]["passed"])
|
||||
self.assertEqual(
|
||||
decision["observedCase"]["workerWallSeconds"],
|
||||
source_case["worker"]["wallSeconds"],
|
||||
)
|
||||
expected_prediction = (
|
||||
source_case["worker"]["wallSeconds"]
|
||||
* self.manifest["variants"]["1s"]["stopTime"]
|
||||
/ source_case["stopTime"]
|
||||
* self.manifest["execution"]["predictionSafetyFactor"]
|
||||
)
|
||||
self.assertAlmostEqual(
|
||||
first_decision["predictedWallSeconds"], expected_prediction
|
||||
)
|
||||
self.assertLessEqual(
|
||||
first_decision["predictedWallSeconds"],
|
||||
first_decision["softTimeoutSeconds"],
|
||||
)
|
||||
self.assertEqual(first_decision["outcome"], "eligible")
|
||||
self.assertEqual(first_decision["reason"], "predictedWallWithinSoftBudget")
|
||||
self.assertEqual(
|
||||
[item["outcome"] for item in decision["decisions"]],
|
||||
["eligible", "notEvaluated", "notEvaluated"],
|
||||
)
|
||||
self.assertTrue(decision["extensionWasNotStarted"])
|
||||
self.assertEqual(
|
||||
decision["scopeReason"],
|
||||
"OPT-00 closes at the approved production 0.2 s gate; longer progressive horizons remain separately staged work.",
|
||||
)
|
||||
|
||||
def test_periodic_main_lane_exercises_the_approved_production_golden(self) -> None:
|
||||
workflow = (
|
||||
Path(self.manifest["_repositoryRoot"])
|
||||
/ ".github/workflows/solver-regression.yml"
|
||||
@@ -210,12 +293,11 @@ class TestMql8StaticRegressionTests(unittest.TestCase):
|
||||
|
||||
self.assertIn("default: production", workflow)
|
||||
self.assertIn("inputs.lane || 'production'", workflow)
|
||||
self.assertNotIn("goldens", self.manifest["variants"]["0.2s"])
|
||||
|
||||
|
||||
@unittest.skipUnless(
|
||||
os.getenv(LONG_RUN_ENVIRONMENT, "").strip().lower() in {"1", "true", "yes"},
|
||||
f"Set {LONG_RUN_ENVIRONMENT}=1 to run bounded 0.005/0.2/1/5/10 s integration.",
|
||||
f"Set {LONG_RUN_ENVIRONMENT}=1 to run bounded 0.01/0.2/1/5/10 s integration.",
|
||||
)
|
||||
class TestMql8ProgressiveLongRegressionTests(unittest.TestCase):
|
||||
@classmethod
|
||||
|
||||
Reference in new issue
Block a user