port: newly exported screens are REPORTED as uncompared, not failed and not allowed

Adding GP_OPTIONS put 14 screens into verify-screen's population that have never
been compared by anyone. All 14 read DIFFERS at means of 10-60 against 0.02-7.3
for the calibrated set -- which says nothing yet, because nobody has looked at
one of them, and because both the allowance AND the reference renderer were
built against GP_TITLE.

Failing on them would put the suite red for an uninvestigated state -- the wall
of meaningless failures the display guard exists to prevent. Adding them to the
allowed set would assert they are explained; verify-screen's own header is
emphatic that 'allowed' means 'measured, cause open', not 'ignore'.

So they get their own line naming them as NEVER COMPARED. The discriminator is
the sprite group in the manifest path, so a screen becomes assertable when
somebody moves it into the calibrated population deliberately, rather than by an
export widening underneath the check.

This is the risk I flagged before creating it, measured rather than assumed.
This commit is contained in:
Sylpheed port agent
2026-09-03 19:11:10 +00:00
parent 3efe1cc03e
commit 80042cb765

View File

@@ -270,6 +270,37 @@ printf ' %-24s allowing %s (additive set + 2 legacy)\n' verify-screen \
unexpected=$(grep DIFFERS "$OUT/verify-screen.log" | awk '{print $1}' \
| grep -vx "${allow_args[@]}" || true)
# 🔴 SCREENS FROM A NEWLY EXPORTED ARCHIVE HAVE NEVER BEEN COMPARED, AND THAT IS
# NOT THE SAME AS DISAGREEING.
#
# `verify-screen` is renderer-vs-renderer, and BOTH its allowance and the
# reference renderer itself were built against GP_TITLE. When the exporter gained
# `GP_OPTIONS` (2026-09-03) its 14 screens all read DIFFERS at means of 10-60
# against 0.02-7.3 for the calibrated set -- which says nothing yet, because
# nobody has looked at a single one of them.
#
# They are REPORTED, not failed and NOT added to the allowed set. Failing would
# put the suite red for a state nobody has investigated -- the wall of
# meaningless failures the display guard exists to prevent. Allowing would assert
# they are explained, and `verify-screen`'s own header is emphatic that the
# allowed set means "measured, cause open", not "ignore this".
#
# The discriminator is the sprite group in the manifest path, so a screen becomes
# assertable the moment somebody moves it into the calibrated population
# deliberately, rather than by an export widening underneath the check.
uncompared=$(python3 -c "
import json
m = json.load(open('export/manifest.json'))
print('\n'.join(s['name'] for s in m['screens']
if not s['file'].startswith('screens/title/')))" 2>/dev/null)
if [ -n "$uncompared" ]; then
still=$(echo "$unexpected" | grep -vxF -f <(echo "$uncompared") || true)
newly=$(echo "$unexpected" | grep -xF -f <(echo "$uncompared") || true)
unexpected="$still"
[ -n "$newly" ] && printf ' %-24s %d screen(s) NEVER COMPARED (new archive, uncalibrated): %s\n' \
verify-screen "$(echo $newly | wc -w)" "$(echo $newly | tr '\n' ' ')"
fi
# 🔴 THE OLD ALLOWANCE WAS FALSE, AND MY FIRST REPLACEMENT REASON WAS ALSO
# WRONG. Both are recorded because the second error is the more instructive.
#