Repository navigation
[Golden Failed] Firewall & port forwarding: 7 new screen states have no baseline, 8 re-rendered — 1170 screens failing #1689
Description
Daily Golden Verify on 2026-10-15 (branch dev-2.7.3) reports 1170 failing screens in Firewall and Port Forwarding. This is one suspected cause with two findings. Neither looks like a visual defect.
Suspected cause
- PR fix(firewall, port-forwarding): FWDEV#204's rules in the UI, and no silent saves (#1611, #1080) #1680: fix(firewall, port-forwarding): FWDEV#204's rules in the UI, and no silent saves ([Firewall] All eight toggles are inert on FL-WRT 2.0 — the rule-Description mapping matches 0 of 11 live rules #1611, Port Forwarding: The settings for "Port Range Forwarding" and "Port Range Triggering" are inconsistent with Linksys Now 1.x. #1080) (@AustinChangLinksys), merged 2026-10-14T05:21:01Z into
dev-2.7.3. fix(firewall, port-forwarding): FWDEV#204's rules in the UI, and no silent saves (#1611, #1080) #1680
It changeslib/page/firewall/views/usp_firewall_view.dart,lib/page/firewall/models/*,lib/page/port_forwarding/views/dialogs/port_range_forwarding_dialog.dart,port_triggering_dialog.dart,lib/page/port_forwarding/views/components/*, and the golden testsfirewall/localizations/usp_firewall_view_test.dartandport_forwarding/localizations/usp_port_forwarding_detail_view_test.dart.
This is a suspected cause only, by file relevance: it is the only PR in the window (2026-10-10T20:15:08Z .. 2026-10-14T20:14:58Z) that changes both failing golden test files. PR #1682 (base fix/1611-fwdev204-gui-gaps, the branch of #1680) touches the same firewall files and is listed for context. PR #1664 changes lib/page/port_forwarding/views/usp_port_forwarding_detail_view.dart (ISP-limitation notice) but none of the failing dialog states. Both PRs merged after the last Generate Golden run (2026-10-13T00:04Z, golden-ci PR #39), so that pending baseline PR does not cover them.
Finding 1: missing baseline (546 screens)
Verdict: regression (baseline coverage gap) · confidence 🟢 High · broken_flag: false
7 new screen states have no golden PNG on the baseline branch: firewall-error, firewall-missing_rule, port_forwarding-dialog_overlap_and_lan_host_port_range, port_forwarding-dialog_overlap_port_triggering, port_forwarding-full_single_port, port_forwarding-full_port_range, port_forwarding-full_port_triggering. The PR description lists exactly these as new golden states.
- The report has no expected/actual/diff images for them (
failureImages == null), and thegoldenUrlreturns HTTP 404 (checkedfirewall-error-phone480-el.png,port_forwarding-full_single_port-phone480-el.png). - None of these states existed in the 2026-10-14 report.
No images were read for this finding because none exist.
Finding 2: re-rendered existing states (624 screens)
Verdict: intended (per PR description) · confidence 🟢 High · broken_flag: false
States: firewall-all_on, firewall-all_off, firewall-edit_dirty, port_forwarding-dialog_add_port_range, port_forwarding-dialog_add_port_triggering, port_forwarding-dialog_edit_port_range, port_forwarding-dialog_edit_port_triggering, port_forwarding-dialog_validation_port_range.
- Firewall: the current render adds a Filter Internet NAT redirection switch in Internet filters, which pushes the IPv6 Port Service card down. This matches the PR's
+ Filter Internet NAT redirection. Labels align with the other rows, nothing clipped. - Port forwarding range dialog: the baseline has an Internal Port field; the current render does not, so the rest of the form moves up about 45 px and the dialog gets shorter. This matches the PR's
- Internal Port field. In the current render all fields and the Cancel/Add buttons sit inside the dialog with padding; the overlap in the diff image is only the two layouts superimposed.
Images read: 5 (firewall-all_on|en|phone480 diff + actual, port_forwarding-dialog_add_port_range|en|phone480 diff + actual + baseline). All URLs returned 200 before reading. hasOverflow is false on every row; no new overflow today.
This finding is not auto-accepted into the baseline because Finding 1 is in the same run.
Failing screens
| Screen state | phone480 | screen1080 | desktop1280 | Failing locales |
|---|---|---|---|---|
| firewall-all_off | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| firewall-all_on | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| firewall-edit_dirty | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| firewall-error | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| firewall-missing_rule | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_add_port_range | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_add_port_triggering | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_edit_port_range | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_edit_port_triggering | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_overlap_and_lan_host_port_range | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_overlap_port_triggering | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-dialog_validation_port_range | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-full_port_range | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-full_port_triggering | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
| port_forwarding-full_single_port | ❌ 26/26 | ❌ 26/26 | ❌ 26/26 | all |
Pattern: every state fails in all 26 locales at every rendered width, en included — a content/layout change from one PR, not a translation or font issue.
Full failing screen list (1170)
firewall-all_off|ar|desktop1280firewall-all_off|ar|phone480firewall-all_off|ar|screen1080firewall-all_off|da|desktop1280firewall-all_off|da|phone480firewall-all_off|da|screen1080firewall-all_off|de|desktop1280firewall-all_off|de|phone480firewall-all_off|de|screen1080firewall-all_off|el|desktop1280firewall-all_off|el|phone480firewall-all_off|el|screen1080firewall-all_off|en|desktop1280firewall-all_off|en|phone480firewall-all_off|en|screen1080firewall-all_off|es_AR|desktop1280firewall-all_off|es_AR|phone480firewall-all_off|es_AR|screen1080firewall-all_off|es|desktop1280firewall-all_off|es|phone480firewall-all_off|es|screen1080firewall-all_off|fi|desktop1280firewall-all_off|fi|phone480firewall-all_off|fi|screen1080firewall-all_off|fr_CA|desktop1280firewall-all_off|fr_CA|phone480firewall-all_off|fr_CA|screen1080firewall-all_off|fr|desktop1280firewall-all_off|fr|phone480firewall-all_off|fr|screen1080firewall-all_off|id|desktop1280firewall-all_off|id|phone480firewall-all_off|id|screen1080firewall-all_off|it|desktop1280firewall-all_off|it|phone480firewall-all_off|it|screen1080firewall-all_off|ja|desktop1280firewall-all_off|ja|phone480firewall-all_off|ja|screen1080firewall-all_off|ko|desktop1280firewall-all_off|ko|phone480firewall-all_off|ko|screen1080firewall-all_off|nb|desktop1280firewall-all_off|nb|phone480firewall-all_off|nb|screen1080firewall-all_off|nl|desktop1280firewall-all_off|nl|phone480firewall-all_off|nl|screen1080firewall-all_off|pl|desktop1280firewall-all_off|pl|phone480firewall-all_off|pl|screen1080firewall-all_off|pt_PT|desktop1280firewall-all_off|pt_PT|phone480firewall-all_off|pt_PT|screen1080firewall-all_off|pt|desktop1280firewall-all_off|pt|phone480firewall-all_off|pt|screen1080firewall-all_off|ru|desktop1280firewall-all_off|ru|phone480firewall-all_off|ru|screen1080firewall-all_off|sv|desktop1280firewall-all_off|sv|phone480firewall-all_off|sv|screen1080firewall-all_off|th|desktop1280firewall-all_off|th|phone480firewall-all_off|th|screen1080firewall-all_off|tr|desktop1280firewall-all_off|tr|phone480firewall-all_off|tr|screen1080firewall-all_off|vi|desktop1280firewall-all_off|vi|phone480firewall-all_off|vi|screen1080firewall-all_off|zh_TW|desktop1280firewall-all_off|zh_TW|phone480firewall-all_off|zh_TW|screen1080firewall-all_off|zh|desktop1280firewall-all_off|zh|phone480firewall-all_off|zh|screen1080firewall-all_on|ar|desktop1280firewall-all_on|ar|phone480firewall-all_on|ar|screen1080firewall-all_on|da|desktop1280firewall-all_on|da|phone480firewall-all_on|da|screen1080firewall-all_on|de|desktop1280firewall-all_on|de|phone480firewall-all_on|de|screen1080firewall-all_on|el|desktop1280firewall-all_on|el|phone480firewall-all_on|el|screen1080firewall-all_on|en|desktop1280firewall-all_on|en|phone480firewall-all_on|en|screen1080firewall-all_on|es_AR|desktop1280firewall-all_on|es_AR|phone480firewall-all_on|es_AR|screen1080firewall-all_on|es|desktop1280firewall-all_on|es|phone480firewall-all_on|es|screen1080firewall-all_on|fi|desktop1280firewall-all_on|fi|phone480firewall-all_on|fi|screen1080firewall-all_on|fr_CA|desktop1280firewall-all_on|fr_CA|phone480firewall-all_on|fr_CA|screen1080firewall-all_on|fr|desktop1280firewall-all_on|fr|phone480firewall-all_on|fr|screen1080firewall-all_on|id|desktop1280firewall-all_on|id|phone480firewall-all_on|id|screen1080firewall-all_on|it|desktop1280firewall-all_on|it|phone480firewall-all_on|it|screen1080firewall-all_on|ja|desktop1280firewall-all_on|ja|phone480firewall-all_on|ja|screen1080firewall-all_on|ko|desktop1280firewall-all_on|ko|phone480firewall-all_on|ko|screen1080firewall-all_on|nb|desktop1280firewall-all_on|nb|phone480firewall-all_on|nb|screen1080firewall-all_on|nl|desktop1280firewall-all_on|nl|phone480firewall-all_on|nl|screen1080firewall-all_on|pl|desktop1280firewall-all_on|pl|phone480firewall-all_on|pl|screen1080firewall-all_on|pt_PT|desktop1280firewall-all_on|pt_PT|phone480firewall-all_on|pt_PT|screen1080firewall-all_on|pt|desktop1280firewall-all_on|pt|phone480firewall-all_on|pt|screen1080firewall-all_on|ru|desktop1280firewall-all_on|ru|phone480firewall-all_on|ru|screen1080firewall-all_on|sv|desktop1280firewall-all_on|sv|phone480firewall-all_on|sv|screen1080firewall-all_on|th|desktop1280firewall-all_on|th|phone480firewall-all_on|th|screen1080firewall-all_on|tr|desktop1280firewall-all_on|tr|phone480firewall-all_on|tr|screen1080firewall-all_on|vi|desktop1280firewall-all_on|vi|phone480firewall-all_on|vi|screen1080- … and 1020 more, see report
Suggested next step
Run Generate Golden (mode=baseline, branch=dev-2.7.3) after reviewing the PR #1680 renders in the report. It refreshes golden-ci PR #39; merging it should clear both findings.
Activity
AustinChangLinksys commentedon Oct 15, 2026
Classification: CI golden-verify report (not a product bug) — 2.x line (branch
dev-2.7.3). The report's own verdicts: Finding 1 = baseline coverage gap, Finding 2 = intended re-render per PR #1680.Codebase findings:
dev-2.7.3, consistent with the suspected cause named in the body.hasOverflowfalse on every row).Blockers / open questions:
Suggested roles:
2x-verify(baseline regen only; no dev role needed)Automated triage by gate.py. Dispatch requires Austin's authorization.