Bootstrap architecture rules from task history

This commit is contained in:
CoolBoy
2026-08-12 08:41:07 +08:00
parent 7ec875563e
commit d8ed7fa1c2
12 changed files with 653 additions and 63 deletions

View File

@@ -574,6 +574,60 @@ class CandidatePreflightTests(unittest.TestCase):
self.assertFalse(result["failureNeedsLlm"])
self.assertEqual(1, classifier.calls)
def test_failure_archive_recovers_framework_from_target_docker_image(self) -> None:
result = classify_failure_archive(
make_failure_archive(
"MODEL_NOT_SUPPORTED",
"\n".join(
[
"[submit]docker_image: registry/enginex-sunrise/enginex-s2-vllm:v1",
"model type `qwen3_5` but Transformers does not recognize this architecture",
]
),
"请换用支持的模型",
)
)
self.assertEqual("vllm", result["failureDetectedFramework"])
self.assertEqual("target_docker_image", result["failureDetectedFrameworkSource"])
self.assertEqual(["qwen3_5"], result["failureUnsupportedModelTypes"])
def test_history_bootstrap_builds_block_without_api_framework_field(self) -> None:
now = datetime.now(timezone.utc)
task = {
"taskId": "history-failure",
"modelId": "owner/history-model",
"gpuType": "Biren_166m",
"modelTaskLevelId": 23,
"status": "success",
"verifyResult": -1,
"updateTime": now.isoformat(),
"logCosUrl": "https://logs.invalid/history-failure.zip",
}
classification = {
"failureCategory": "framework_architecture_unsupported",
"failureScope": "model_gpu_framework",
"failureAction": "block_gpu_framework_architecture",
"failureDeterministic": True,
"failureClassificationReason": "explicit_framework_model_unsupported",
"failureUnsupportedModelTypes": ["qwen3_5"],
"failureDetectedFramework": "vllm",
"failureDetectedFrameworkSource": "target_docker_image",
}
with tempfile.TemporaryDirectory() as temporary_dir:
tracker = OutcomeTracker(Path(temporary_dir) / "outcomes.jsonl")
with patch(
"outcome_tracker.fetch_and_classify_failure_log",
return_value=classification,
):
summary = tracker.bootstrap_from_history_tasks([task])
report = tracker.get_stats_report()
key = "biren_166m|vllm|text-generation|model_type:qwen3_5"
self.assertEqual(1, summary["enrichmentAttempts"])
self.assertEqual(1, summary["recoveredFrameworks"])
self.assertIn(key, report["architectureCompatibilityBlocks"])
def test_explicit_failure_learns_exact_gpu_framework_architecture_block(self) -> None:
now = datetime.now(timezone.utc)
with tempfile.TemporaryDirectory() as temporary_dir: