feat(ack): refine intake and validation workflow
This commit is contained in:
+62
-1
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
@@ -47,6 +48,66 @@ class AckSkillContentTests(unittest.TestCase):
|
||||
self.assertIn("禁止根据持久化 receipt 自动复用", content)
|
||||
self.assertIn("launcher 身份证明", content)
|
||||
|
||||
def test_worker_reuse_requires_idle_state_and_verified_history_reset(self) -> None:
|
||||
skill = (REPO_ROOT / "skills" / "ack" / "SKILL.md").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
adapter = (
|
||||
REPO_ROOT / "skills" / "ack" / "references" / "orca-adapter.md"
|
||||
).read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn("空闲", skill)
|
||||
self.assertIn("清理历史消息", skill)
|
||||
self.assertIn("无法确认清理成功时创建 fresh worker", skill)
|
||||
self.assertIn("角色、profile、worktree", adapter)
|
||||
self.assertIn("不得复用仍在工作", adapter)
|
||||
self.assertIn("或运行状态不明的 worker", adapter)
|
||||
|
||||
def test_coordinator_reclaims_only_verified_task_terminals_at_run_end(self) -> None:
|
||||
skill = (REPO_ROOT / "skills" / "ack" / "SKILL.md").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
kickoff = (
|
||||
REPO_ROOT / "skills" / "ack" / "references" / "kickoff.md"
|
||||
).read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn("整轮任务完成", skill)
|
||||
self.assertIn("回收所有只属于 `verified` 任务的 worker", skill)
|
||||
self.assertIn("终端,并核对关闭回执", skill)
|
||||
self.assertIn("不设置 TTL", skill)
|
||||
self.assertIn("blocked", kickoff)
|
||||
self.assertIn("failed_retest", kickoff)
|
||||
self.assertIn("leftover", kickoff)
|
||||
|
||||
def test_environment_failures_are_reported_without_consuming_retest_rounds(self) -> None:
|
||||
skill = (REPO_ROOT / "skills" / "ack" / "SKILL.md").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
optimization = (
|
||||
REPO_ROOT / "skills" / "ack" / "references" / "optimization-method.md"
|
||||
).read_text(encoding="utf-8")
|
||||
schema = json.loads(
|
||||
(REPO_ROOT / "skills" / "ack" / "templates" / "tasks.schema.json")
|
||||
.read_text(encoding="utf-8")
|
||||
)
|
||||
|
||||
self.assertIn("环境失败不占复验轮次", skill)
|
||||
self.assertIn("userAction", optimization)
|
||||
self.assertIn("environmentIncidents", schema["definitions"]["task"]["properties"]["dispatch"]["properties"])
|
||||
|
||||
def test_validation_ready_hands_off_a_deployed_test_environment(self) -> None:
|
||||
skill = (REPO_ROOT / "skills" / "ack" / "SKILL.md").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
delivery = (
|
||||
REPO_ROOT / "skills" / "ack" / "references" / "delivery.md"
|
||||
).read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn("不能停在", skill)
|
||||
self.assertIn("`verified` 却声称整轮 ACK 已结束", skill)
|
||||
self.assertIn("validation_ready", delivery)
|
||||
self.assertIn("访问地址和用户下一步", delivery)
|
||||
|
||||
def test_ack_knowledge_resources_and_version_are_present(self) -> None:
|
||||
ack_dir = REPO_ROOT / "skills" / "ack"
|
||||
|
||||
@@ -67,7 +128,7 @@ class AckSkillContentTests(unittest.TestCase):
|
||||
):
|
||||
self.assertTrue((ack_dir / relative_path).is_file(), relative_path)
|
||||
version = (ack_dir / "VERSION").read_text(encoding="utf-8").strip()
|
||||
self.assertEqual(version, "0.14.1")
|
||||
self.assertEqual(version, "0.15.0")
|
||||
self.assertIn(
|
||||
f'ackVersion: "{version}"',
|
||||
(ack_dir / "examples" / "tasks.example.yaml").read_text(encoding="utf-8"),
|
||||
|
||||
Reference in New Issue
Block a user