Download fsm/worm_chain.py from Snapkitty/hilbert: direct link, hf CLI and curl.
- Browser
- Download file 5.8 kB
-
https://huggingface.co/Snapkitty/hilbert/resolve/main/fsm/worm_chain.py
- Command line
-
hf download hf://Snapkitty/hilbert/fsm/worm_chain.py
-
curl -L -o worm_chain.py https://huggingface.co/Snapkitty/hilbert/resolve/main/fsm/worm_chain.py
5.8 kB
| """ | |
| Bifrost WORM-Link — Append-only hash chain for Guardian Omega FSM. | |
| Every state transition is sealed. No mutation. No deletion. | |
| Authors: Ahmad Ali Parr, Jessica L. Williams (SNAPKITTYWEST) | |
| """ | |
| import hashlib | |
| import json | |
| import time | |
| from dataclasses import dataclass, field | |
| from typing import List, Optional | |
| class WORMEntry: | |
| seq: int | |
| timestamp: float | |
| state_from: str | |
| event: str | |
| state_to: str | |
| action: str | |
| record_id: Optional[str] | |
| prev_hash: str | |
| entry_hash: str | |
| class BifrostWORMChain: | |
| """ | |
| Append-only chain for FSM state transitions. | |
| Properties: | |
| - Monotonic: seq always increases | |
| - Immutable: entries cannot be modified after append | |
| - Verifiable: hash chain links every entry to genesis | |
| - Deterministic: same inputs produce same hashes | |
| """ | |
| def __init__(self): | |
| self._chain: List[WORMEntry] = [] | |
| self._genesis_hash = hashlib.sha256(b"BIFROST_GENESIS_2026").hexdigest() | |
| def tip(self) -> str: | |
| if not self._chain: | |
| return self._genesis_hash | |
| return self._chain[-1].entry_hash | |
| def length(self) -> int: | |
| return len(self._chain) | |
| def append(self, state_from: str, event: str, state_to: str, | |
| action: str, record_id: Optional[str] = None) -> WORMEntry: | |
| """Append a new entry. Returns the sealed entry.""" | |
| seq = len(self._chain) | |
| ts = time.time() | |
| prev = self.tip | |
| # Compute entry hash deterministically | |
| payload = f"{seq}|{state_from}|{event}|{state_to}|{action}|{record_id}|{prev}" | |
| entry_hash = hashlib.sha256(payload.encode()).hexdigest() | |
| entry = WORMEntry( | |
| seq=seq, | |
| timestamp=ts, | |
| state_from=state_from, | |
| event=event, | |
| state_to=state_to, | |
| action=action, | |
| record_id=record_id, | |
| prev_hash=prev, | |
| entry_hash=entry_hash | |
| ) | |
| self._chain.append(entry) | |
| return entry | |
| def verify(self) -> bool: | |
| """Verify entire chain integrity.""" | |
| if not self._chain: | |
| return True | |
| # First entry must link to genesis | |
| if self._chain[0].prev_hash != self._genesis_hash: | |
| return False | |
| # Each entry must link to previous | |
| for i in range(1, len(self._chain)): | |
| if self._chain[i].prev_hash != self._chain[i - 1].entry_hash: | |
| return False | |
| # Verify hash computation | |
| e = self._chain[i] | |
| payload = f"{e.seq}|{e.state_from}|{e.event}|{e.state_to}|{e.action}|{e.record_id}|{e.prev_hash}" | |
| expected = hashlib.sha256(payload.encode()).hexdigest() | |
| if e.entry_hash != expected: | |
| return False | |
| # Monotonic timestamps | |
| for i in range(1, len(self._chain)): | |
| if self._chain[i].timestamp < self._chain[i - 1].timestamp: | |
| return False | |
| return True | |
| def export_json(self) -> str: | |
| """Export chain as JSON (for audit).""" | |
| return json.dumps([ | |
| { | |
| "seq": e.seq, | |
| "timestamp": e.timestamp, | |
| "state_from": e.state_from, | |
| "event": e.event, | |
| "state_to": e.state_to, | |
| "action": e.action, | |
| "record_id": e.record_id, | |
| "prev_hash": e.prev_hash, | |
| "entry_hash": e.entry_hash | |
| } | |
| for e in self._chain | |
| ], indent=2) | |
| def rollback_point(self, seq: int) -> Optional[str]: | |
| """ | |
| Find the hash at a given sequence number for recovery. | |
| Does NOT mutate the chain — rollback creates a NEW branch. | |
| """ | |
| if seq < 0 or seq >= len(self._chain): | |
| return None | |
| return self._chain[seq].entry_hash | |
| class GuardianOmegaFSM: | |
| """ | |
| The sovereign FSM with WORM-sealed transitions. | |
| Every state change is recorded immutably. | |
| """ | |
| TRANSITIONS = { | |
| ("idle", "record_arrived"): ("absorbing", "absorb"), | |
| ("absorbing", "schema_valid"): ("classifying", "classify"), | |
| ("absorbing", "schema_invalid"): ("idle", "reject"), | |
| ("classifying", "factual_pass"): ("gating", "noop"), | |
| ("classifying", "factual_fail"): ("idle", "reject"), | |
| ("gating", "plasma_pass"): ("sealing", "seal_worm"), | |
| ("gating", "plasma_fail"): ("idle", "reject"), | |
| ("sealing", "worm_sealed"): ("idle", "approve"), | |
| ("sealing", "worm_failed"): ("recovering", "rollback"), | |
| ("quarantined", "recovery_complete"): ("idle", "noop"), | |
| ("recovering", "recovery_complete"): ("idle", "noop"), | |
| } | |
| def __init__(self): | |
| self.state = "idle" | |
| self.chain = BifrostWORMChain() | |
| def process_event(self, event: str, record_id: Optional[str] = None) -> str: | |
| """Process event, transition state, seal to WORM chain.""" | |
| # Byzantine detection fires from any state | |
| if event == "byzantine_detected": | |
| old_state = self.state | |
| self.state = "quarantined" | |
| self.chain.append(old_state, event, "quarantined", "quarantine", record_id) | |
| return "quarantine" | |
| key = (self.state, event) | |
| if key not in self.TRANSITIONS: | |
| # No transition defined — stay in current state | |
| self.chain.append(self.state, event, self.state, "noop", record_id) | |
| return "noop" | |
| new_state, action = self.TRANSITIONS[key] | |
| self.chain.append(self.state, event, new_state, action, record_id) | |
| self.state = new_state | |
| return action | |
| def verify_integrity(self) -> bool: | |
| """Verify the WORM chain is intact.""" | |
| return self.chain.verify() | |