A zero-install, zero-upload TODS validator that runs entirely in the browser via
Pyodide. index.html loads Pyodide, installs the
published tods-validate wheel with micropip, writes the chosen files into
Pyodide's virtual filesystem, and calls validate_feed + render_html. Because
nothing leaves the browser, it is safe for non-public operational data.
This page needs a real browser, so it is not covered by the Python test suite
(only the API it depends on is, in tests/test_playground.py). Serve the folder
and open it:
python -m http.server -d web 8000
# then open http://localhost:8000Select the files in examples/sample-feed/ to confirm a clean pass, then a feed
with problems to confirm findings render. If Pyodide fails to load, update the
version in the <script src=".../pyodide/vX.Y.Z/..."> tag to the current
Pyodide release.
The playground is published at
https://chelseakr.github.io/tods-validate/. GitHub Pages uses the GitHub
Actions build source; the manually dispatched Deploy playground workflow
(.github/workflows/pages.yml) publishes this folder. Verify the live page
after each deployment before sharing it.
rules/ holds one permanent HTML page per rule ID plus an index.html
catalog, generated by scripts/generate_rules_doc.py from the rule registry
(the same run that regenerates docs/rules.md). Do not hand-edit files here;
run python scripts/generate_rules_doc.py to regenerate, and
python scripts/generate_rules_doc.py --check to verify they match the
registry (CI runs this). SARIF helpUri and the language server's hover text
link to https://<pages-domain>/rules/<RULE_ID>.html, so these URLs are a
permanence contract: filenames are the rule ID verbatim, and rule IDs are
never renumbered once released.