port: check-all excused two failing rows with a measurably false reason
The suite reported '2 DIFFERS, allowed: the pin is not on main, so this compares two decoder eras', and I had quoted that for several iterations without testing it. Built sylpheed-cli at formats-pin-2026-08-30 and at workspace HEAD and rendered through both: title, title_jp and main_menu come out 0 pixels different, despite 508 lines of difference in ui_layout.rs. The eras are not the cause, and the allowance was excusing a real signal with a wrong explanation. A second defect in the same eight lines: the expiry tested formats-pin-2026-08-29d while Cargo.toml pins formats-pin-2026-08-30, so it would have expired on a tag this tree does not use. The real reasons are per-screen and already documented: title is the ptloop sweep phase residual, title_jp is the --pose=rest sparkle handling -- where the port's shipped pose scores +0.9994 against the game to the reference's +0.8727, so the port is closer to the game on the row the script calls a disagreement. Replaced with a named set: title and title_jp by name, any other DIFFERS fails. A count cannot notice a different screen drifting while the total stays at two. Controlled both directions -- passes on the known pair, fails on main_menu or extras. The pin reminder now reads the tag out of Cargo.toml so it cannot drift. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -61,18 +61,47 @@ echo
|
||||
echo "consistency (expected to differ, for a stated reason):"
|
||||
rc=0; env OUT="$OUT/screens" tools/port/verify-screen >"$OUT/verify-screen.log" 2>&1 || rc=$?
|
||||
differs=$(grep -c DIFFERS "$OUT/verify-screen.log" || true)
|
||||
# The allowance EXPIRES on its own condition rather than standing forever.
|
||||
# `verify-screen` builds `sylpheed-cli` from the workspace crate while the
|
||||
# exporter is pinned to a tag, so the two read different decoder eras and the six
|
||||
# forced-backdrop screens must disagree. The day the tag is an ancestor of
|
||||
# `origin/main` that stops being true, and this becomes a real failure again --
|
||||
# which is what a suppressed check must never be allowed to do silently.
|
||||
if git merge-base --is-ancestor formats-pin-2026-08-29d origin/main 2>/dev/null; then
|
||||
[ $rc -eq 0 ] && printf ' %-24s ok (the pin has landed; no allowance left)\n' verify-screen \
|
||||
|| { printf ' %-24s 🔴 FAILED and the pin HAS landed -- the allowance has expired\n' verify-screen; fail=1; }
|
||||
unexpected=$(grep DIFFERS "$OUT/verify-screen.log" | awk '{print $1}' \
|
||||
| grep -vx -e title -e title_jp || true)
|
||||
|
||||
# 🔴 THE OLD ALLOWANCE WAS FALSE, AND IT EXCUSED TWO ROWS WITH A REASON THAT IS
|
||||
# NOT THE REASON.
|
||||
#
|
||||
# It said: "the pin is not on main, so this compares two decoder eras". Measured
|
||||
# 2026-08-30 by building `sylpheed-cli` at `formats-pin-2026-08-30` and at the
|
||||
# workspace HEAD and rendering both: `title`, `title_jp` and `main_menu` come out
|
||||
# **0 pixels different**, despite 508 lines of difference in `ui_layout.rs`. The
|
||||
# eras are not the cause of anything here.
|
||||
#
|
||||
# 🔴 And its expiry tested `formats-pin-2026-08-29d` while `Cargo.toml` pins
|
||||
# `formats-pin-2026-08-30` -- so the allowance would have expired on a tag this
|
||||
# tree does not use, in either direction, silently.
|
||||
#
|
||||
# The real reasons are per-screen and already documented:
|
||||
# title -- the ptloop SWEEP PHASE residual, max 6 / over3 790, unchanged
|
||||
# across every renderer change since P1 (DECISIONS.md).
|
||||
# title_jp -- the `--pose=rest` sparkle handling. Adjudicated against the
|
||||
# oracle: the port's SHIPPED pose scores r +0.9994 against the
|
||||
# game where the reference scores +0.8727, and `--pose=rest` is
|
||||
# what this script compares. The port is closer to the game on the
|
||||
# row this script calls a disagreement.
|
||||
#
|
||||
# So the allowance is now a NAMED SET, not a count with an excuse. A DIFFERS on
|
||||
# any other screen fails the run, which a count never could.
|
||||
if [ -n "$unexpected" ]; then
|
||||
printf ' %-24s 🔴 DIFFERS on %s -- not in the allowed set\n' verify-screen "$(echo $unexpected | tr '\n' ' ')"
|
||||
fail=1
|
||||
else
|
||||
printf ' %-24s %d DIFFERS, allowed: the pin is not on main, so this compares\n' verify-screen "$differs"
|
||||
printf ' %-24s two decoder eras. Revert to the path dep when it lands.\n' ""
|
||||
printf ' %-24s %d DIFFERS, both named and explained per screen:\n' verify-screen "$differs"
|
||||
printf ' %-24s title = sweep phase; title_jp = rest-pose sparkles (the port is\n' ""
|
||||
printf ' %-24s closer to the GAME there than the reference is).\n' ""
|
||||
fi
|
||||
|
||||
# Separately, and unrelated to the rows above: revert to the path dependency when
|
||||
# the pin lands. Read from Cargo.toml so it cannot drift out of step again.
|
||||
pin=$(sed -n 's/.*tag = "\([^"]*\)".*/\1/p' crates/sylpheed-export/Cargo.toml | head -1)
|
||||
if [ -n "$pin" ] && git merge-base --is-ancestor "$pin" origin/main 2>/dev/null; then
|
||||
printf ' %-24s ⚠️ %s has landed on main -- revert Cargo.toml to the path dep\n' pin "$pin"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
Reference in New Issue
Block a user