"""Author: Sandeep Belgavi. Evidence-backed offline regression discovery.""" from dataclasses import dataclass import json @dataclass(frozen=True) class Evidence: ref: str revision: str outcome: str complete: bool redacted: bool @dataclass(frozen=True) class Session: session_id: str revision: str claim: str evidence_ref: str class Observer: """Sequential synthetic store; no model, production mutation or network.""" def __init__(self, evidence): self.evidence = dict(evidence) self.seen, self.findings, self.fixtures = {}, {}, {} self.finding_evidence = {} self.unknown = self.duplicates = self.conflicts = 0 def inspect(self, session): key = (session.session_id, session.revision) if key in self.seen: if self.seen[key] == session: self.duplicates += 1 return 'duplicate' self.conflicts += 1 return 'conflict' self.seen[key] = session evidence = self.evidence.get(session.evidence_ref) if (evidence is None or evidence.ref != session.evidence_ref or evidence.revision != session.revision or not evidence.complete or evidence.outcome not in ('completed', 'pending', 'failed')): self.unknown += 1 return 'unknown' if session.claim == 'completed' and evidence.outcome != 'completed': self.findings[key] = session self.finding_evidence[key] = evidence return 'finding' return 'no_finding' def promote_fixture(self, key, approved=False): if not approved: raise PermissionError('Independent review required') session = self.findings[key] evidence = self.finding_evidence[key] if not evidence.redacted: raise PermissionError('Redaction required for fixture export') self.fixtures[key] = (session, evidence) return 'fixture_created' def main(): evidence = {'e1': Evidence('e1', 'v1', 'pending', True, True)} observer = Observer(evidence) bad = Session('s1', 'v1', 'completed', 'e1') observer.inspect(bad) observer.inspect(bad) observer.inspect(Session('s2', 'v1', 'completed', 'missing')) observer.promote_fixture(('s1', 'v1'), approved=True) print(json.dumps(dict(findings=len(observer.findings), unknown=observer.unknown, duplicates=observer.duplicates, fixtures=len(observer.fixtures), deployed_actions=0), sort_keys=True)) if __name__ == '__main__': main()