Repository navigation
v0.94.0
Fixed
-
Cache Key Collision: dict vs ChainMap (SEC-CACHE-COLLISION-001):
- Previous:
dictandChainMapwith identical content produced identical cache keys - Issue:
str(dict)differs fromstr(ChainMap)but cache returned wrong formatted output - Fix: Added
"__dict__"type-tag for dict and"__mapping__"type-tag for Mapping ABC - Location:
runtime/cache.pyIntegrityCache._make_hashable() - Impact: Distinct Mapping types now produce distinct cache keys
- Previous:
-
Cache Key TypeError for frozenset (TYPE-CACHE-FROZENSET-001):
- Previous:
frozensetarguments causedTypeError: Unknown type in cache key - Issue:
frozensetis not a Sequence or Mapping; fell through to error handler - Fix: Added explicit
case frozenset():returning("__frozenset__", ...) - Location:
runtime/cache.pyIntegrityCache._make_hashable() - Impact: frozenset arguments now properly cached
- Previous:
-
Hash Composition Type Markers (SEC-HASH-AMBIGUITY-CACHE-001):
- Previous: Raw content_hash bytes concatenated without type marker
- Issue: Theoretical collision between hash bytes and length-prefixed strings
- Fix: Added
b"\x01"marker before hash bytes,b"\x00"before encoded strings - Location:
runtime/cache.pyIntegrityCacheEntry._compute_checksum(),_compute_content_hash() - Impact: Unambiguous structural hashing for financial-grade integrity
-
FrozenFluentError Section Markers (SEC-HASH-AMBIGUITY-ERROR-001):
- Previous: Optional diagnostic/context sections had no presence markers
- Issue: Theoretical collision between different section configurations
- Fix: Added section markers
b"\x01DIAG"/b"\x00NODIAG"andb"\x01CTX"/b"\x00NOCTX" - Location:
diagnostics/errors.pyFrozenFluentError._compute_content_hash() - Impact: Unambiguous structural hashing regardless of optional field presence
-
Validation Reports All Deep Chains (VAL-REDUNDANT-REPORTS-001):
- Previous:
_detect_long_chainsonly reported the single longest chain - Issue: Users had to fix and re-run to discover additional deep chains
- Fix: Now returns warnings for ALL chains exceeding max_depth, sorted by depth
- Location:
validation/resource.py_detect_long_chains() - Impact: Better UX for complex FTL files with multiple deep reference chains
- Previous: