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
This commit is contained in:
parent
79f081850b
commit
27b8e916cc
24 changed files with 765 additions and 3 deletions
40
tests/test_compact_batches.py
Normal file
40
tests/test_compact_batches.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue