This harness validates HTML compliance and JS compliance separately for a SFWA (single-file web app) using a sfwa-abi-1 spec.
sfwa_harness.py - main CLI (HTML checks; invokes Node for JS checks)sfwa_js_harness.mjs - Node sandbox for JS-side checkspython sfwa_harness.py --spec path/to/app.sfwa-abi.json --html path/to/app.html
python sfwa_harness.py --spec ... --html ... --mode html
python sfwa_harness.py --spec ... --html ... --mode js
python sfwa_harness.py --spec ... --html ... --mode all --json
spec.html.requires.ids exist exactly once.meta[charset], meta[name='viewport'], title.dataAttributes are enforced only when the spec lists explicit required values (non-empty list).check_html() if you add more selectors to specs.sfwa_js_harness.mjs.