diff --git a/.github/scripts/demo-runtime-transaction.py b/.github/scripts/demo-runtime-transaction.py index 1bec825f82..3cd8824742 100644 --- a/.github/scripts/demo-runtime-transaction.py +++ b/.github/scripts/demo-runtime-transaction.py @@ -438,13 +438,14 @@ class Transaction: if self.receipt["observation_failures"]: unverified() + terminal = self.receipt["status"] if self.receipt["observation_failures"] else status try: - self.save(self.receipt["status"] if self.receipt["observation_failures"] else status) + self.save(terminal) except (OSError, Failure) as error: if isinstance(error, Failure) and str(error) != "receipt-observation": raise - if self.receipt["status"] not in self.receipt["observation_failures"]: - self.receipt["observation_failures"].append(self.receipt["status"]) + if terminal not in self.receipt["observation_failures"]: + self.receipt["observation_failures"].append(terminal) unverified() # One bounded attempt to retain the failure, not to obtain a pass. self.recovery_save("observation_failed") diff --git a/.github/scripts/tests/test_demo_runtime_transaction.py b/.github/scripts/tests/test_demo_runtime_transaction.py index e249f17e0b..3900e32a01 100644 --- a/.github/scripts/tests/test_demo_runtime_transaction.py +++ b/.github/scripts/tests/test_demo_runtime_transaction.py @@ -339,6 +339,7 @@ class TransactionTest(unittest.TestCase): self.assertEqual(engine.estate_hash(self.paths), self.before) self.assertEqual(tx.receipt["recovery"]["elapsed_seconds"], 300) self.assertEqual(tx.receipt["failure"], "new-service-crash") + self.assertIn(phase, tx.receipt["observation_failures"]) self.assertEqual(tx.receipt, json.loads((self.attempt / "receipt.json").read_text())) # Keep each independent snapshot/intent; never reuse its path. self.attempt = self.root / "attempts" / ("b" * 64)