@@ -244,6 +244,24 @@ Task-5-style, against the OBS-built image (PR project):
244244 (1966c090). Matrix re-run on the final image ` 9.17-3.1 `
245245 (` sha256:b6565aebcbffcd162a31bf0d348ccfe7c7b9221bf07922f67a5a70b71a483f88 ` ):
246246 ** 6/6 PASS** plus an explicit ` PGADMIN_ENABLE_TLS=True ` HTTPS check.
247+ - ** Post-delivery login fix (2026-09-02, user-reported):** the container
248+ rendered ` /login ` but no credentials worked — every login bounced silently to
249+ ` /login ` . Root cause was a flask-security-too version incompatibility, not the
250+ image: FS-too 5.8.2 fixed issue #1212 by inverting ` UserMixin.is_locked `
251+ (` LoginForm.validate ` went from ` if not user.is_locked() ` in 5.8.1 to
252+ ` if user.is_locked() ` in 5.8.2), while pgAdmin 9.17's own ` User.is_locked `
253+ still returns ` True ` for a * non-locked* user. Under the SP3-built 5.8.2 the
254+ form therefore treated every user as locked, failing validation * after* the
255+ password already verified (the error lands in WTForms ` form_errors ` , which
256+ pgAdmin's login view does not flash — hence the silent bounce). Fixed by
257+ pinning ` python3-flask-security-too ` to ** 5.8.1** (newest release matching
258+ pgAdmin's convention; within pgAdmin's own ` 5.8.* ` pin; spec comment warns
259+ against re-advancing). Rebuilt image ` 9.17-3.2 `
260+ (` sha256:9c565ad309a340011f86fda2dbc7f30e29e3ec996e204daf1681ba81ac46fbf2 ` ).
261+ ** Gate gap closed:** the smoke matrix only asserted ` GET /login ` == 200 and
262+ never performed a real authentication — a new ** T7** now logs in for real
263+ (valid credentials must reach ` /browser/ ` , a wrong password must return to
264+ ` /login ` ); matrix re-run is ** 7/7 PASS** .
247265- Decisions changed during execution: none (the §6 entrypoint amendments and the chmod
248266 are within the approved design; controller rulings recorded in the SDD ledger).
249267
0 commit comments