Repository navigation
docs: the V10 README with the Sundown carousel, and eight guides - #9
Merged
Merged
Conversation
The README leads with what each reader can do, next to how Superset 6.1.0 handles the same job (each cell sourced), and links a guide per job: MOVE-BETWEEN-INSTANCES, CLONE-A-DASHBOARD, AI-AGENTS, DEPLOY-FROM-GIT, HISTORY-AND-ROLLBACK, SUPERSET-VERSIONS, DASHBOARDS-FROM-CODE and LIMITS. Every spec in the guides passes `chartwright validate`, and every limit states what to do instead.
This was referenced Oct 3, 2026
Merged
# Conflicts: # README.md
debabsah
added a commit
that referenced
this pull request
Oct 4, 2026
…d a visible-text check (#23) * fix: print every path with forward slashes compile's and redesign's output, advise --fix's written, decompile's output and apply's backup printed str(path), which uses backslashes on Windows. They now print as_posix(), as the standards commands already do. * feat: standards exceptions, release floors, classification locks, themes and a visible-text check standards/waivers.yaml records the dashboards that may deviate from a lock: dashboard, locked rule or content item, owner, reason, expiry and an optional layer. A waived finding passes and is reported with who, why and until when; standards apply leaves the item as it is; design.ignore still can't lift a lock. An expired waiver fails standards check and advise (standard.waiver-expired) for the specs checked, and only warns in standards apply, check, apply and plan; restore never reads it. --as-of fixes the day, and standards check --report lists expired, expiring and unmatched waivers. A standards file may declare min_superset. check, apply and plan, on the CLI and through MCP, hold back for each instance the standard's content its release can't take and list it as held; an author's own field still meets the version check. standards check --superset-version shows the same offline. dashboard.theme names a Superset 6.0+ theme, resolved by name on each instance and compiled as its theme_id; decompile reads it back and plan compares it when the spec names one. Standards gain theme and classification slots, and a locked classification keeps its rows. standards verify-visible opens the deployed dashboard in headless Chromium and fails when a locked header or footer line is hidden; Playwright is an optional extra (chartwright[visual]). The live CI job runs it as an optional step. * fix: a stated release is checked against the instance, and a floor over a lock is named check, apply and plan (and their MCP tools) held standard content back by --superset-version without asking the instance, so a wrong flag dropped content the instance takes, locked content included. When the standard could hold something, the stated release is now compared with the one the instance reports: a different one is refused with superset_version_mismatch before anything is resolved or written, and an unconfirmed one holds with a warning. A file whose min_superset holds back content a lock covers warns when the folder loads (floor_suspends_lock), and a deploy that holds locked content lists it with locked_by and says its lock does not apply there. * fix: a waiver pinned to a spec path ignores specs that take its slug A waiver by slug trusted a field the spec's author edits: setting a spec's slug to a waived one inherited the waiver unseen. A waiver may now name spec and slug together and then applies only to the file at that path while it keeps the slug; another spec with the slug gets nothing and is told why. A slug-only match is flagged on every run that knows the spec's path, naming the spec: line to add; MCP, which sees no paths, says when a pinned waiver matched by slug alone; and --report lists a waiver matched by more than one spec. The docs recommend spec: and state the trust boundary. * fix: verify-visible measures the text's own box, reads blur and scale, and fails typed Locked text pushed out of its element by text-indent: -9999px, blurred by filter: blur(4px), or shrunk by transform: scale() passed as visible: the box measured was the element's, and blur and scale weren't read. The browser script now measures the text's range box, clips it by the element's own overflow, sums blur() and scales the font by any transform. What real Chromium measured on 4.1.4, 5.0.0 and 6.1.0 for ten hiding stylesheets is recorded in tests/fixtures/visible/measurements.json (tools/record_visible_measurements.py) and judged offline. A Playwright timeout, untrusted certificate or browser failure is now a typed error, and a ca_bundle profile no longer turns certificate checks off: the browser checks against the operating system's certificates and the payload's tls says so. * ci: a verify-visible regression fails the live job once the browser installs The optional visibility step carried continue-on-error over the check itself, so a regression only reported. Installing the visual extra is now its own optional step, and the check runs without continue-on-error whenever that install succeeded. * test: the live visibility check fails CI once the browser installs Pins the split the previous commit made: the visual install step may fail quietly, the check that follows it may not. * docs: plan reads the standards folder to hold content back; compile checks the spec Four places said plan never reads standards, but plan loads the folder, waivers.yaml included, to hold back what an instance's release can't take. They now say what reads what. CONTRACTS and DESIGN-BRAIN §18 say why compile --superset-version refuses a standard's theme that apply would hold (compile checks the spec, apply the instance) and point to standards check --superset-version to preview holding; §15.41 records that compile doesn't vary while the bundle apply sends does, per decision #9. * fix: an expired waiver that covers nothing says to delete the entry An expired waiver still fails its dashboard's next check when the dashboard meets the standard again, by the decision record's #5; its finding asked to renew it. It now says the waiver covers nothing now and to delete the entry, while one that still covers a finding keeps the renew-or-fix wording. * fix: fix_spec enforces waiver expiry as advise --fix does; dates are YYYY-MM-DD MCP fix_spec read waivers without enforcing expiry while the CLI's advise --fix did; it now enforces it and takes as_of. --as-of, the MCP as_of and a waiver's expires accepted whatever Python's fromisoformat reads, 20261231 and week dates included; they now take YYYY-MM-DD only. * fix: calibrate and design.yaml errors print paths with forward slashes calibrate's overlay path and every design.yaml validation error embedded str(path), which shows backslashes on Windows; they now use as_posix(). The test uses a path that prints as Windows does, so it fails here too. * fix: a waiver naming nothing is reported, and a nested waivers file says where it belongs A waiver for layout.footer[org][9], a block, setting or label no standards file writes, or a rule no standard locks loaded and sat silent. It still loads, but every standards check warns about it (waiver_names_nothing) and --report lists it as unmatched with the reason. standards/teams/waivers.yaml failed as a standard with unknown keys ['waivers']; it now says a waivers file belongs at the top of the standards folder. * fix: deleting an unlocked classification drops its rows in the same apply When an author deleted a classification a standard had written, the next standards apply marked it released but kept the confidential footer row, and only a third run removed it: the rows were keyed off the standard's value until the record said released. A classification written once and gone from the spec now keys no rows at once. * test: pin the edges a mutation pass found unpinned Waivers: a rule waiver covers only its rule, an active waiver wins over an expired one, a spec waiver matches the path not the file name, one naming spec and slug needs both, an expired classification waiver stops keying rows under enforcement, and the row after the last names nothing. Release floors are inclusive, and unmarked standard CSS is neither held nor reported held. verify-visible skips a waived row and says why. tools/ci_live_visible.py adds a text-indent case, which only a browser can check. * test: the backslash path stand-in gives forward slashes from as_posix on Windows too * test: build the stand-in's posix form from the real path, not the overridden str
…policy Corrects claims made stale since the drafts were written at 0.2.0: adopt replaces the copy-at-a-new-slug route (D6 lifted), a chart added in the UI comes off the dashboard instead of failing apply, decompile names what it drops and keeps stacked charts, backups record their instance and are pruned, restore cleans up orphans, version gates, dashboard settings in the spec, the MCP server's 15 tools and its strict gate, custom SQL metrics and filters. Adds docs/STABILITY.md (D17).
Stability policy held to D17 (no byte-for-byte or stricter deprecation promise); adopt's reset advice now gives a path that keeps a setting; adopted renames need the key renamed too; owners gain the applying account; decompile's silent drops listed in full; the adopted-copy route qualified; vocabulary and enumeration fixes.
…mples/sundown; guides up to 0.6.0 Merges main (0.6.0). The README's hero is the Sundown overview, with the five-palette banner after the example, and its status line says 0.6.0. examples/sundown/README.md shows every tab with what in the spec draws it. SUPERSET-VERSIONS lists 0.6.0's refused and warned fields, its four live CI specs and the new version differences; LIMITS counts 17 chart types; AI-AGENTS describes the brief's two recommended styles.
Removes the hero image, the palette banner and the per-tab tour added in the last commit; the README keeps V10's visual placeholder. Keeps the 0.6.0 status line and the guide corrections.
An animated WebP (1600x1000, 8.9 s loop, 4.1 MB) scrolls through Sundown's Overview, Evening ramp, Storage and Supply tabs, then shows About.
10.5 s loop, 4.5 MB; the alt text names the palette sweep.
Same frames and timings; the palette sweep now comes first, then the scroll through the tabs.
Its caption says it was built using Chartwright, without the spec link a first-time reader has no context for.
The author's revision: Chartwright manages Superset dashboards as code, one JSON spec file per dashboard, and the spec's contents are named in full.
… the job table's side columns are set small
debabsah
marked this pull request as ready for review
October 6, 2026 08:13
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.
The V10 README, with its one visual slot filled, and the eight guides it links, brought up to 0.6.0.
README
docs/images/sundown.webp, 1600×1000, a 10.5 s loop, 4.5 MB).Guides in
docs/chartwright/versions.py, four live CI specs (17 chart types) and the new version differences.Checks
Before this merges