Merge current main while preserving governance repairs

Why: main advanced with merged-task-name and legacy evidence guards during this task.

Evidence: SELF 44 lifecycle regressions pass after resolving both hunks; independent review repairs are recorded in the task card.

Impact: retains both task-start protections and the stronger JSON/legacy receipt reader, without rewriting either branch history.

Refs: Dev PR #211 and #212; .task/feature-governance-reliability.md
This commit is contained in:
2026-10-05 13:11:50 +00:00
5 changed files with 348 additions and 1 deletions
+33
View File
@@ -512,6 +512,19 @@ class TaskLifecycleTests(unittest.TestCase):
result = self.task(wt, "sync")
self.assertIn("[evidence] WARN", result.stdout)
def test_sync_reads_legacy_commands_with_escaped_pipes(self):
wt = self.worktree()
card = self.task_card(wt)
head = self.git(wt, "rev-parse", "--short=10", "HEAD").stdout.strip()
card.write_text(card.read_text() +
f"\n| 2026-10-05T00:00:00Z | `false \\|\\| true` | `{head}` | 0 | SELF | abc |\n")
self.commit_evidence(wt)
self.advance_remote()
result = self.task(wt, "sync")
self.assertIn("[synced]", result.stdout)
self.assertIn("[evidence] WARN", result.stdout)
self.assertNotIn("unverified", result.stdout)
def test_finish_preserves_main_and_active_index_lock(self):
result = self.task(self.repo, "finish", check=False)
self.assertNotEqual(result.returncode, 0, result.stdout)
@@ -548,6 +561,26 @@ class TaskLifecycleTests(unittest.TestCase):
self.assertNotEqual(result.returncode, 0, result.stdout)
self.assertFalse((self.root / "repo-wt-feature-new").exists(), result.stdout)
def test_start_preserves_merged_local_and_remote_branch_names(self):
receipt = self.capture_precheck()
head = self.git(self.repo, "rev-parse", "HEAD").stdout.strip()
for kind in ("local", "remote"):
with self.subTest(kind=kind):
name = "feature/merged-" + kind
if kind == "local":
self.git(self.repo, "branch", name, head)
ref = "refs/heads/" + name
else:
self.git(self.repo, "push", "origin", head + ":refs/heads/" + name)
ref = "refs/remotes/origin/" + name
self.git(self.repo, "fetch", "origin", "refs/heads/" + name + ":" + ref)
result = self.task(self.repo, "start", name, check=False,
env=self.env | {"PRECHECK_RECEIPT": str(receipt)})
self.assertNotEqual(result.returncode, 0, result.stdout)
self.assertIn("already merged", result.stdout)
self.assertFalse((self.root / ("repo-wt-" + name.replace("/", "-"))).exists())
self.assertEqual(self.git(self.repo, "rev-parse", ref).stdout.strip(), head)
def test_start_imports_precheck_and_creates_four_part_commit(self):
receipt = self.capture_precheck()
self.task(self.repo, "start", "feature/new", env=self.env | {"PRECHECK_RECEIPT": str(receipt)})