test_lac_integrity.py file-level

at main · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:6 fix(ISR): default require_independent_second_reviewer to require Opera… · aaronrene · Sep 2, 2026
1 """Data-integrity tests — Landing + access clarity diagrams + Download href (§LAC.12)."""
2
3 from __future__ import annotations
4
5 import hashlib
6 from pathlib import Path
7
8 from tools.landing.validate import FROZEN_PRIMARY_DOWNLOAD_HREF, validate_landing
9
10 KIT_ROOT = Path(__file__).resolve().parents[2]
11 DIAGRAMS = (
12 "lanes.svg",
13 "regimes.svg",
14 "layers.svg",
15 "kit-consumer.svg",
16 )
17
18
19 def test_landing_svgs_well_formed_and_checksum_stable() -> None:
20 digests: list[str] = []
21 for name in DIAGRAMS:
22 path = KIT_ROOT / "docs" / "landing" / "assets" / "diagrams" / name
23 raw = path.read_bytes()
24 assert len(raw) > 32
25 text = raw.decode("utf-8")
26 assert "<svg" in text.lower()
27 digests.append(hashlib.sha256(raw).hexdigest())
28
29 # Second pass — byte-stable.
30 for name, expected in zip(DIAGRAMS, digests, strict=True):
31 path = KIT_ROOT / "docs" / "landing" / "assets" / "diagrams" / name
32 assert hashlib.sha256(path.read_bytes()).hexdigest() == expected
33
34
35 def test_download_href_host_is_github_releases_only() -> None:
36 assert FROZEN_PRIMARY_DOWNLOAD_HREF.startswith(
37 "https://github.com/aaronrene/overseer-kit/releases/download/"
38 )
39 assert FROZEN_PRIMARY_DOWNLOAD_HREF.endswith(".dmg")
40 html = (KIT_ROOT / "docs" / "landing" / "index.html").read_text(encoding="utf-8")
41 assert FROZEN_PRIMARY_DOWNLOAD_HREF in html
42 # No alternate non-GitHub primary CTA host.
43 assert 'id="cta-download-mac"' in html
44 result = validate_landing(KIT_ROOT)
45 assert result.ok, result.errors
46
47
48 def test_landing_diagrams_match_path_b_sources() -> None:
49 for name in DIAGRAMS:
50 landing = KIT_ROOT / "docs" / "landing" / "assets" / "diagrams" / name
51 source = KIT_ROOT / "tools" / "app" / "static" / "assets" / "diagrams" / name
52 assert landing.read_bytes() == source.read_bytes()