feat: add BLIF Flow v2 persistence scaffolding

This commit is contained in:
plx
2026-08-15 23:30:37 +00:00
parent 20bc91dec5
commit e99da64d8b
9 changed files with 533 additions and 4 deletions

View File

@@ -92,14 +92,20 @@ def _group(rows: Iterable[dict[str, Any]], key: str = "opportunity_id") -> dict[
return result
def _load() -> dict[str, Any]:
def _load(
*, expected_database: str = "clientflow_codex_shadow",
expected_user: str | None = "clientflow_codex",
require_read_only: bool = True,
) -> dict[str, Any]:
with engine.connect() as conn:
conn = conn.execution_options(isolation_level="AUTOCOMMIT")
identity = conn.execute(text(
"SELECT current_database(), current_user, current_setting('transaction_read_only')"
)).one()
if tuple(identity) != ("clientflow_codex_shadow", "clientflow_codex", "on"):
if identity[0] != expected_database or (expected_user and identity[1] != expected_user):
raise RuntimeError(f"refusing unexpected database identity: {identity!r}")
if require_read_only and identity[2] != "on":
raise RuntimeError(f"read-only simulation requires transaction_read_only=on: {identity!r}")
conn.execute(text("BEGIN READ ONLY"))
try:
opportunities = [dict(row) for row in conn.execute(text("""
@@ -520,8 +526,16 @@ def _totals(items: Iterable[dict[str, Any]], queue_key: str) -> dict[str, int]:
}
def collect() -> dict[str, Any]:
data = _load()
def collect(
*, expected_database: str = "clientflow_codex_shadow",
expected_user: str | None = "clientflow_codex",
require_read_only: bool = True,
) -> dict[str, Any]:
data = _load(
expected_database=expected_database,
expected_user=expected_user,
require_read_only=require_read_only,
)
opportunities = data["opportunities"]
if len(opportunities) != 328:
raise RuntimeError(f"expected 328 opportunities, found {len(opportunities)}")