fix(email): unbreak the specification.html drift guard on main#2093
Conversation
…ection specification.html carried a hand-edited 'Context-window envelope' section (added in #2072) that spec_html.py never emitted, so the #2082 drift guard failed and any regeneration silently dropped the section. Move it into the generator with the bounds introspected from context_budget constants, refresh the stale 'no committed artifact carries that stamp yet' claim (the baseline is ctx-stamped since #2089), and regenerate the artifact so check_artifact passes byte-for-byte.
|
Verdict: Approve ✅ This unbreaks the email test suite on I couldn't run 🔍 Technical detailsVerified
🟢 Minor (optional, out-of-diff — not blocking)
Strengths
|
Main's email test suite has been red since #2082 landed this morning, so every email PR now opens onto a failing suite and a release cut from main inherits it. #2082 added a drift guard asserting `specification.html` is a pure render of `spec_html.py` — but the artifact already carried a hand-added "Context-window envelope" section (from #2072) that the generator never emitted, so the guard failed on its first run and every run since. This makes the generator own that section (bounds read from the `context_budget` constants rather than hand-typed), which fixes the guard and means a future regeneration can't silently delete the section — the thing #2082 was written to prevent.
Extracted from #2088 so the release isn't gated on that PR's hardware validation.
Evidence
Before — the guard cannot pass on main, because the generator does not emit what the artifact contains:
Main CI agrees (run on e65e8799):
After — on this branch:
The regenerated artifact diff is 3 lines: the section is now generator-emitted, and its stale "no committed artifact carries that stamp yet" claim is corrected (the baseline has been ctx-stamped since #2089).
Test plan