feat(ack): refine intake and validation workflow

This commit is contained in:
2026-08-04 10:52:37 +08:00
parent b9c82b5520
commit 5018a1801d
32 changed files with 1602 additions and 302 deletions
+62 -1
View File
@@ -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"),