{"assertions":["theme-test.yaml parses","schema valid","architecture/workflow declared"],"blocking":true,"checkpoint_ids":["INTAKE.001","ARCH.001"],"cost":"low","domain":"meta","features":[],"id":"TF-META-001","implementation":"tools/theme_ci.py:TF-META-001","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Theme verification contract validates against schema","workflows":[]}
{"assertions":["JSONL parses","unique IDs","known statuses","implementation exists when complete"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"meta","features":[],"id":"TF-META-002","implementation":"tools/theme_ci.py:TF-META-002","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Test ledger is well formed and IDs are unique","workflows":[]}
{"assertions":["no irrelevant builder profile","feature gates respected","test IDs deduplicated"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"meta","features":[],"id":"TF-META-003","implementation":"tools/theme_ci.py:TF-META-003","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Planner selects only applicable profile/feature tests","workflows":[]}
{"assertions":["every required applicable test reaches a workflow stage","no orphaned required checks"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"meta","features":[],"id":"TF-META-004","implementation":"tools/theme_ci.py:TF-META-004","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Required test reachability is complete","workflows":[]}
{"assertions":["pull_request gate exists","no required continue-on-error","aggregate depends on planned jobs","runtime needs admission"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"meta","features":[],"id":"TF-META-005","implementation":"tools/theme_ci.py:TF-META-005","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Workflow topology is fail closed","workflows":[]}
{"assertions":["fork guard occurs before checkout/runtime","privileged job internal-only"],"blocking":true,"checkpoint_ids":["SEC.FILE.001"],"cost":"low","domain":"security","features":[],"id":"TF-META-006","implementation":"tools/theme_ci.py:TF-META-006","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Self-hosted fork PR admission blocks untrusted checkout","workflows":[]}
{"assertions":["no debian1/debian2/debian3 runs-on","approved scale-set labels only"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-007","implementation":"tools/theme_ci.py:TF-META-007","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"ARC jobs use shared scale-set labels, never hostnames","workflows":[]}
{"assertions":["no empty shard","stable shard IDs","indivisible groups preserved"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-008","implementation":"tools/theme_ci.py:TF-META-008","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Browser shard plan emits only nonempty unique shard IDs","workflows":[]}
{"assertions":["all shard IDs present","cell sets disjoint","executed equals expected","notStarted zero for required"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-009","implementation":"tools/theme_ci.py:TF-META-009","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"aggregate","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Receipt aggregate proves expected/executed union completeness","workflows":[]}
{"assertions":["receipts if always","timings if always","heavy evidence failure-only"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-010","implementation":"tools/theme_ci.py:TF-META-010","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"CI timing/receipt artifacts are always emitted","workflows":[]}
{"assertions":["workflow concurrency key PR-scoped","cancel-in-progress true"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-011","implementation":"tools/theme_ci.py:TF-META-011","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Superseded PR runs cancel before expensive work","workflows":[]}
{"assertions":["n","o"," ","a","c","t","i","o","n","s","/","c","a","c","h","e"," ","i","n"," ","A","R","C"," ","j","o","b","s"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-012","implementation":"tools/theme_ci.py:TF-META-012","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"No actions/cache is used on ARC self-hosted jobs","workflows":[]}
{"assertions":["theme list generated from themes/","contract drift check available"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-013","implementation":"tools/theme_ci.py:TF-META-013","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Check manifest is generated rather than hand-curated","workflows":[]}
{"assertions":["r","e","q","u","i","r","e","d"," ","c","o","m","p","l","e","t","e"," ","g","u","a","r","d","s"," ","c","a","r","r","y"," ","r","e","d","_","p","r","o","o","f"," ","e","v","i","d","e","n","c","e"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"ci","features":[],"id":"TF-META-014","implementation":"tools/theme_ci.py:TF-META-014","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Required gate has synthetic RED proof metadata","workflows":[]}
{"assertions":["Install pack audit round trip"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-001","implementation":"tests/test_theme_factory.py:test_install_pack_and_audit_round_trip","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Install pack audit round trip","workflows":[]}
{"assertions":["Reject unsafe ZIP traversal path"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-002","implementation":"tests/test_theme_factory.py:test_rejects_malformed_archives[path-traversal]","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Reject unsafe ZIP traversal path","workflows":[]}
{"assertions":["Reject multi-root ZIP"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-003","implementation":"tests/test_theme_factory.py:test_rejects_malformed_archives[multi-root]","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Reject multi-root ZIP","workflows":[]}
{"assertions":["Require style.css and index.php in ZIP"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-004","implementation":"tests/test_theme_factory.py:test_rejects_malformed_archives[missing-required]","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Require style.css and index.php in ZIP","workflows":[]}
{"assertions":["Reject case-fold duplicate ZIP paths"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-005","implementation":"tests/test_theme_factory.py:test_rejects_malformed_archives[duplicate]","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Reject case-fold duplicate ZIP paths","workflows":[]}
{"assertions":["Reject symlink in ZIP"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-006","implementation":"tests/test_theme_factory.py:test_rejects_symlink","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Reject symlink in ZIP","workflows":[]}
{"assertions":["Generated ZIP cannot escape declared output directory"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-007","implementation":"tests/test_theme_factory.py:test_result_requires_one_zip_inside_output","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Generated ZIP cannot escape declared output directory","workflows":[]}
{"assertions":["Pack rejects unexpected container files"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-008","implementation":"tests/test_theme_factory.py:test_pack_rejects_unexpected_container_file","inputs":["ci/**","tools/theme_ci.py","tools/theme_factory.py","tests/test_theme_factory.py","tests/verification/**",".github/workflows/themefactory-verify.yml"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":true,"required":true,"runner":"static","scope":"repo","status":"complete","title":"Pack rejects unexpected container files","workflows":[]}
{"assertions":["two packs have identical sha256"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-009","implementation":"tools/theme_ci.py:TF-PKG-009","inputs":["themes/{theme}/**"],"phase":"release","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Distribution ZIP is deterministic for identical tree","workflows":[]}
{"assertions":["same relative file set","same sha256 per file"],"blocking":true,"checkpoint_ids":["PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-010","implementation":"tools/theme_ci.py:TF-PKG-010","inputs":["themes/{theme}/**"],"phase":"release","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Dist ZIP tree equals canonical theme source tree","workflows":[]}
{"assertions":["tracked dist artifact corresponds to theme tree"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-011","implementation":"tools/theme_ci.py:TF-PKG-011","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Dist ZIP is current when shippable source changes","workflows":[]}
{"assertions":["screenshot.png decodes","1200x900 recommended or contract override"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-012","implementation":"tools/theme_ci.py:TF-PKG-012","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Theme screenshot exists and meets WordPress dimensions","workflows":[]}
{"assertions":["no node_modules/.git/tests/tmp/cache/source maps unless allowed"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-013","implementation":"tools/theme_ci.py:TF-PKG-013","inputs":["themes/{theme}/**"],"phase":"release","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"No forbidden development artifacts in ZIP","workflows":[]}
{"assertions":["archive budget","member budget","compression-ratio budget"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-014","implementation":"tools/theme_ci.py:TF-PKG-014","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Archive uncompressed/file-size/compression-ratio budgets enforced","workflows":[]}
{"assertions":["install from ZIP succeeds","theme activates"],"blocking":true,"checkpoint_ids":["PKG.INSTALL.001","PKG.ZIP.001"],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-015","implementation":"tests/runtime/runtime_harness.py:TF-PKG-015","inputs":["themes/{theme}/**"],"phase":"release","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Fresh WordPress installs exact dist ZIP","workflows":[]}
{"assertions":["runtime receipt sha256 equals package receipt sha256"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"packaging","features":[],"id":"TF-PKG-016","implementation":"tests/runtime/runtime_harness.py:TF-PKG-016","inputs":["themes/{theme}/**"],"phase":"release","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Fresh-install artifact digest equals planned artifact digest","workflows":[]}
{"assertions":["style.css","index.php"],"blocking":true,"checkpoint_ids":["PKG.STRUCT.001"],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-001","implementation":"tools/theme_ci.py:TF-STATIC-001","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Required WordPress theme files exist","workflows":[]}
{"assertions":["Theme Name","Version","Requires at least","Requires PHP"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-002","implementation":"tools/theme_ci.py:TF-STATIC-002","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"style.css theme header is valid","workflows":[]}
{"assertions":["php -l exit 0 for every PHP file"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-003","implementation":"tools/theme_ci.py:TF-STATIC-003","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"All PHP files parse","workflows":[]}
{"assertions":["node --check exit 0"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-004","implementation":"tools/theme_ci.py:TF-STATIC-004","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"All first-party JavaScript parses","workflows":[]}
{"assertions":["JSON decode succeeds"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-005","implementation":"tools/theme_ci.py:TF-STATIC-005","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"All JSON files parse","workflows":[]}
{"assertions":["version supported","settings/styles object types","valid JSON"],"blocking":true,"checkpoint_ids":["GB.001"],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-006","implementation":"tools/theme_ci.py:TF-STATIC-006","inputs":["themes/{theme}/**"],"phase":"static","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"theme.json validates basic WordPress schema contract","workflows":[]}
{"assertions":["block.json required fields","unique names","editor/frontend handles exist"],"blocking":true,"checkpoint_ids":["GB.005"],"cost":"low","domain":"static","features":["custom_blocks"],"id":"TF-STATIC-007","implementation":"tools/theme_ci.py:TF-STATIC-007","inputs":["themes/{theme}/**"],"phase":"static","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Custom block metadata is structurally valid","workflows":[]}
{"assertions":["no symlink"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"security","features":[],"id":"TF-STATIC-008","implementation":"tools/theme_ci.py:TF-STATIC-008","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"No filesystem symlinks in canonical theme tree","workflows":[]}
{"assertions":["secret pattern scan clean","private key markers absent"],"blocking":true,"checkpoint_ids":["SEC.FILE.001"],"cost":"low","domain":"security","features":[],"id":"TF-STATIC-009","implementation":"tools/theme_ci.py:TF-STATIC-009","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"No obvious committed secrets/private keys/tokens","workflows":[]}
{"assertions":["no /home/user or /mnt/data or buildbox absolute path"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"security","features":[],"id":"TF-STATIC-010","implementation":"tools/theme_ci.py:TF-STATIC-010","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"No absolute workstation/buildbox paths in shipped code","workflows":[]}
{"assertions":["no bundled sendmail/PHPMailer executable tree unless contract allowlist"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"security","features":[],"id":"TF-STATIC-011","implementation":"tools/theme_ci.py:TF-STATIC-011","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"No executable legacy mailer/runtime payload unless explicitly allowed","workflows":[]}
{"assertions":["Text Domain declared","literal domains match when translation calls exist"],"blocking":true,"checkpoint_ids":["I18N.001"],"cost":"low","domain":"i18n","features":[],"id":"TF-STATIC-012","implementation":"tools/theme_ci.py:TF-STATIC-012","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Text domain and translation calls are coherent","workflows":[]}
{"assertions":["no var_dump/die/dd debug calls outside allowlist"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"static","features":[],"id":"TF-STATIC-013","implementation":"tools/theme_ci.py:TF-STATIC-013","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"No debug-only fatal output or var dumps in shipped PHP","workflows":[]}
{"assertions":["contract plugin dependencies have version/purpose/required flag"],"blocking":true,"checkpoint_ids":["ARCH.004"],"cost":"low","domain":"architecture","features":[],"id":"TF-STATIC-014","implementation":"tools/theme_ci.py:TF-STATIC-014","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Declared dependency/plugin requirements are documented","workflows":[]}
{"assertions":["manifest exists","source identity/digest or file inventory present","allowed deviations declared"],"blocking":true,"checkpoint_ids":["ARCH.005","ARCH.006"],"cost":"low","domain":"conversion","features":[],"id":"TF-STATIC-015","implementation":"tools/theme_ci.py:TF-STATIC-015","inputs":["themes/{theme}/**"],"phase":"static","profiles":["source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Source preservation manifest exists when conversion profile applies","workflows":[]}
{"assertions":["baseline/reference authority declared","baseline files resolvable"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"visual","features":[],"id":"TF-STATIC-016","implementation":"tools/theme_ci.py:TF-STATIC-016","inputs":["themes/{theme}/**"],"phase":"static","profiles":["new-theme","mockup-to-theme","source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Approved visual baseline manifest exists when visual authority requires it","workflows":[]}
{"assertions":["state-changing admin handlers declare nonce/capability","no eval/assert shell patterns"],"blocking":true,"checkpoint_ids":["SEC.INPUT.001","SEC.NONCE.001"],"cost":"low","domain":"security","features":[],"id":"TF-STATIC-017","implementation":"tools/theme_ci.py:TF-STATIC-017","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Theme files pass WordPress escaping/nonce/capability static policy","workflows":[]}
{"assertions":["home returns 2xx","no PHP fatal marker"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"runtime","features":[],"id":"TF-RUNTIME-001","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Fresh WordPress boots after theme activation","workflows":[]}
{"assertions":["all generated route cells executed","2xx/expected redirect"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"frontend","features":[],"id":"TF-RUNTIME-002","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared public routes return successful responses","workflows":[]}
{"assertions":["pageerror empty"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"frontend","features":[],"id":"TF-RUNTIME-003","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No uncaught page exceptions on declared routes","workflows":[]}
{"assertions":["console.error empty after third-party allowlist"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"frontend","features":[],"id":"TF-RUNTIME-004","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No theme-controlled console errors","workflows":[]}
{"assertions":["no failed local JS/CSS/image/font/REST request"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"frontend","features":[],"id":"TF-RUNTIME-005","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No failed theme-controlled network resources","workflows":[]}
{"assertions":["visible img naturalWidth > 0","local CSS background URLs resolve"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"frontend","features":[],"id":"TF-RUNTIME-006","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No broken rendered images","workflows":[]}
{"assertions":["h1 count equals contract default 1"],"blocking":true,"checkpoint_ids":["SEO.STRUCT.001"],"cost":"low","domain":"seo","features":[],"id":"TF-RUNTIME-007","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-007","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Every page has one logical H1 unless contract exception","workflows":[]}
{"assertions":["header count","footer count","no duplicate shell"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"frontend","features":[],"id":"TF-RUNTIME-008","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-008","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared global header/footer shell is present exactly once","workflows":[]}
{"assertions":["menu links local routes resolve","current item unique","no empty required link"],"blocking":true,"checkpoint_ids":["NAV.001"],"cost":"low","domain":"navigation","features":[],"id":"TF-RUNTIME-009","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-009","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Dynamic navigation links resolve and current state is coherent","workflows":[]}
{"assertions":["no Warning/Notice/Fatal error signatures in controlled responses"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"security","features":[],"id":"TF-RUNTIME-010","implementation":"tests/runtime/runtime_harness.py:TF-RUNTIME-010","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Runtime PHP/debug notices do not leak into HTML/JSON","workflows":[]}
{"assertions":["fresh site uses pretty permalink structure before activation","activate exact candidate theme without manual rewrite flush","run demo import when declared without manual rewrite flush","declared page/post/CPT archive and singular pretty-permalink routes resolve immediately","WordPress rewrite_rules option contains declared custom rewrite bases when applicable","theme does not call flush_rewrite_rules on normal frontend/admin requests"],"blocking":true,"checkpoint_ids":["PKG.INSTALL.001","NAV.001"],"cost":"medium","domain":"install","features":[],"id":"TF-INSTALL-001","implementation":"tests/runtime/runtime_harness.py:TF-INSTALL-001","inputs":["themes/{theme}/**","dist/{theme}.zip"],"phase":"runtime","profiles":["core"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Fresh activation/import flushes rewrite rules so pretty permalinks work immediately","workflows":[]}
{"assertions":["zero serious/critical WCAG2AA violations"],"blocking":true,"checkpoint_ids":["A11Y.AUTO.001"],"cost":"medium","domain":"accessibility","features":[],"id":"TF-A11Y-001","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Axe WCAG 2.2 AA baseline passes","workflows":[]}
{"assertions":["skip link focusable","target receives/follows focus"],"blocking":true,"checkpoint_ids":["A11Y.KBD.001"],"cost":"low","domain":"accessibility","features":[],"id":"TF-A11Y-002","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Skip link is keyboard reachable and moves focus to content","workflows":[]}
{"assertions":["Enter/Space/Arrow opens when applicable","Escape closes and restores focus"],"blocking":true,"checkpoint_ids":["A11Y.KBD.001"],"cost":"low","domain":"accessibility","features":[],"id":"TF-A11Y-003","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Desktop navigation dropdown is operable by keyboard","workflows":[]}
{"assertions":["toggle focusable","open/close state semantic","no focusable hidden submenu after close"],"blocking":true,"checkpoint_ids":["A11Y.KBD.001"],"cost":"low","domain":"accessibility","features":[],"id":"TF-A11Y-004","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Mobile navigation is operable and dismissible by keyboard","workflows":[]}
{"assertions":["input/select/textarea/button accessible name"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"accessibility","features":["forms"],"id":"TF-A11Y-005","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Visible form controls have accessible names/labels","workflows":[]}
{"assertions":["required controls nonzero","touch controls meet policy or spacing exception"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"accessibility","features":[],"id":"TF-A11Y-006","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Interactive controls meet declared minimum target geometry","workflows":[]}
{"assertions":["focused controls visible in viewport","outline/focus style detectable for sampled controls"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"accessibility","features":[],"id":"TF-A11Y-007","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-007","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Focus indicators are not permanently clipped/obscured","workflows":[]}
{"assertions":["Tab sequence progresses or declared focus trap can dismiss"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"accessibility","features":[],"id":"TF-A11Y-008","implementation":"tests/runtime/runtime_harness.py:TF-A11Y-008","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No keyboard trap in modal/menu/forms","workflows":[]}
{"assertions":["No unintended document horizontal overflow"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-001","implementation":"tests/runtime/runtime_harness.py:TF-UI-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No unintended document horizontal overflow","workflows":[]}
{"assertions":["Required interactive elements remain inside reachable viewport"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-002","implementation":"tests/runtime/runtime_harness.py:TF-UI-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Required interactive elements remain inside reachable viewport","workflows":[]}
{"assertions":["No independent controls overlap ambiguously"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-003","implementation":"tests/runtime/runtime_harness.py:TF-UI-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No independent controls overlap ambiguously","workflows":[]}
{"assertions":["No unrelated text/media destructive overlap"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-004","implementation":"tests/runtime/runtime_harness.py:TF-UI-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No unrelated text/media destructive overlap","workflows":[]}
{"assertions":["No invisible element intercepts pointer input"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-005","implementation":"tests/runtime/runtime_harness.py:TF-UI-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No invisible element intercepts pointer input","workflows":[]}
{"assertions":["No stale overlay/backdrop blocks page"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-006","implementation":"tests/runtime/runtime_harness.py:TF-UI-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No stale overlay/backdrop blocks page","workflows":[]}
{"assertions":["No scroll lock exists without active owner"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-007","implementation":"tests/runtime/runtime_harness.py:TF-UI-007","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No scroll lock exists without active owner","workflows":[]}
{"assertions":["No pathological character-level word fragmentation"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-008","implementation":"tests/runtime/runtime_harness.py:TF-UI-008","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No pathological character-level word fragmentation","workflows":[]}
{"assertions":["Required labels/identifiers are not unrecoverably truncated"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-009","implementation":"tests/runtime/runtime_harness.py:TF-UI-009","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Required labels/identifiers are not unrecoverably truncated","workflows":[]}
{"assertions":["No unintended nested/double vertical scroll trap"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-010","implementation":"tests/runtime/runtime_harness.py:TF-UI-010","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No unintended nested/double vertical scroll trap","workflows":[]}
{"assertions":["Hidden responsive variants do not retain active focus targets"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-011","implementation":"tests/runtime/runtime_harness.py:TF-UI-011","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Hidden responsive variants do not retain active focus targets","workflows":[]}
{"assertions":["Overflow clipping does not cut focus/dropdown/validation UI"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-012","implementation":"tests/runtime/runtime_harness.py:TF-UI-012","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Overflow clipping does not cut focus/dropdown/validation UI","workflows":[]}
{"assertions":["Fixed/sticky layers do not cover required content/admin bar"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-013","implementation":"tests/runtime/runtime_harness.py:TF-UI-013","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Fixed/sticky layers do not cover required content/admin bar","workflows":[]}
{"assertions":["Modal dismissal/focus restoration contract holds"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-014","implementation":"tests/runtime/runtime_harness.py:TF-UI-014","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Modal dismissal/focus restoration contract holds","workflows":[]}
{"assertions":["Repeated components obey declared spacing/alignment tolerance"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-015","implementation":"tests/runtime/runtime_harness.py:TF-UI-015","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Repeated components obey declared spacing/alignment tolerance","workflows":[]}
{"assertions":["Declared equal-height card groups satisfy geometry tolerance"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-016","implementation":"tests/runtime/runtime_harness.py:TF-UI-016","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared equal-height card groups satisfy geometry tolerance","workflows":[]}
{"assertions":["Missing/empty dynamic regions do not leave destructive reserved space"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-017","implementation":"tests/runtime/runtime_harness.py:TF-UI-017","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Missing/empty dynamic regions do not leave destructive reserved space","workflows":[]}
{"assertions":["Responsive breakpoints have no both/neither visibility gap"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-018","implementation":"tests/runtime/runtime_harness.py:TF-UI-018","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Responsive breakpoints have no both/neither visibility gap","workflows":[]}
{"assertions":["Images preserve declared aspect/crop containment"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-019","implementation":"tests/runtime/runtime_harness.py:TF-UI-019","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Images preserve declared aspect/crop containment","workflows":[]}
{"assertions":["Disabled controls stay semantically and behaviorally disabled"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-020","implementation":"tests/runtime/runtime_harness.py:TF-UI-020","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Disabled controls stay semantically and behaviorally disabled","workflows":[]}
{"assertions":["No accidental duplicate IDs/forms/interactive components"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-021","implementation":"tests/runtime/runtime_harness.py:TF-UI-021","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"No accidental duplicate IDs/forms/interactive components","workflows":[]}
{"assertions":["Absolute/high-z layers do not escape owner or intercept unrelated UI"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-022","implementation":"tests/runtime/runtime_harness.py:TF-UI-022","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Absolute/high-z layers do not escape owner or intercept unrelated UI","workflows":[]}
{"assertions":["Required functionality is not hover-only"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-023","implementation":"tests/runtime/runtime_harness.py:TF-UI-023","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Required functionality is not hover-only","workflows":[]}
{"assertions":["Gutenberg wide/full/nested content does not break viewport"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-024","implementation":"tests/runtime/runtime_harness.py:TF-UI-024","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Gutenberg wide/full/nested content does not break viewport","workflows":[]}
{"assertions":["Mobile input/table/menu behavior does not expand or trap viewport"],"blocking":true,"checkpoint_ids":["VQA.INVAR.001"],"cost":"medium","domain":"ui-invariant","features":[],"id":"TF-UI-025","implementation":"tests/runtime/runtime_harness.py:TF-UI-025","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Mobile input/table/menu behavior does not expand or trap viewport","workflows":[]}
{"assertions":["no Error loading block","no invalid JSON response","no block recovery","no page/console errors","theme REST JSON valid"],"blocking":true,"checkpoint_ids":["GB.006"],"cost":"high","domain":"gutenberg","features":[],"id":"TF-EDITOR-001","implementation":"tests/runtime/runtime_harness.py:TF-EDITOR-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Every imported Gutenberg page opens with valid block/REST responses","workflows":[]}
{"assertions":["edit sentinel","save","frontend changes","restore"],"blocking":true,"checkpoint_ids":["GB.006"],"cost":"high","domain":"gutenberg","features":[],"id":"TF-EDITABILITY-001","implementation":"tests/runtime/runtime_harness.py:TF-EDITABILITY-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Representative Gutenberg content edit-save-frontend-restore round trip","workflows":[]}
{"assertions":["required editableFields subset exposed fields"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"gutenberg","features":["custom_blocks"],"id":"TF-EDITABILITY-002","implementation":"tools/theme_ci.py:TF-EDITABILITY-002","inputs":["themes/{theme}/**"],"phase":"static","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Declared editable-field coverage is exposed by custom/source blocks","workflows":[]}
{"assertions":["WP global settings endpoint/styles reflect theme.json"],"blocking":true,"checkpoint_ids":["GB.001"],"cost":"low","domain":"gutenberg","features":[],"id":"TF-GB-001","implementation":"tests/runtime/runtime_harness.py:TF-GB-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"theme.json is loaded by WordPress","workflows":[]}
{"assertions":["declared blocks registered","inserter available unless hidden by contract"],"blocking":true,"checkpoint_ids":["GB.005"],"cost":"low","domain":"gutenberg","features":["custom_blocks"],"id":"TF-GB-002","implementation":"tests/runtime/runtime_harness.py:TF-GB-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Custom blocks register successfully and are insertable","workflows":[]}
{"assertions":["declared pattern slugs registered"],"blocking":true,"checkpoint_ids":["GB.004"],"cost":"low","domain":"gutenberg","features":[],"id":"TF-GB-003","implementation":"tests/runtime/runtime_harness.py:TF-GB-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Patterns required by contract are registered","workflows":[]}
{"assertions":["declared semantic roots/content present editor and frontend"],"blocking":true,"checkpoint_ids":["GB.006"],"cost":"medium","domain":"gutenberg","features":[],"id":"TF-GB-004","implementation":"tests/runtime/runtime_harness.py:TF-GB-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Editor/frontend structural parity holds for declared components","workflows":[]}
{"assertions":["each custom block declares justification/capability unavailable in core"],"blocking":true,"checkpoint_ids":["GB.002","GB.005"],"cost":"low","domain":"gutenberg","features":["custom_blocks"],"id":"TF-GB-005","implementation":"tools/theme_ci.py:TF-GB-005","inputs":["themes/{theme}/**"],"phase":"static","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Core blocks are preferred where contract does not justify custom block","workflows":[]}
{"assertions":["save","reload editor","no invalid content/recovery"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"gutenberg","features":[],"id":"TF-GB-006","implementation":"tests/runtime/runtime_harness.py:TF-GB-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Block save serialization remains valid after reload","workflows":[]}
{"assertions":["get_page_templates contains contract templates"],"blocking":true,"checkpoint_ids":["GB.003"],"cost":"low","domain":"templates","features":["page_templates"],"id":"TF-TEMPLATE-001","implementation":"tests/runtime/runtime_harness.py:TF-TEMPLATE-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","classic"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Required page templates are registered by WordPress","workflows":[]}
{"assertions":["_wp_page_template equals contract","not default when dedicated template required"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"templates","features":["page_templates"],"id":"TF-TEMPLATE-002","implementation":"tests/runtime/runtime_harness.py:TF-TEMPLATE-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Imported pages use declared dedicated templates","workflows":[]}
{"assertions":["create empty page","select template","expected blocks/pattern offered or inserted"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"templates","features":["page_templates"],"id":"TF-TEMPLATE-003","implementation":"tests/runtime/runtime_harness.py:TF-TEMPLATE-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["gutenberg-hybrid","block-fse"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Selecting dedicated template provides expected editable block composition","workflows":[]}
{"assertions":["header/footer/content root present exactly as contract"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"templates","features":["page_templates"],"id":"TF-TEMPLATE-004","implementation":"tests/runtime/runtime_harness.py:TF-TEMPLATE-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Dedicated template frontend shell matches declared global shell","workflows":[]}
{"assertions":["notice appears after activation","CTA visible","target Appearance submenu"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"demo-import","features":["demo_import"],"id":"TF-DEMO-001","implementation":"tests/runtime/runtime_harness.py:TF-DEMO-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Activation notice offers demo import CTA under Appearance","workflows":[]}
{"assertions":["Appearance submenu exists","top-level Import menu absent"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"demo-import","features":["demo_import"],"id":"TF-DEMO-002","implementation":"tests/runtime/runtime_harness.py:TF-DEMO-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Demo importer is not exposed as top-level admin menu","workflows":[]}
{"assertions":["unauthorized request rejected","missing/bad nonce rejected"],"blocking":true,"checkpoint_ids":["SEC.NONCE.001"],"cost":"low","domain":"demo-import","features":["demo_import"],"id":"TF-DEMO-003","implementation":"tests/runtime/runtime_harness.py:TF-DEMO-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Demo importer requires capability and nonce","workflows":[]}
{"assertions":["s","t","a","t","e"," ","s","n","a","p","s","h","o","t"," ","A"," ","e","q","u","a","l","s"," ","B"," ","f","o","r"," ","p","a","g","e","s","/","p","o","s","t","s","/","m","e","d","i","a","/","m","e","n","u","s","/","t","e","r","m","s","/","C","P","T","/","s","e","t","t","i","n","g","s"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"demo-import","features":["demo_import"],"id":"TF-DEMO-004","implementation":"tests/runtime/runtime_harness.py:TF-DEMO-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":true,"red_proof":true,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Demo import is idempotent across second run","workflows":[]}
{"assertions":["all contract demo entities exist","front/posts page settings match"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"demo-import","features":["demo_import"],"id":"TF-DEMO-005","implementation":"tests/runtime/runtime_harness.py:TF-DEMO-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Demo import creates declared pages/content/menu/settings","workflows":[]}
{"assertions":["valid submission reaches expected terminal state","no legacy direct PHP endpoint"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"forms","features":["forms"],"id":"TF-FORM-001","implementation":"tests/runtime/runtime_harness.py:TF-FORM-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared forms submit through WordPress-controlled endpoint","workflows":[]}
{"assertions":["required invalid blocks submission","error associated with control","state recovers"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"forms","features":["forms"],"id":"TF-FORM-002","implementation":"tests/runtime/runtime_harness.py:TF-FORM-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Form invalid/required states are accessible and recoverable","workflows":[]}
{"assertions":["rapid second activation does not duplicate side effect"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"forms","features":["forms"],"id":"TF-FORM-003","implementation":"tests/runtime/runtime_harness.py:TF-FORM-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Duplicate submit does not create duplicate operation","workflows":[]}
{"assertions":["privileged endpoints return auth/capability failure"],"blocking":true,"checkpoint_ids":["SEC.NONCE.001"],"cost":"low","domain":"security","features":[],"id":"TF-SEC-001","implementation":"tests/runtime/runtime_harness.py:TF-SEC-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Anonymous user cannot invoke privileged theme admin actions","workflows":[]}
{"assertions":["JSON content-type where declared","no HTML/PHP warning prefix"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"security","features":[],"id":"TF-SEC-002","implementation":"tests/runtime/runtime_harness.py:TF-SEC-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Theme REST/AJAX responses stay valid structured data without PHP leakage","workflows":[]}
{"assertions":["declared root/component counts within contract","missing source structure fails"],"blocking":true,"checkpoint_ids":["ARCH.005","ARCH.006"],"cost":"high","domain":"conversion","features":[],"id":"TF-CONV-001","implementation":"tests/runtime/runtime_harness.py:TF-CONV-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Reference and WordPress major structural roots correspond","workflows":[]}
{"assertions":["bounding box delta within tolerance for anchors"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"conversion","features":[],"id":"TF-CONV-002","implementation":"tests/runtime/runtime_harness.py:TF-CONV-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Reference and WordPress geometry stays within declared tolerances","workflows":[]}
{"assertions":["pixel/SSIM threshold from contract","approved deviations masked only by manifest"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"conversion","features":[],"id":"TF-CONV-003","implementation":"tests/runtime/runtime_harness.py:TF-CONV-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Reference and WordPress screenshots stay within approved threshold","workflows":[]}
{"assertions":["menu/carousel/modal/form declared behaviors equivalent"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"conversion","features":[],"id":"TF-CONV-004","implementation":"tests/runtime/runtime_harness.py:TF-CONV-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Interactive behavior parity holds for declared source behaviors","workflows":[]}
{"assertions":["each deviation has selector/reason/type","no wildcard whole-page waiver"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"conversion","features":[],"id":"TF-CONV-005","implementation":"tools/theme_ci.py:TF-CONV-005","inputs":["themes/{theme}/**"],"phase":"static","profiles":["source-preserving-conversion"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Allowed source-preservation deviations are explicit and bounded","workflows":[]}
{"assertions":["baseline changed => approval evidence required"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"visual","features":[],"id":"TF-VIS-001","implementation":"tools/theme_ci.py:TF-VIS-001","inputs":["themes/{theme}/**"],"phase":"static","profiles":["new-theme","mockup-to-theme"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Approved visual baseline cannot self-update silently","workflows":[]}
{"assertions":["approved anchors/components present"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"visual","features":[],"id":"TF-VIS-002","implementation":"tests/runtime/runtime_harness.py:TF-VIS-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["mockup-to-theme"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Mockup-to-theme structural anchors match approved mockup contract","workflows":[]}
{"assertions":["screenshot diff under approved threshold"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"visual","features":[],"id":"TF-VIS-003","implementation":"tests/runtime/runtime_harness.py:TF-VIS-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["mockup-to-theme","new-theme"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Mockup-to-theme screenshot comparison passes approved tolerance","workflows":[]}
{"assertions":["transfer/resource sizes under contract budget"],"blocking":true,"checkpoint_ids":["PERF.ASSET.001"],"cost":"low","domain":"performance","features":[],"id":"TF-PERF-001","implementation":"tests/runtime/runtime_harness.py:TF-PERF-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"First-party JS/CSS byte budgets are respected","workflows":[]}
{"assertions":["first-party request count under budget"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"performance","features":[],"id":"TF-PERF-002","implementation":"tests/runtime/runtime_harness.py:TF-PERF-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Request-count budget is respected","workflows":[]}
{"assertions":["DOM nodes under contract budget"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"performance","features":[],"id":"TF-PERF-003","implementation":"tests/runtime/runtime_harness.py:TF-PERF-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"DOM node budget is respected","workflows":[]}
{"assertions":["rendered images have intrinsic dimensions","no zero aspect placeholders"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"performance","features":[],"id":"TF-PERF-004","implementation":"tests/runtime/runtime_harness.py:TF-PERF-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Images declare dimensions/aspect containment to prevent avoidable shift","workflows":[]}
{"assertions":["font requests/weights under contract budget"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"performance","features":[],"id":"TF-PERF-005","implementation":"tests/runtime/runtime_harness.py:TF-PERF-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Font family/weight request budget is respected","workflows":[]}
{"assertions":["measurement receipt includes LCP/CLS/INP where available"],"blocking":false,"checkpoint_ids":[],"cost":"high","domain":"performance","features":[],"id":"TF-PERF-006","implementation":"tests/runtime/runtime_harness.py:TF-PERF-006","inputs":["themes/{theme}/**"],"phase":"scheduled","profiles":["core"],"proof_required":false,"red_proof":false,"required":false,"runner":"runtime","scope":"theme","status":"complete","title":"CWV/Lighthouse measurement is recorded without becoming flaky hard gate","workflows":[]}
{"assertions":["nonempty title","single canonical when contract requires","description policy"],"blocking":true,"checkpoint_ids":["SEO.STRUCT.001"],"cost":"low","domain":"seo","features":[],"id":"TF-SEO-001","implementation":"tests/runtime/runtime_harness.py:TF-SEO-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Document title/meta/canonical basics exist","workflows":[]}
{"assertions":["JSON-LD parses","declared type fields present","URL/title consistent"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"seo","features":[],"id":"TF-SEO-002","implementation":"tests/runtime/runtime_harness.py:TF-SEO-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Structured data is valid JSON and does not contradict visible identity","workflows":[]}
{"assertions":["visible hierarchy current page correct","JSON-LD matches visible"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"seo","features":["breadcrumbs"],"id":"TF-SEO-003","implementation":"tests/runtime/runtime_harness.py:TF-SEO-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Breadcrumb contract and structured data agree when breadcrumbs declared","workflows":[]}
{"assertions":["templates/*.html present","block comments balanced","parts resolvable"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"fse","features":[],"id":"TF-FSE-001","implementation":"tools/theme_ci.py:TF-FSE-001","inputs":["themes/{theme}/**"],"phase":"static","profiles":["block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Block theme templates and template parts parse as valid block markup","workflows":[]}
{"assertions":["site editor loads","no page/console errors"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"fse","features":[],"id":"TF-FSE-002","implementation":"tests/runtime/runtime_harness.py:TF-FSE-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Site Editor boots without errors","workflows":[]}
{"assertions":["contract templates visible to WP"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"fse","features":[],"id":"TF-FSE-003","implementation":"tests/runtime/runtime_harness.py:TF-FSE-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Required FSE templates are registered","workflows":[]}
{"assertions":["declared parts registered","frontend includes them"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"fse","features":[],"id":"TF-FSE-004","implementation":"tests/runtime/runtime_harness.py:TF-FSE-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Template parts are registered and render","workflows":[]}
{"assertions":["edit template part","save","frontend sentinel","restore"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"fse","features":[],"id":"TF-FSE-005","implementation":"tests/runtime/runtime_harness.py:TF-FSE-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Site Editor change round-trips to frontend and restores","workflows":[]}
{"assertions":["variation registered","no invalid theme.json data"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"fse","features":[],"id":"TF-FSE-006","implementation":"tests/runtime/runtime_harness.py:TF-FSE-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["block-fse"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Style variations declared by contract load without invalid settings","workflows":[]}
{"assertions":["declared template files exist","fallback index.php exists"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"classic","features":[],"id":"TF-CLASSIC-001","implementation":"tools/theme_ci.py:TF-CLASSIC-001","inputs":["themes/{theme}/**"],"phase":"static","profiles":["classic"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Classic PHP template hierarchy covers declared routes","workflows":[]}
{"assertions":["menu locations registered","assigned menu renders"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"classic","features":[],"id":"TF-CLASSIC-002","implementation":"tests/runtime/runtime_harness.py:TF-CLASSIC-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["classic"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared menus are registered and render","workflows":[]}
{"assertions":["sidebar registered","widget visible after assignment"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"classic","features":["widgets"],"id":"TF-CLASSIC-003","implementation":"tests/runtime/runtime_harness.py:TF-CLASSIC-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["classic"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared sidebars/widgets are registered and render","workflows":[]}
{"assertions":["customizer loads","change-save-frontend-restore"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"classic","features":["customizer"],"id":"TF-CLASSIC-004","implementation":"tests/runtime/runtime_harness.py:TF-CLASSIC-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["classic"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Customizer boots and declared controls persist","workflows":[]}
{"assertions":["post content/standard blocks render"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"classic","features":[],"id":"TF-CLASSIC-005","implementation":"tests/runtime/runtime_harness.py:TF-CLASSIC-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["classic"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Classic editor content renders without theme-owned markup loss","workflows":[]}
{"assertions":["Elementor activates at pinned version","theme activates"],"blocking":true,"checkpoint_ids":["EL.001"],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-001","implementation":"tests/runtime/runtime_harness.py:TF-EL-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Pinned Elementor fixture installs and theme remains activatable","workflows":[]}
{"assertions":["editor canvas loads","no page/console errors","no failed local REST"],"blocking":true,"checkpoint_ids":["EL.001"],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-002","implementation":"tests/runtime/runtime_harness.py:TF-EL-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Elementor editor boots without fatal/network/editor errors","workflows":[]}
{"assertions":["global colors/fonts/container widths declared"],"blocking":true,"checkpoint_ids":["EL.002"],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-003","implementation":"tests/runtime/runtime_harness.py:TF-EL-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared global Elementor kit/tokens exist","workflows":[]}
{"assertions":["header/footer/singular/archive templates exist where declared","conditions correct"],"blocking":true,"checkpoint_ids":["EL.003"],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-004","implementation":"tests/runtime/runtime_harness.py:TF-EL-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Theme Builder templates/conditions cover declared surfaces","workflows":[]}
{"assertions":["edit sentinel","save","frontend changes","restore"],"blocking":true,"checkpoint_ids":[],"cost":"high","domain":"elementor","features":[],"id":"TF-EL-005","implementation":"tests/runtime/runtime_harness.py:TF-EL-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Elementor content edit-save-frontend-restore round trip works","workflows":[]}
{"assertions":["t","i","t","l","e","/","i","m","a","g","e","/","m","e","t","a"," ","t","a","g","s"," ","r","e","s","o","l","v","e"," ","s","e","e","d","e","d"," ","e","n","t","i","t","y"],"blocking":true,"checkpoint_ids":["EL.004"],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-006","implementation":"tests/runtime/runtime_harness.py:TF-EL-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared dynamic tags resolve real WordPress data","workflows":[]}
{"assertions":["no deprecated section/column structure when prohibited","container contract declared"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-007","implementation":"tools/theme_ci.py:TF-EL-007","inputs":["themes/{theme}/**"],"phase":"static","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Elementor uses container architecture required by contract","workflows":[]}
{"assertions":["required dependency failure is explicit","optional dependency degrades as declared"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"elementor","features":[],"id":"TF-EL-008","implementation":"tests/runtime/runtime_harness.py:TF-EL-008","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["elementor"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Elementor dependency/lock-in and fallback behavior matches contract","workflows":[]}
{"assertions":["WooCommerce activates","theme support contract"],"blocking":true,"checkpoint_ids":["WC.001"],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-001","implementation":"tests/runtime/runtime_harness.py:TF-WOO-001","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Pinned WooCommerce fixture installs and theme declares support","workflows":[]}
{"assertions":["seed products visible","grid responsive"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-002","implementation":"tests/runtime/runtime_harness.py:TF-WOO-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Shop archive renders declared product grid","workflows":[]}
{"assertions":["t","i","t","l","e","/","p","r","i","c","e","/","a","d","d","-","t","o","-","c","a","r","t"," ","v","i","s","i","b","l","e"," ","a","n","d"," ","o","p","e","r","a","b","l","e"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-003","implementation":"tests/runtime/runtime_harness.py:TF-WOO-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Product single renders required commerce controls","workflows":[]}
{"assertions":["single activation increments expected quantity once"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-004","implementation":"tests/runtime/runtime_harness.py:TF-WOO-004","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Add-to-cart updates cart state exactly once","workflows":[]}
{"assertions":["cart row/action usable","no overflow at mobile"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-005","implementation":"tests/runtime/runtime_harness.py:TF-WOO-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Cart page remains operable/responsive","workflows":[]}
{"assertions":["checkout form fields labelled","required validation works without payment"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-006","implementation":"tests/runtime/runtime_harness.py:TF-WOO-006","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Checkout renders required fields and validation","workflows":[]}
{"assertions":["login/account routes usable","labels/keyboard"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-007","implementation":"tests/runtime/runtime_harness.py:TF-WOO-007","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"My Account/login surface renders accessibly","workflows":[]}
{"assertions":["override headers parse","no known obsolete override vs fixture metadata"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"woocommerce","features":[],"id":"TF-WOO-008","implementation":"tools/theme_ci.py:TF-WOO-008","inputs":["themes/{theme}/**"],"phase":"static","profiles":["woocommerce"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"WooCommerce template overrides are compatible with pinned version","workflows":[]}
{"assertions":["activation succeeds","core routes boot"],"blocking":true,"checkpoint_ids":["PKG.DEPS.001"],"cost":"high","domain":"compatibility","features":[],"id":"TF-COMPAT-001","implementation":"tests/runtime/runtime_harness.py:TF-COMPAT-001","inputs":["themes/{theme}/**"],"phase":"scheduled","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Theme activates on declared minimum WordPress/PHP fixture","workflows":[]}
{"assertions":["activation succeeds","core routes boot"],"blocking":true,"checkpoint_ids":["PKG.DEPS.001"],"cost":"low","domain":"compatibility","features":[],"id":"TF-COMPAT-002","implementation":"tests/runtime/runtime_harness.py:TF-COMPAT-002","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Theme activates on pinned current WordPress/PHP fixture","workflows":[]}
{"assertions":["theme boots without optional plugins","missing dependency notice/fallback matches contract"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"compatibility","features":[],"id":"TF-COMPAT-003","implementation":"tests/runtime/runtime_harness.py:TF-COMPAT-003","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Declared optional plugin absence degrades gracefully","workflows":[]}
{"assertions":["unsupported required plugin version yields explicit controlled state"],"blocking":false,"checkpoint_ids":[],"cost":"high","domain":"compatibility","features":[],"id":"TF-COMPAT-004","implementation":"tests/runtime/runtime_harness.py:TF-COMPAT-004","inputs":["themes/{theme}/**"],"phase":"scheduled","profiles":["core"],"proof_required":false,"red_proof":false,"required":false,"runner":"runtime","scope":"theme","status":"complete","title":"Declared required plugin version boundaries fail clearly","workflows":[]}
{"assertions":["identity fields populated","40-char tree","check definition digest","artifact sha256"],"blocking":true,"checkpoint_ids":["PKG.LEDGER.001","PKG.STATUS.001"],"cost":"low","domain":"release","features":[],"id":"TF-REL-001","implementation":"tools/theme_ci.py:TF-REL-001","inputs":["themes/{theme}/**"],"phase":"aggregate","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"CI receipt binds exact tree, contract, checks, environment and artifact digest","workflows":[]}
{"assertions":["a","g","g","r","e","g","a","t","e"," ","c","o","n","s","u","m","e","s"," ","j","o","b"," ","a","r","t","i","f","a","c","t","s","/","r","a","w"," ","r","e","s","u","l","t","s",","," ","n","o","t"," ","r","e","p","o","s","i","t","o","r","y"," ","r","e","c","e","i","p","t"," ","a","s"," ","a","u","t","h","o","r","i","t","y"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"release","features":[],"id":"TF-REL-002","implementation":"tools/theme_ci.py:TF-REL-002","inputs":["themes/{theme}/**"],"phase":"static","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Checked-in agent receipt cannot satisfy authoritative gate","workflows":[]}
{"assertions":["o","n","e"," ","f","a","i","l","e","d"," ","r","e","q","u","i","r","e","d"," ","r","e","c","e","i","p","t"," ","=",">"," ","n","o","n","z","e","r","o"," ","a","g","g","r","e","g","a","t","e"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"release","features":[],"id":"TF-REL-003","implementation":"tools/theme_ci.py:TF-REL-003","inputs":["themes/{theme}/**"],"phase":"aggregate","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Required test failure blocks aggregate/release","workflows":[]}
{"assertions":["m","i","s","s","i","n","g"," ","e","x","p","e","c","t","e","d"," ","c","e","l","l"," ","=",">"," ","n","o","n","z","e","r","o"," ","a","g","g","r","e","g","a","t","e"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"release","features":[],"id":"TF-REL-004","implementation":"tools/theme_ci.py:TF-REL-004","inputs":["themes/{theme}/**"],"phase":"aggregate","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"static","scope":"theme","status":"complete","title":"Missing shard/test receipt blocks aggregate/release","workflows":[]}
{"assertions":["d","e","c","l","a","r","e","d"," ","e","x","p","e","c","t","e","d"," ","e","r","r","o","r"," ","m","u","s","t"," ","o","c","c","u","r"," ","e","x","a","c","t","l","y"," ","a","s"," ","c","o","n","t","r","a","c","t","e","d",";"," ","s","t","a","l","e"," ","d","e","c","l","a","r","a","t","i","o","n"," ","f","a","i","l","s"],"blocking":true,"checkpoint_ids":[],"cost":"low","domain":"release","features":[],"id":"TF-REL-005","implementation":"tests/runtime/runtime_harness.py:TF-REL-005","inputs":["themes/{theme}/**"],"phase":"runtime","profiles":["core"],"proof_required":false,"red_proof":false,"required":true,"runner":"runtime","scope":"theme","status":"complete","title":"Unexpected/stale expected-error declaration fails","workflows":[]}
