From ef7bdf015b4bc8fe7fffd7ecfa5446bae50c4ccb Mon Sep 17 00:00:00 2001 From: Jarvis Jr Hermes Date: Wed, 2 Sep 2026 12:38:36 +0000 Subject: [PATCH] test: lock task lifecycle protections --- tests/test_task_breakdown_policy.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/test_task_breakdown_policy.py b/tests/test_task_breakdown_policy.py index 13cbc3e..a6b77ed 100644 --- a/tests/test_task_breakdown_policy.py +++ b/tests/test_task_breakdown_policy.py @@ -6,6 +6,7 @@ class TaskBreakdownPolicyTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.skill = Path(__file__).parents[1].joinpath("SKILL.md").read_text() + cls.task_section = cls.skill.split("## Task and Dependency Breakdown", 1)[1].split("## Version Allocation", 1)[0] def test_architecture_owns_complete_release_task_breakdown(self): required = [ @@ -18,11 +19,10 @@ class TaskBreakdownPolicyTest(unittest.TestCase): "must not report planning readiness", ] for marker in required: - self.assertIn(marker, self.skill) + self.assertIn(marker, self.task_section) def test_task_lifecycle_and_readiness_rules_are_fail_closed(self): required = [ - "version: 1.7.0", "repository/component owner", "acceptance-evidence requirements", "implementation artifacts", @@ -42,9 +42,13 @@ class TaskBreakdownPolicyTest(unittest.TestCase): "pre-approval state", "renewed human `Approved for Implementation`", "separate exact-task Kanban Focus admission", + "Approved, Kanban-admitted, in-progress, or completed Tasks must not be deleted or silently rewritten.", + "Retain an obsolete Task with a terminal Superseded or Cancelled status, its prior evidence and history, and explicit replacement links.", + "A material change to Task scope, outcome, dependency, repository, or component must invalidate prior readiness evidence", ] + self.assertIn("version: 1.7.0", self.skill) for marker in required: - self.assertIn(marker, self.skill) + self.assertIn(marker, self.task_section) if __name__ == "__main__":