artifact_hash.py file-level

at sha256:c · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:8 docs: queue board-identity follow-ups so they survive the session Capt… · aaronrene · Sep 5, 2026
1 """Parse ``ARTIFACT_SHA256`` from verify script stdout (§K9.5)."""
2
3 from __future__ import annotations
4
5 import re
6
7 _SHA_LINE = re.compile(r"^ARTIFACT_SHA256=([0-9a-fA-F]+)$")
8
9
10 def parse_artifact_sha256(stdout: bytes) -> str | None:
11 """Decode stdout, strip trailing newlines, parse last line for artifact hash."""
12 try:
13 text = stdout.decode("utf-8")
14 except UnicodeDecodeError:
15 return None
16 stripped = text.rstrip("\n\r")
17 if not stripped:
18 return None
19 if "\n" in stripped:
20 line = stripped.rsplit("\n", 1)[-1]
21 else:
22 line = stripped
23 match = _SHA_LINE.match(line)
24 if not match:
25 return None
26 return match.group(1).lower()