""" Contradiction Handler — when new knowledge contradicts existing. """ from dataclasses import dataclass @dataclass class ExperienceWeight: parent_cell_id: str value: float = 0.0 n_updates: int = 0 created_step: int = 0 last_fp: str = "" class ContradictionHandler: def __init__(self, similarity_threshold=0.75, verbose=False): self.similarity_threshold = similarity_threshold self.verbose = verbose self.experiences = {} self.n_contradictions = 0 def detect(self, new_fp, existing_fps): try: from cognitive_log import hamming_similarity except ImportError: return None best = (None, 0.0) for fp in existing_fps: sim = hamming_similarity(new_fp, fp) if sim > best[1]: best = (fp, sim) if best[1] >= self.similarity_threshold: self.n_contradictions += 1 return best[0] return None def attach_experience(self, parent_cell, new_fp, step): cid = parent_cell.cell_id if cid in self.experiences: exp = self.experiences[cid] exp.n_updates += 1 exp.last_fp = new_fp return exp exp = ExperienceWeight(parent_cell_id=cid, value=0.0, n_updates=1, created_step=step, last_fp=new_fp) self.experiences[cid] = exp return exp def stats(self): return {"n_contradictions": self.n_contradictions, "n_experiences": len(self.experiences)}