Survive TML spec drift in deploy and flag unparseable checkpoint exports - #338
Merged
Merged
Conversation
This was referenced Aug 7, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TS Cloud 26.7 added
viz_styleto the TML spec; no released thoughtspot_tml parses it (thoughtspot/thoughtspot_tml#40, same drift class as #29). Export writes raw edoc text and succeeds, so checkpoints from 26.5+ clusters produce files that crash every subsequent deploy with an unhandledTMLDecodeErrorbefore anything is sent.Deploy now survives spec drift
ALL_OR_NONErefuses up front (a partial set violates the policy; exit 1).PARTIAL/VALIDATE_ONLYproceed with the parseable set, report the skips, and exit 1.uses TML attributes newer than the installed thoughtspot_tml <version> (unrecognized attribute: 'viz_style').Checkpoint flags the landmines at export time
Reporting is capped — first 5 failures in detail, then
..and N more, full list in the logfile. Live verification against a 26.7 cluster surfaced 223 drifted Liveboards out of 2,341.Also:
python -m cs_toolsnow exits with the command's return code —__main__.pycalledrun()withoutsys.exit(), so module-mode invocations always exited 0 regardless of failure. The console-script exe was never affected. Adds the suite's first process-level exit-code test (verified red before the fix).Verified live against 26.7: landmine detection on genuine drift,
VALIDATE_ONLYpartial deploy + skip reporting (exit 1),ALL_OR_NONEpre-flight refusal before any API call (exit 1).Side note: a fix in thoughtspot_tml itself is also in motion (spec regen against 26.7.x, tracked upstream in thoughtspot/thoughtspot_tml#40). Once a fixed release ships we'll bump the
pyproject.tomlfloor in a follow-up — the hardening here covers the drift class regardless, including the next attribute the server adds.