{"fixture_id":"EXTRACT-001","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><h1>Sample article</h1><p>A complete paragraph.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Sample article","A complete paragraph."],"text":"Sample article\nA complete paragraph.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Keep the selected heading and paragraph in source order."}
{"fixture_id":"EXTRACT-002","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><nav>Home Pricing</nav><main><p>Article body.</p></main><footer>Site footer</footer></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Article body."],"text":"Article body.","must_not_include":["Home Pricing","Site footer"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Outside navigation and footer are outside the selected region."}
{"fixture_id":"EXTRACT-003","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Keep this.</p><nav>Related navigation</nav><p>Keep that.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Keep this.","Keep that."],"text":"Keep this.\nKeep that.","must_not_include":["Related navigation"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"The explicit excluded-element policy applies inside the region too."}
{"fixture_id":"EXTRACT-004","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Main claim.</p><aside>Advertisement copy</aside></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Main claim."],"text":"Main claim.","must_not_include":["Advertisement copy"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"An aside is excluded by this fixture contract, even if a real editorial aside could be useful."}
{"fixture_id":"EXTRACT-005","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Main text.</p><footer>Article footer promotion</footer></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Main text."],"text":"Main text.","must_not_include":["Article footer promotion"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Exclude footer descendants under the chosen contract."}
{"fixture_id":"EXTRACT-006","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Keep <strong>important</strong> text.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Keep important text."],"text":"Keep important text.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Inline emphasis does not split a block."}
{"fixture_id":"EXTRACT-007","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>One <a href=\"https://example.test/reference\">reference</a> follows.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["One reference follows."],"text":"One reference follows.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Keep anchor text; destinations are outside this text-only output."}
{"fixture_id":"EXTRACT-008","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>  Several\n spaces\t here. </p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Several spaces here."],"text":"Several spaces here.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Collapse ordinary whitespace within prose blocks."}
{"fixture_id":"EXTRACT-009","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Salt &amp; pepper &#169; 2026.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Salt & pepper © 2026."],"text":"Salt & pepper © 2026.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Decode HTML character references."}
{"fixture_id":"EXTRACT-010","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>First&nbsp;second.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["First second."],"text":"First second.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Normalize nonbreaking spaces to ordinary spaces in prose."}
{"fixture_id":"EXTRACT-011","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Visible.</p><p hidden>Hidden draft</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Visible."],"text":"Visible.","must_not_include":["Hidden draft"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Exclude a hidden attribute and its descendants."}
{"fixture_id":"EXTRACT-012","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Visible.</p><div aria-hidden=\"true\"><p>Decorative copy</p></div></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Visible."],"text":"Visible.","must_not_include":["Decorative copy"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Explicitly exclude aria-hidden=true for this contract; this is not a CSS visibility inference."}
{"fixture_id":"EXTRACT-013","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Visible.</p><script>window.fixture=\"Script text\";</script><style>.x{content:\"Style text\"}</style></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Visible."],"text":"Visible.","must_not_include":["Script text","Style text"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Never include script or style contents as article prose."}
{"fixture_id":"EXTRACT-014","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><!-- Internal note --><p>Public paragraph.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Public paragraph."],"text":"Public paragraph.","must_not_include":["Internal note"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"HTML comments are not text output."}
{"fixture_id":"EXTRACT-015","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><h1>Heading</h1><h2>Section</h2><p>Explanation.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Heading","Section","Explanation."],"text":"Heading\nSection\nExplanation.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Keep heading text as ordered blocks; output does not preserve heading-level metadata."}
{"fixture_id":"EXTRACT-016","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><ul><li>First item</li><li>Second item</li></ul></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["First item","Second item"],"text":"First item\nSecond item","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Each list item is a block; synthetic bullets are not required."}
{"fixture_id":"EXTRACT-017","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><table><tr><th>Plan</th><th>Units</th></tr><tr><td>Example</td><td>12</td></tr></table></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Plan | Units","Example | 12"],"text":"Plan | Units\nExample | 12","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"A table row is one block with cell boundaries represented by a literal vertical bar."}
{"fixture_id":"EXTRACT-018","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><blockquote><p>Quoted sentence.</p></blockquote><p>Comment.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Quoted sentence.","Comment."],"text":"Quoted sentence.\nComment.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"A blockquote does not duplicate its paragraph."}
{"fixture_id":"EXTRACT-019","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><pre>line 1\n  line 2</pre></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["line 1\n  line 2"],"text":"line 1\n  line 2","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Preserve line breaks and indentation inside preformatted text."}
{"fixture_id":"EXTRACT-020","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><figure><img src=\"example.png\" alt=\"Alternative label\"><figcaption>Caption text.</figcaption></figure></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Caption text."],"text":"Caption text.","must_not_include":["Alternative label"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Caption is a block; image alt is outside this text-output contract."}
{"fixture_id":"EXTRACT-021","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><details><summary>Question?</summary><p>Authored answer.</p></details></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Question?","Authored answer."],"text":"Question?\nAuthored answer.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Static extraction includes details descendants regardless of initial open state; not a visible-pixels policy."}
{"fixture_id":"EXTRACT-022","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main><p>Алматы: қала. Café.</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"ok","blocks":["Алматы: қала. Café."],"text":"Алматы: қала. Café.","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"Preserve Unicode letters and punctuation without translation."}
{"fixture_id":"EXTRACT-023","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"empty","blocks":[],"text":"","must_not_include":[]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS"],"rationale":"An existing empty region is an empty result, not a successful article extraction."}
{"fixture_id":"EXTRACT-024","observation_type":"authored_test_fixture","input":{"html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main data-render-required=\"true\"><p>Loading article…</p></main></body></html>","selector":"main","policy":"static-article-text-v1"},"expected":{"status":"render_required","blocks":[],"text":"","must_not_include":["Loading article…"]},"rule_ids":["E-SCOPE","E-BLOCKS","E-EXCLUSIONS","E-RENDER"],"rationale":"The authored render-required sentinel requests an unresolved result; it is not a generic loading-text detector."}
