informed-decision/tests/test_compact_batches.py
tegwick 27b8e916cc Draft unsigned credential and decision sign-off batches.
INFD-WP-0002 T01–T02: eight one-question memos for net-kingdom-admins,
batch contract without approve-all, no live bind (T08 still open).

Assistant: grok
Assistant-Session: 01a09dc1-b21e-77e1-919e-fcad2f82b267
2026-09-14 17:08:39 +02:00

40 lines
1.7 KiB
Python

from pathlib import Path
import json
from informed_decision.records import memo_from
ROOT = Path(__file__).resolve().parents[1] / "docs" / "batches" / "2026-09-14"
def test_sitting_has_two_unsigned_batches_of_four():
sitting = json.loads((ROOT / "sitting.json").read_text())
assert sitting["status"] == "draft-unsigned"
assert sitting["review_group"] == "net-kingdom-admins"
assert sitting["memo_count"] == 8
assert sitting.get("submitted") is not True
def test_each_memo_is_one_question_with_required_highlight_and_workplan_trace():
questions = set()
for name in ("credentials", "decisions"):
index = json.loads((ROOT / name / "index.json").read_text())
assert index["one_question_per_memo"] is True
assert index["approve_all_forbidden"] is True
assert index["agent_disposition_forbidden"] is True
assert index["submitted"] is False
assert len(index["ordinal"]) == 4
for row in index["ordinal"]:
memo = memo_from(json.loads((ROOT / name / row["memo"]).read_text()))
assert memo.question == row["question"]
assert memo.question not in questions
questions.add(memo.question)
assert memo.requested_act == "approve"
assert memo.approval_id is None
assert row["required_highlight"] in memo.required_ack_ids
assert row["workplan"]
assert row["hub_task_prefix"]
packet = (ROOT / name / row["packet"]).read_text()
assert "password" not in packet.lower()
assert "secret_id" not in packet.lower()
assert row["workplan"] in packet
assert len(questions) == 8