Commit 8f1bb4d
feat(ci): seal the gate against HTML-output tampering (B5)
Adds verify_reviews.py --reproduce: re-renders each managed HTML from its source MD (committed render-manifest flags) and diffs modulo the generation timestamp, catching a hand-edited HTML body whose source/meta were left untouched — the one real hole the B4 Codex review flagged. CI now runs --mode strict --reproduce.
Hardened per a fresh Codex adversarial review of this seal (thread 019e7d44): fail-CLOSED (a managed product absent from the manifest is HTML_TAMPERED, not skipped; a missing/unparseable manifest is fatal exit 2); _normalize() strips the timestamp only in its 3 template-generated spots (not globally) so a body timestamp can't hide a tamper; subprocess pinned to cwd=repo-root; CI paths now include render_html.py / templates/ / manifest, and the code declares renderer+template+manifest a trusted TCB needing human review.
docs/index.html re-rendered onto the current template (it had been left on the 2026-05-20 template) and added to the render manifest. Verified: 47 artifacts reproduce byte-identically modulo timestamp; body tamper caught; deleting a manifest entry fails closed; missing manifest aborts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 84fea14 commit 8f1bb4d
4 files changed
Lines changed: 644 additions & 17 deletions
File tree
- .github/workflows
- docs
- tools
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
14 | 17 | | |
15 | 18 | | |
16 | 19 | | |
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
20 | 26 | | |
21 | 27 | | |
22 | 28 | | |
| |||
35 | 41 | | |
36 | 42 | | |
37 | 43 | | |
38 | | - | |
39 | | - | |
| 44 | + | |
| 45 | + | |
0 commit comments