# The green build that was not green: evidence note

Date: 2026-09-17

This note supports the /record entry green-build-001 and the piece at
/writing/the-green-build-that-was-not-green.

What happened. At HEAD 1194c9d the prescribed build-then-test sequence passed
while two committed section pages were stale. python3 scripts/build.py exited 0
but rewrote team.html and investors.html, and on a clean checkout the suite
failed 1 of 8: test_standing_sections_exist_and_are_labelled, "Inbox being wired
up" not found in team.html.

Root cause. Commit 1194c9d (private repository) changed scripts/pages.py and
tests/test_build.py without regenerating team.html and investors.html. The stale
diff was 5 lines, +5/-4.

Two masks hid it. The prescribed order (build, then test) rewrote the working
tree before the assertion ran, and test_checked_in_site_matches_source compared
index.html only, as did both CI guards. Commit 3b64a63 had widened only the git
add list.

Fix. Commit d664c1b (private repository) regenerated the stale outputs, extended
the test to every generated output, and widened the guard condition itself to the
full generated set. The em-dash gate fix is commit 8557bca.

Sources. Recon f9089ef9; evidence bundle 6b567cc8; git addendum 51d6b4f1;
independent re-verification 06600ed1; decisions 7afbeb28 and bc815e3a; gate
3002cfed.

Limit. The invariant holds only as wide as its checks: a new generated output
must be added to build.write_outputs(), generated_outputs(), and the CI GENERATED
list, or the coverage narrows silently.
