Index: tests/test_id_lifecycle.py
===================================================================
--- tests/test_id_lifecycle.py	(revision 3bad43e1debc4438c1a27ee0c5d531907aba94ed)
+++ tests/test_id_lifecycle.py	(revision ca3927462b83d9ae55fd59d487c07e1a3f0f994c)
@@ -99,6 +99,6 @@
     q.sign()
     q.publish()
+    q.obsolete()
     old_id = str(q.flexo_id)
-    q.obsolete()
     q.clone_new_base()
     assert q.origin == old_id
Index: tests/test_persistance_integrity.py
===================================================================
--- tests/test_persistance_integrity.py	(revision 3bad43e1debc4438c1a27ee0c5d531907aba94ed)
+++ tests/test_persistance_integrity.py	(revision ca3927462b83d9ae55fd59d487c07e1a3f0f994c)
@@ -6,21 +6,19 @@
 import pytest
 
-from flexoentity import EntityState
 from builder.questions import RadioQuestion, AnswerOption
+from flexoentity import EntityState, EntityType, Domain
 
-
-# ──────────────────────────────────────────────────────────────────────────────
 @pytest.fixture
-def approved_question(domain):
+def approved_question():
     """Provide a fully approved and published RadioQuestion for persistence tests."""
     q = RadioQuestion(
-        domain=domain,
+        domain=Domain(domain="GEN", etype=EntityType.DOMAIN, state=EntityState.DRAFT),
         etype=None,  # RadioQuestion sets this internally to EntityType.QUESTION
         state=EntityState.DRAFT,
         text="What is Ohm’s law?",
         options=[
-            AnswerOption(text="U = R × I", points=1),
-            AnswerOption(text="U = I / R", points=0),
-            AnswerOption(text="R = U × I", points=0),
+            AnswerOption(id="OP1", text="U = R × I", points=1),
+            AnswerOption(id="OP2", text="U = I / R", points=0),
+            AnswerOption(id="OP3", text="R = U × I", points=0),
         ],
     )
@@ -37,6 +35,9 @@
     """
     json_str = approved_question.to_json()
+    print("JSON", json_str)
     loaded = RadioQuestion.from_json(json_str)
 
+    print("Approved", approved_question.text_seed)
+    print("Loaded", loaded.text_seed)
     # Fingerprint and state should match — integrity must pass
     assert RadioQuestion.verify_integrity(loaded)
@@ -46,7 +47,4 @@
     assert approved_question.flexo_id == loaded.flexo_id
     assert loaded.state == approved_question.state
-
-
-# ──────────────────────────────────────────────────────────────────────────────
 
 @pytest.mark.skip(reason="FlexOIDs regenerated on import; tampering detection not yet implemented")
@@ -60,7 +58,4 @@
     loaded = RadioQuestion.from_json(tampered_json)
     assert not RadioQuestion.verify_integrity(loaded)
-
-
-# ──────────────────────────────────────────────────────────────────────────────
 
 @pytest.mark.skip(reason="FlexOIDs regenerated on import; corruption detection not yet applicable")
