mikebridge commented on PR #43350:
URL: https://github.com/apache/superset/pull/43350#issuecomment-5361346930
**Live-verification round + fix** (AI-assisted session on behalf of
@mikebridge; full report in the spec repo,
`specs/sc-115766-versioning-baseline-diffing/live-verification-2026-08-20.md`).
Drove the SC-116905 reproduction against this branch on a live stack (real
Explore UI via Playwright, fresh metadata DB):
- **Modernization save**: 44 recorded rows on master → **6** on this branch
— the advisory suppression works as designed. ✅
- **UI-born charts**: clean histories, params byte-stable. ✅
- **Found surviving phantoms**: the *next* save recorded 3 machine "Cleared"
rows (`order_desc true→null`, `server_page_length 10→null`, `totals_aggregate
\"SUM\"→null`). A payload-intercept probe pinned the mechanism:
`StashFormDataContainer` removes invisible controls' values from form_data in
render effects *after* hydration, so hydration-time tracking can't see the
drops, and the transition producer skipped `!toPresent` — the removes were
never advisory-covered.
**Fix pushed in `1a29be30ef`**: save-time drop transitions using the stash
itself (`explore.hiddenFormData`) as the proof of machine-ness — covered only
when the stash holds the key, the stashed value still equals the persisted
value (a user edit before hiding breaks equality and stays recorded), and the
outgoing payload lacks the key. Keys removed any other way (viz-type switch,
genuine clear) are never in the stash and always record. Backend matcher and
save-side filter were already presence-symmetric — new tests pin that on both
sides.
**Re-verified live**: a no-edit save of a chart carrying stash-hidden keys
now attaches exactly the three drop transitions and records **zero** change
rows (previously three phantom removes). Suites: frontend 18/18 (215 tests),
backend versioning 126/126, changed-file pre-commit green.
Known residual, deliberately out of scope (worth a line in the PR body):
save-time stampings (`dashboards: []`, `extra_form_data: {}`, the
`granularity_sqla`/`time_range` → `adhoc_filters` migration) still record once
on a modernization save — the temporal migration is arguably genuine history.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]