Index: flexoentity/id_factory.py
===================================================================
--- flexoentity/id_factory.py	(revision 811ce96ebfcf3a4883d7a135389f44aadea958ca)
+++ flexoentity/id_factory.py	(revision 3a0b0ce2c0d31c689a6a0dbddedc1daf2e198bfb)
@@ -75,13 +75,12 @@
 
     @staticmethod
-    def _ensure_unique(hash_part: str, version: int | None = None) -> str:
-        """Append disambiguator if hash was already seen this session."""
-        candidate = f"{hash_part}-{version}" if version is not None else hash_part
-        if candidate not in FlexOID._seen_hashes:
-            FlexOID._seen_hashes.add(candidate)
-            return candidate
-        # fallback only if truly same hash+version (should never happen)
-        for suffix in itertools.chain(map(chr, range(65, 91)), range(1, 100)):
-            alt = f"{candidate}-{suffix}"
+    def _ensure_unique(hash_part: str) -> str:
+        """Append disambiguator only if the hash was already seen this session."""
+        if hash_part not in FlexOID._seen_hashes:
+            FlexOID._seen_hashes.add(hash_part)
+            return hash_part
+        # fallback only if truly same hash (rare)
+        for suffix in range(1, 100):
+            alt = f"{hash_part}-{suffix}"
             if alt not in FlexOID._seen_hashes:
                 FlexOID._seen_hashes.add(alt)
@@ -89,4 +88,5 @@
         raise RuntimeError("Too many collisions; adjust hash length or logic.")
 
+
     @staticmethod
     def generate(domain: str, etype: str, estate: str, text: str,
@@ -109,5 +109,5 @@
         base_hash = FlexOID._blake_hash(hash_seed)
         unique_hash = (
-            FlexOID._ensure_unique(base_hash, version) if enforce_unique else base_hash
+            FlexOID._ensure_unique(base_hash) if enforce_unique else base_hash
         )
 
@@ -120,64 +120,4 @@
 
         return FlexOID(flexo_id_str, signature)    # ──────────────────────────────────────────────────────────────────────────
-
-
-    @staticmethod
-    def generate_old(domain: str, etype: str, estate: str, text: str,
-                 version: int = 1, enforce_unique = True):
-        """
-        Generate a new, versioned, and state-aware Flex-O ID.
-
-        This is the primary constructor for new entities. It combines the domain,
-        entity type, creation date, unique hash (derived from the canonicalized
-        text and lifecycle state), version number, and state suffix into a
-        deterministic but unique identifier string.
-
-        Format:
-        <domain>-<etype><date>-<hash>@<version><state>
-        Example:
-        AF-Q251019-9B3E2@001A
-
-        Parameters
-        ----------
-        domain : str
-        Two-to-six letter domain or organizational prefix (e.g. "AF").
-        etype : str
-        One-to-three letter entity type identifier (e.g. "RQ" for Question).
-        estate : str
-        Lifecycle state whose one-letter code is appended to the version.
-        text : str
-        Entity-specific text seed (used to derive a stable hash).
-        version : int, optional
-        Starting version number (default is 1).
-
-        Returns
-        -------
-        FlexOID
-        A new Flex-O ID object with unique hash and digital signature.
-
-        Notes
-        -----
-        - Changing the text or state will produce a new hash and signature.
-        - Versions start at 1 and increment through `next_version()`.
-        """
-
-        if not (1 <= version <= FlexOID.MAX_VERSION):
-            raise ValueError(f"Version {version} exceeds limit; mark obsolete.")
-
-        date_part = datetime.now(timezone.utc).strftime("%y%m%d")
-
-        # include state in the seed so hash & signature depend on lifecycle state
-        seed = canonical_seed(f"{text}:{estate}")
-
-        base_hash = FlexOID._blake_hash(seed)
-        unique_hash = FlexOID._ensure_unique(base_hash, version)if enforce_unique else base_hash
-
-        ver_part = f"{version:03d}{estate}"
-        flexo_id_str = f"{domain}-{etype}{date_part}-{unique_hash}@{ver_part}"
-
-        # short signature derived from state-aware seed
-        signature = hashlib.blake2s(seed.encode("utf-8"), digest_size=8).hexdigest().upper()
-
-        return FlexOID(flexo_id_str, signature)
 
     @property
