Skip to content

Commit b85153b

Browse files
committed
test: add persistent replay ledger scaffold
1 parent 6e107e5 commit b85153b

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
"""
2+
Persistent replay ledger scaffold.
3+
4+
This is an in-memory replay surface for deterministic refusal replay tests.
5+
It is not a production persistence layer.
6+
"""
7+
8+
from __future__ import annotations
9+
10+
from dataclasses import dataclass, field
11+
from typing import Dict, List
12+
13+
14+
@dataclass
15+
class ReplayLedgerEntry:
16+
nonce: str
17+
decision_id: str
18+
result_code: str
19+
20+
21+
@dataclass
22+
class ReplayLedger:
23+
entries: List[ReplayLedgerEntry] = field(default_factory=list)
24+
index: Dict[str, ReplayLedgerEntry] = field(default_factory=dict)
25+
26+
def record(self, *, nonce: str, decision_id: str, result_code: str) -> None:
27+
entry = ReplayLedgerEntry(
28+
nonce=nonce,
29+
decision_id=decision_id,
30+
result_code=result_code,
31+
)
32+
self.entries.append(entry)
33+
self.index[nonce] = entry
34+
35+
def contains(self, nonce: str) -> bool:
36+
return nonce in self.index
37+
38+
def count(self) -> int:
39+
return len(self.entries)

0 commit comments

Comments
 (0)