test_honesty_ledger_integrity.py python
47 lines 1.6 KB
Raw
sha256:0e9549ec7b463911bc08b7d586dc320b1ac9b1f5c943ee7e3865dcc6cb0f6f83 chore(governance): sync handover+roadmap to 84db8c8 (drift:… Human 9 hours ago
1 """Data-integrity tests for honesty ledger append."""
2
3 from __future__ import annotations
4
5 import json
6
7 from tests.support import load_honesty_config, load_honesty_entry
8 from tools.honesty.ledger import append_entry, verify_ledger_file
9 from tools.honesty.ledger_io import read_ledger_entries
10 from tools.honesty.types import LedgerAppendOptions
11
12
13 def test_dual_genesis_entry_atomic(repo_root) -> None:
14 config = load_honesty_config(repo_root)
15 body = load_honesty_entry(repo_root, "verdict-pass.json")
16 result = append_entry(
17 config=config,
18 repo_root=repo_root,
19 options=LedgerAppendOptions(kind="verdict", body=body),
20 )
21 assert result.exit_code == 0
22 ledger = repo_root / ".overseer" / "honesty" / "VERDICT-LEDGER.jsonl"
23 entries = read_ledger_entries(ledger)
24 assert len(entries) == 2
25 assert entries[0]["kind"] == "genesis"
26 assert entries[1]["kind"] == "verdict"
27 assert entries[1]["prev_hash"] == entries[0]["entry_hash"]
28
29
30 def test_verify_idempotent(repo_root) -> None:
31 config = load_honesty_config(repo_root)
32 body = load_honesty_entry(repo_root, "verdict-pass.json")
33 append_entry(
34 config=config,
35 repo_root=repo_root,
36 options=LedgerAppendOptions(kind="verdict", body=body),
37 )
38 first = verify_ledger_file(config=config, repo_root=repo_root)
39 second = verify_ledger_file(config=config, repo_root=repo_root)
40 assert first.exit_code == 0
41 assert second.exit_code == 0
42
43
44 def test_verify_empty_ledger_zero(repo_root) -> None:
45 config = load_honesty_config(repo_root)
46 result = verify_ledger_file(config=config, repo_root=repo_root)
47 assert result.exit_code == 0
File History 1 commit
sha256:6abcf1fa82a7a621ccbc945f19acdba5bc0db54569599404a1452fb4a096a199 fix(ISR): default require_independent_second_reviewer to require Human minor 9 hours ago