{"fixture_id":"CHANGE-001","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Stable text.</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Stable text.</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Stable text.","after_text":"Stable text."},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Identical selected text."}
{"fixture_id":"CHANGE-002","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>One  two</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>One\n two</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"One two","after_text":"One two"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Collapse ordinary prose whitespace."}
{"fixture_id":"CHANGE-003","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>One&nbsp;two</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>One two</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"One two","after_text":"One two"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Normalize nonbreaking spaces."}
{"fixture_id":"CHANGE-004","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Salt &amp; pepper</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Salt &#38; pepper</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Salt & pepper","after_text":"Salt & pepper"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Equivalent character references."}
{"fixture_id":"CHANGE-005","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><nav>New navigation</nav><main id=\"watch\"><p>Ready</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Outside region is ignored."}
{"fixture_id":"CHANGE-006","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main><footer>Old</footer></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main><footer>New</footer></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Footer outside selector is ignored."}
{"fixture_id":"CHANGE-007","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><div><p>Ready</p></div></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Wrapper changes do not alter selected text."}
{"fixture_id":"CHANGE-008","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\" class=\"new\"><p>Ready</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Class-only changes are excluded from text mode."}
{"fixture_id":"CHANGE-009","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><!-- New comment --><p>Ready</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Comments are excluded."}
{"fixture_id":"CHANGE-010","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p><time data-ignore>10:00</time></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p><time data-ignore>11:00</time></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Only explicitly marked data-ignore descendants are suppressed."}
{"fixture_id":"CHANGE-011","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Price: 20</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Price: 25</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Price: 20","after_text":"Price: 25"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"An authored amount change is retained; amounts are not vendor prices."}
{"fixture_id":"CHANGE-012","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Available</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Unavailable</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Available","after_text":"Unavailable"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Status text changes."}
{"fixture_id":"CHANGE-013","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Shipping included</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Shipping not included</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Shipping included","after_text":"Shipping not included"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"A negation must not disappear during normalization."}
{"fixture_id":"CHANGE-014","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>READY</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Ready","after_text":"READY"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Case is significant under this contract."}
{"fixture_id":"CHANGE-015","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready.</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready!</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Ready.","after_text":"Ready!"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Punctuation is significant."}
{"fixture_id":"CHANGE-016","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Café</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Cafe</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Café","after_text":"Cafe"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Accents are preserved."}
{"fixture_id":"CHANGE-017","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>First\nSecond</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Second\nFirst</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"First Second","after_text":"Second First"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Order is significant after whitespace normalization."}
{"fixture_id":"CHANGE-018","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><a href=\"/old\">Reference</a></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><a href=\"/new\">Reference</a></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Reference","after_text":"Reference"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Text mode intentionally cannot detect a destination-only change."}
{"fixture_id":"CHANGE-019","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p><span hidden>Old draft</span></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p><span hidden>New draft</span></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unchanged","before_text":"Ready","after_text":"Ready"},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Hidden descendants are excluded."}
{"fixture_id":"CHANGE-020","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"other\"><p>Ready</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unavailable","before_text":"Ready","after_text":null},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Missing selector is unknown, not unchanged."}
{"fixture_id":"CHANGE-021","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main><main id=\"watch\"><p>Second region</p></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"ambiguous","before_text":"Ready","after_text":null},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Require querySelectorAll(selector).length === 1 before selection; querySelector alone silently returns the first of these two matches."}
{"fixture_id":"CHANGE-022","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\" data-render-required=\"true\">Loading</main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unavailable","before_text":"Ready","after_text":null},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Explicit fixture sentinel needs a later rendered observation."}
{"fixture_id":"CHANGE-023","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Access denied</p></main></body></html>","before_status":200,"after_status":403,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"unavailable","before_text":"Ready","after_text":null},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Simulated HTTP 403 cannot be accepted as a content change."}
{"fixture_id":"CHANGE-024","observation_type":"authored_test_fixture","input":{"before_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"><p>Ready</p></main></body></html>","after_html":"<!doctype html><html lang=\"en\"><head><title>Fixture document</title></head><body><main id=\"watch\"></main></body></html>","before_status":200,"after_status":200,"selector":"#watch","policy":"selected-static-text-v1"},"expected":{"decision":"changed","before_text":"Ready","after_text":""},"rule_ids":["W-SCOPE","W-TEXT","W-UNKNOWN"],"rationale":"Successful uniquely selected empty content is distinct from a failed observation."}
