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:
@@ -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)})
|
||||
|
||||
Reference in New Issue
Block a user