{
  "protocol_version": "1.2.0",
  "executed_at": "2026-09-20T17:57:19.704Z",
  "environment": {
    "platform": "darwin",
    "architecture": "arm64",
    "node": "v22.12.0",
    "python": "/private/tmp/edikka-semantic-html-python-1.2/bin/python",
    "multitool_python": "/private/tmp/edikka-semantic-html-python-1.2/bin/python",
    "hostname_redacted": true
  },
  "tool_versions": {
    "@mozilla/readability": "0.6.0",
    "trafilatura": "2.2.0",
    "readability_lxml": "0.8.4.1",
    "newspaper4k": "0.9.3.1",
    "justext": "3.0.2",
    "html2text": "2025.4.15",
    "markdownify": "1.2.2"
  },
  "scope": {
    "documents": 12,
    "families": 3,
    "languages": 2,
    "variants_per_pair": 2,
    "independent_web_sample": false
  },
  "options_note": "The received fixture bytes were passed unchanged to the extractors. JSDOM did not execute scripts or fetch external resources; metadata elements were not removed.",
  "determinism_control": {
    "passed": true,
    "compared": "second real execution of all seven tools on identical fixture bytes",
    "cases": [
      {
        "id": "heading-fr-1",
        "first_sha256": "08cd76a9779538ede7eb8280d6a270e4c9ca03c5beb94d7f68aec1737ec0a693",
        "replay_sha256": "08cd76a9779538ede7eb8280d6a270e4c9ca03c5beb94d7f68aec1737ec0a693"
      },
      {
        "id": "heading-fr-2",
        "first_sha256": "07113e720ad657b729a6e535783afbe54a6ed098d1ef8b272e267d4680e48af5",
        "replay_sha256": "07113e720ad657b729a6e535783afbe54a6ed098d1ef8b272e267d4680e48af5"
      },
      {
        "id": "table-fr-1",
        "first_sha256": "d2f35a3f5a39213e4ce1e78dea642b7f73bdaf3491d58692a122fa716d61bfbb",
        "replay_sha256": "d2f35a3f5a39213e4ce1e78dea642b7f73bdaf3491d58692a122fa716d61bfbb"
      },
      {
        "id": "table-fr-2",
        "first_sha256": "ec5c83c618da19b514848778f210da7c00d5eb68ba29b1be53d8e0284c382ee9",
        "replay_sha256": "ec5c83c618da19b514848778f210da7c00d5eb68ba29b1be53d8e0284c382ee9"
      },
      {
        "id": "caveat-fr-1",
        "first_sha256": "10f0a07a218722fff427d8eaa1801a06c26cbbeb7d465272ea209d3a31dd3d82",
        "replay_sha256": "10f0a07a218722fff427d8eaa1801a06c26cbbeb7d465272ea209d3a31dd3d82"
      },
      {
        "id": "caveat-fr-2",
        "first_sha256": "768b6912a8cbed5d4df8dd73698613a44b5556195933b1b8e325923b87773be8",
        "replay_sha256": "768b6912a8cbed5d4df8dd73698613a44b5556195933b1b8e325923b87773be8"
      },
      {
        "id": "heading-en-1",
        "first_sha256": "8f6d14427390d77acbf0605b0a0586ef7737bd4cb3efa1268f1a4dcab9b27950",
        "replay_sha256": "8f6d14427390d77acbf0605b0a0586ef7737bd4cb3efa1268f1a4dcab9b27950"
      },
      {
        "id": "heading-en-2",
        "first_sha256": "af25c0dd4c11a620410bdb87bd2f205291a28904dd6a16819aa48bbbc488e9fe",
        "replay_sha256": "af25c0dd4c11a620410bdb87bd2f205291a28904dd6a16819aa48bbbc488e9fe"
      },
      {
        "id": "table-en-1",
        "first_sha256": "3314c9394fcd715c62aafa45a328407fb451fd9973d8216b9c89f6714713ae39",
        "replay_sha256": "3314c9394fcd715c62aafa45a328407fb451fd9973d8216b9c89f6714713ae39"
      },
      {
        "id": "table-en-2",
        "first_sha256": "bdbeac9d28befa9b9e37ccad892ad561d0a616b50bb0cf510fcbf4fcd6ddb83c",
        "replay_sha256": "bdbeac9d28befa9b9e37ccad892ad561d0a616b50bb0cf510fcbf4fcd6ddb83c"
      },
      {
        "id": "caveat-en-1",
        "first_sha256": "11cd8a68685280b41ebd436bb481f91ca6bd955be49678b487a9ee0d6045f5b0",
        "replay_sha256": "11cd8a68685280b41ebd436bb481f91ca6bd955be49678b487a9ee0d6045f5b0"
      },
      {
        "id": "caveat-en-2",
        "first_sha256": "15965706bcb23a51e0039fc7b0c122c8c305aac3f5cb9fe6474aac225597a8a7",
        "replay_sha256": "15965706bcb23a51e0039fc7b0c122c8c305aac3f5cb9fe6474aac225597a8a7"
      }
    ]
  },
  "evaluator_counter_tests": [
    {
      "id": "changed-value",
      "language": "fr",
      "positive_control": "table-fr-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "table_structure": "present",
        "expected_data_row": "not_found",
        "column_header_relation": "not_explicit",
        "row_header_relation": "not_explicit",
        "column_labels": [
          "Indicateur",
          "Unité",
          "Période",
          "Valeur"
        ],
        "data_values": [],
        "evidence": {
          "header_row": "<th scope=\"col\">Indicateur</th><th scope=\"col\">Unité</th><th scope=\"col\">Période</th><th scope=\"col\">Valeur</th>",
          "data_row": null,
          "table_excerpt": "<table><caption>Mesures synthétiques</caption><thead><tr><th scope=\"col\">Indicateur</th><th scope=\"col\">Unité</th><th scope=\"col\">Période</th><th scope=\"col\">Valeur</th></tr></thead><tbody><tr><th scope=\"row\">Temps de réponse</th><td>secondes</td><td>mai 2026</td><td>9.9</td></tr></tbody></table>"
        },
        "output_field": "readability.content",
        "output_sha256": "a4f3c60f778dc2500a2217cb3d96f72285dbc1608848ee79be590a13b3e590e9",
        "source_column_headers_explicit": true
      }
    },
    {
      "id": "missing-caveat",
      "language": "fr",
      "positive_control": "caveat-fr-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "caveat_text": "absent",
        "caveat_element": "absent",
        "attachment_to_claim": "not_evaluated",
        "evidence": {
          "excerpt": null
        },
        "output_field": "readability.content",
        "output_sha256": "d45d25a821c3bf43f559522ad7d653b3328cffd03915c8a425df993d984ead07"
      }
    },
    {
      "id": "swapped-table-values",
      "language": "fr",
      "positive_control": "table-fr-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "table_structure": "present",
        "expected_data_row": "not_found",
        "column_header_relation": "not_explicit",
        "row_header_relation": "not_explicit",
        "column_labels": [
          "Indicateur",
          "Unité",
          "Période",
          "Valeur"
        ],
        "data_values": [],
        "evidence": {
          "header_row": "<th scope=\"col\">Indicateur</th><th scope=\"col\">Unité</th><th scope=\"col\">Période</th><th scope=\"col\">Valeur</th>",
          "data_row": null,
          "table_excerpt": "<table><caption>Mesures synthétiques</caption><thead><tr><th scope=\"col\">Indicateur</th><th scope=\"col\">Unité</th><th scope=\"col\">Période</th><th scope=\"col\">Valeur</th></tr></thead><tbody><tr><th scope=\"row\">Temps de réponse</th><td>mai 2026</td><td>secondes</td><td>1,8</td></tr></tbody></table>"
        },
        "output_field": "readability.content",
        "output_sha256": "f8cca940b6cc5f4a2543c90449f08e16f67dac3e23eb25cb5a2cfcb14315dcd7",
        "source_column_headers_explicit": true
      }
    },
    {
      "id": "misleading-occurrence",
      "language": "fr",
      "positive_control": "table-fr-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "table_structure": "absent",
        "expected_data_row": "not_found",
        "column_header_relation": "not_explicit",
        "row_header_relation": "not_explicit",
        "column_labels": [],
        "data_values": [],
        "evidence": {
          "header_row": null,
          "data_row": null,
          "table_excerpt": null
        },
        "output_field": "readability.content",
        "output_sha256": "d4225cadc39081da3f5cf03006c42d312fcf74a6f4d411d296a0e9dd03315dc4",
        "source_column_headers_explicit": true
      }
    },
    {
      "id": "changed-value",
      "language": "en",
      "positive_control": "table-en-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "table_structure": "present",
        "expected_data_row": "not_found",
        "column_header_relation": "not_explicit",
        "row_header_relation": "not_explicit",
        "column_labels": [
          "Indicator",
          "Unit",
          "Period",
          "Value"
        ],
        "data_values": [],
        "evidence": {
          "header_row": "<th scope=\"col\">Indicator</th><th scope=\"col\">Unit</th><th scope=\"col\">Period</th><th scope=\"col\">Value</th>",
          "data_row": null,
          "table_excerpt": "<table><caption>Synthetic measurements</caption><thead><tr><th scope=\"col\">Indicator</th><th scope=\"col\">Unit</th><th scope=\"col\">Period</th><th scope=\"col\">Value</th></tr></thead><tbody><tr><th scope=\"row\">Response time</th><td>seconds</td><td>May 2026</td><td>9.9</td></tr></tbody></table>"
        },
        "output_field": "readability.content",
        "output_sha256": "598a03ce814ed547edfea64f63288ecc5e9f092d4402767593fd1b93a76357c9",
        "source_column_headers_explicit": true
      }
    },
    {
      "id": "missing-caveat",
      "language": "en",
      "positive_control": "caveat-en-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "caveat_text": "absent",
        "caveat_element": "absent",
        "attachment_to_claim": "not_evaluated",
        "evidence": {
          "excerpt": null
        },
        "output_field": "readability.content",
        "output_sha256": "94885503024da2a9571c17dcc27a6844744c90520388aa1e489c2a7794170934"
      }
    },
    {
      "id": "swapped-table-values",
      "language": "en",
      "positive_control": "table-en-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "table_structure": "present",
        "expected_data_row": "not_found",
        "column_header_relation": "not_explicit",
        "row_header_relation": "not_explicit",
        "column_labels": [
          "Indicator",
          "Unit",
          "Period",
          "Value"
        ],
        "data_values": [],
        "evidence": {
          "header_row": "<th scope=\"col\">Indicator</th><th scope=\"col\">Unit</th><th scope=\"col\">Period</th><th scope=\"col\">Value</th>",
          "data_row": null,
          "table_excerpt": "<table><caption>Synthetic measurements</caption><thead><tr><th scope=\"col\">Indicator</th><th scope=\"col\">Unit</th><th scope=\"col\">Period</th><th scope=\"col\">Value</th></tr></thead><tbody><tr><th scope=\"row\">Response time</th><td>May 2026</td><td>seconds</td><td>1.8</td></tr></tbody></table>"
        },
        "output_field": "readability.content",
        "output_sha256": "f708c5e618c30fffca2aeb4ab6d6c275d04599053098f30b371adc9220b62897",
        "source_column_headers_explicit": true
      }
    },
    {
      "id": "misleading-occurrence",
      "language": "en",
      "positive_control": "table-en-1",
      "positive_control_accepted": true,
      "evaluated_tool_output": "readability.content",
      "accepted": false,
      "passed": true,
      "verdict": {
        "status": "ok",
        "tool_class": "content_extractor",
        "format": "html",
        "table_structure": "absent",
        "expected_data_row": "not_found",
        "column_header_relation": "not_explicit",
        "row_header_relation": "not_explicit",
        "column_labels": [],
        "data_values": [],
        "evidence": {
          "header_row": null,
          "data_row": null,
          "table_excerpt": null
        },
        "output_field": "readability.content",
        "output_sha256": "5f00de441a2e5a6f9662fbcb476f5d0f0ceb79b56a01a8d232c6ed5395b055b2",
        "source_column_headers_explicit": true
      }
    }
  ],
  "cases": [
    {
      "id": "heading-fr-1",
      "pair_id": "heading-fr",
      "family": "heading",
      "language": "fr",
      "variant": "heading-element",
      "synthetic_data": true,
      "html_sha256": "83625fd369cd7e5294b81f954d1f846b53c3f9f7a8aa1d48ab7d3bd6e023493d",
      "visible_text_sha256": "9c61f8a1fdfbcde96c04b3d94dce89efd4d4bb5dfbb400475c61cf33ecc15f65",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "heading-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<h2>Conditions de mesure</h2>"
            },
            "output_field": "readability.content",
            "output_sha256": "b28372c75118595e41bcc150c74ff4e9b44b35bc8d82c134070970ff2808e2a9"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<head rend=\"h2\">Conditions de mesure</head>"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "9937de1b08ef0ba83e32c635388b1a48b9b4ab711ed3228d4fda4a02722f2033"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<h2 class=\"case-marker\">Conditions de mesure</h2>"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "3649861665b15470abdfbf5d77060e93a9bf8b866cdacbf006043ca2e40b8185"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<h2 class=\"case-marker\">Conditions de mesure</h2>"
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "fb437ae04cd3021a73162bb5e1849bab67bacb3913d5db850a03daf73a00b43b"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "markdown_heading",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "## Conditions de mesure"
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "70277dcc76823f0502dc631c4fc2f77c250ee2f9180a9486e822bacb485fac51"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "markdown_heading",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "## Conditions de mesure"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "dbb3fac26218ee9ad137593d8d720cf27a0226e9e923f3bcb40980e1eeaa40af"
          }
        }
      },
      "raw_output": "outputs/heading-fr-1.json",
      "fixture": "fixtures/heading-fr-1.html"
    },
    {
      "id": "heading-fr-2",
      "pair_id": "heading-fr",
      "family": "heading",
      "language": "fr",
      "variant": "generic-element",
      "synthetic_data": true,
      "html_sha256": "e502000054065bea220ff9f84a755015f5a6d3e7f19b2fff31809c21cb45bc33",
      "visible_text_sha256": "9c61f8a1fdfbcde96c04b3d94dce89efd4d4bb5dfbb400475c61cf33ecc15f65",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "generic-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Conditions de mesure"
            },
            "output_field": "readability.content",
            "output_sha256": "5563c018ee30fbc80a297daec01aec22d5db1e792be24f523c4e0cd250699f12"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Conditions de mesure"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "33d83138167547361ff376c866028d4a57b4369ed57c82f63e644cd3b57f4868"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Conditions de mesure"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "df7576a6e047fe2bde963218d2d083e1065f82836e7ef2d8fd078f18daa27d49"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Conditions de mesure"
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "bdb9e1a044438506f2106fdd3a7f3583abbb073c9598afc82d62ffd589f0aade"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Conditions de mesure"
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "17143b1c796d94a37342f95eac09f5a4592006afc9876f468160ef2fc3beb1e4"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Conditions de mesure"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "843b0b1afbf08c3e082adba9c50aef2877a62b8116e8b5f8d729e5ca0ef9e808"
          }
        }
      },
      "raw_output": "outputs/heading-fr-2.json",
      "fixture": "fixtures/heading-fr-2.html"
    },
    {
      "id": "table-fr-1",
      "pair_id": "table-fr",
      "family": "table",
      "language": "fr",
      "variant": "header-cells",
      "synthetic_data": true,
      "html_sha256": "7e19912f8f4337ceedbdb6b7d9cc0b43aebf2ed8f72d359f411e9a725142c556",
      "visible_text_sha256": "19fe53f7b08c3d6085825a987b061ce3135657cc3fbcc233b4269ae2fe3b4fbb",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "row_header_relation": "explicit",
            "column_header_relation": "explicit"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "explicit",
            "row_header_relation": "explicit",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "<th scope=\"col\">Indicateur</th><th scope=\"col\">Unité</th><th scope=\"col\">Période</th><th scope=\"col\">Valeur</th>",
              "data_row": "<th scope=\"row\">Temps de réponse</th><td>secondes</td><td>mai 2026</td><td>1,8</td>",
              "table_excerpt": "<table><caption>Mesures synthétiques</caption><thead><tr><th scope=\"col\">Indicateur</th><th scope=\"col\">Unité</th><th scope=\"col\">Période</th><th scope=\"col\">Valeur</th></tr></thead><tbody><tr><th scope=\"row\">Temps de réponse</th><td>secondes</td><td>mai 2026</td><td>1,8</td></tr></tbody></table>"
            },
            "output_field": "readability.content",
            "output_sha256": "8fff546eecfe7e95b138896c3c8c97858511f37a3087c7381f3b3e044031924b",
            "source_column_headers_explicit": true
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "<cell role=\"head\">Indicateur</cell><cell role=\"head\">Unité</cell><cell role=\"head\">Période</cell><cell role=\"head\">Valeur</cell>",
              "data_row": "<cell>Temps de réponse</cell><cell>secondes</cell><cell>mai 2026</cell><cell>1,8</cell>",
              "table_excerpt": "<table>\n      <row>\n        <cell role=\"head\">Mesures synthétiques</cell>\n      </row>\n      <row>\n        <cell role=\"head\">Indicateur</cell>\n        <cell role=\"head\">Unité</cell>\n        <cell role=\"head\">Période</cell>\n        <cell role=\"head\">Valeur</cell>\n      </row>\n      <row>\n        <cell>Temps de réponse</cell>\n        <cell>secondes</cell>\n        <cell>mai 2026</cell>\n        <cell>1,8</cell>\n      </row>\n    </table>"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "90f442099a2351d015669b63b3c9f581c2e6000c0b3c42f7340694d9ebf50ba9",
            "source_column_headers_explicit": true
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "explicit",
            "row_header_relation": "explicit",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "<th class=\"case-cell\" scope=\"col\">Indicateur</th><th class=\"case-cell\" scope=\"col\">Unité</th><th class=\"case-cell\" scope=\"col\">Période</th><th class=\"case-cell\" scope=\"col\">Valeur</th>",
              "data_row": "<th class=\"case-cell\" scope=\"row\">Temps de réponse</th><td class=\"case-cell\">secondes</td><td class=\"case-cell\">mai 2026</td><td class=\"case-cell\">1,8</td>",
              "table_excerpt": "<table><caption>Mesures synthétiques</caption><thead><tr><th class=\"case-cell\" scope=\"col\">Indicateur</th><th class=\"case-cell\" scope=\"col\">Unité</th><th class=\"case-cell\" scope=\"col\">Période</th><th class=\"case-cell\" scope=\"col\">Valeur</th></tr></thead><tbody><tr><th class=\"case-cell\" scope=\"row\">Temps de réponse</th><td class=\"case-cell\">secondes</td><td class=\"case-cell\">mai 2026</td><td class=\"case-cell\">1,8</td></tr></tbody></table>"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "2eb3e843c7724677708024385a99834be6b31ad707a1af7450993898dfcfe00b",
            "source_column_headers_explicit": true
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "absent",
            "expected_data_row": "not_found",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [],
            "data_values": [],
            "evidence": {
              "header_row": null,
              "data_row": null,
              "table_excerpt": null
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "83fe1f59de6678c68e8fe843a9fa601f606870347da6a587963c95e8869902be",
            "source_column_headers_explicit": true
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": null,
              "data_row": "Temps de réponse| secondes| mai 2026| 1,8  ",
              "table_excerpt": "Mesures synthétiquesIndicateur| Unité| Période| Valeur  \n---|---|---|---  \nTemps de réponse| secondes| mai 2026| 1,8  "
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "20a2f3d6190524aa6a555d94b24b2477af4a656d13c085990d80812a7a447343",
            "source_column_headers_explicit": true
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "markdown_header_row",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "| Indicateur | Unité | Période | Valeur |\n| --- | --- | --- | --- |",
              "data_row": "| Temps de réponse | secondes | mai 2026 | 1,8 |",
              "table_excerpt": "| Indicateur | Unité | Période | Valeur |\n| --- | --- | --- | --- |\n| Temps de réponse | secondes | mai 2026 | 1,8 |"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "43336ea91fec0ecbf729cbeda85c351ecf58889dd2b340cd52149962edf449d1",
            "source_column_headers_explicit": true
          }
        }
      },
      "raw_output": "outputs/table-fr-1.json",
      "fixture": "fixtures/table-fr-1.html"
    },
    {
      "id": "table-fr-2",
      "pair_id": "table-fr",
      "family": "table",
      "language": "fr",
      "variant": "data-cells",
      "synthetic_data": true,
      "html_sha256": "1e0a3b0807f57d794396fce3fe07c0259b8c3c4c40be85cea27483f2833516b1",
      "visible_text_sha256": "19fe53f7b08c3d6085825a987b061ce3135657cc3fbcc233b4269ae2fe3b4fbb",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "row_header_relation": "not_explicit",
            "column_header_relation": "not_explicit"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "<td>Indicateur</td><td>Unité</td><td>Période</td><td>Valeur</td>",
              "data_row": "<td>Temps de réponse</td><td>secondes</td><td>mai 2026</td><td>1,8</td>",
              "table_excerpt": "<table><caption>Mesures synthétiques</caption><thead><tr><td>Indicateur</td><td>Unité</td><td>Période</td><td>Valeur</td></tr></thead><tbody><tr><td>Temps de réponse</td><td>secondes</td><td>mai 2026</td><td>1,8</td></tr></tbody></table>"
            },
            "output_field": "readability.content",
            "output_sha256": "b157f22d79250d7b2bc08989af25c0186b9491bfdb996b045616c713fdda0f02",
            "source_column_headers_explicit": false
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "<cell>Indicateur</cell><cell>Unité</cell><cell>Période</cell><cell>Valeur</cell>",
              "data_row": "<cell>Temps de réponse</cell><cell>secondes</cell><cell>mai 2026</cell><cell>1,8</cell>",
              "table_excerpt": "<table>\n      <row>\n        <cell role=\"head\">Mesures synthétiques</cell>\n      </row>\n      <row>\n        <cell>Indicateur</cell>\n        <cell>Unité</cell>\n        <cell>Période</cell>\n        <cell>Valeur</cell>\n      </row>\n      <row>\n        <cell>Temps de réponse</cell>\n        <cell>secondes</cell>\n        <cell>mai 2026</cell>\n        <cell>1,8</cell>\n      </row>\n    </table>"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "55b3e1a129261e4e41b4da321791ffc117d855454212926e229698490d3e339b",
            "source_column_headers_explicit": false
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "<td class=\"case-cell\">Indicateur</td><td class=\"case-cell\">Unité</td><td class=\"case-cell\">Période</td><td class=\"case-cell\">Valeur</td>",
              "data_row": "<td class=\"case-cell\">Temps de réponse</td><td class=\"case-cell\">secondes</td><td class=\"case-cell\">mai 2026</td><td class=\"case-cell\">1,8</td>",
              "table_excerpt": "<table><caption>Mesures synthétiques</caption><thead><tr><td class=\"case-cell\">Indicateur</td><td class=\"case-cell\">Unité</td><td class=\"case-cell\">Période</td><td class=\"case-cell\">Valeur</td></tr></thead><tbody><tr><td class=\"case-cell\">Temps de réponse</td><td class=\"case-cell\">secondes</td><td class=\"case-cell\">mai 2026</td><td class=\"case-cell\">1,8</td></tr></tbody></table>"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "4e8bf750b5afca1e10f4df92710003973cba39edcf2d76115763318902ffe514",
            "source_column_headers_explicit": false
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "absent",
            "expected_data_row": "not_found",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [],
            "data_values": [],
            "evidence": {
              "header_row": null,
              "data_row": null,
              "table_excerpt": null
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "83fe1f59de6678c68e8fe843a9fa601f606870347da6a587963c95e8869902be",
            "source_column_headers_explicit": false
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": null,
              "data_row": "Temps de réponse| secondes| mai 2026| 1,8  ",
              "table_excerpt": "Mesures synthétiquesIndicateur| Unité| Période| Valeur  \n---|---|---|---  \nTemps de réponse| secondes| mai 2026| 1,8  "
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "20a2f3d6190524aa6a555d94b24b2477af4a656d13c085990d80812a7a447343",
            "source_column_headers_explicit": false
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "markdown_header_row",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [
              "Indicateur",
              "Unité",
              "Période",
              "Valeur"
            ],
            "data_values": [
              "Temps de réponse",
              "secondes",
              "mai 2026",
              "1,8"
            ],
            "evidence": {
              "header_row": "| Indicateur | Unité | Période | Valeur |\n| --- | --- | --- | --- |",
              "data_row": "| Temps de réponse | secondes | mai 2026 | 1,8 |",
              "table_excerpt": "| Indicateur | Unité | Période | Valeur |\n| --- | --- | --- | --- |\n| Temps de réponse | secondes | mai 2026 | 1,8 |"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "43336ea91fec0ecbf729cbeda85c351ecf58889dd2b340cd52149962edf449d1",
            "source_column_headers_explicit": false
          }
        }
      },
      "raw_output": "outputs/table-fr-2.json",
      "fixture": "fixtures/table-fr-2.html"
    },
    {
      "id": "caveat-fr-1",
      "pair_id": "caveat-fr",
      "family": "caveat",
      "language": "fr",
      "variant": "paragraph-element",
      "synthetic_data": true,
      "html_sha256": "81cf84543a529ce8dbcb55cda0f434b46b61512777cee4f3d9b167d0866c0481",
      "visible_text_sha256": "a5d4da4dadb2600c52c2216b87945fa4aeef99fb012f87f9194b5f1a8e8e00ad",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "paragraph-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "readability.content",
            "output_sha256": "f75514f8ac6599cf54936370e6c45b672bddb36e00fe82f30849db62e345f4ce"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "30ac06d8da8216bc9cf24e728b13d44cd142bbcc49cdcc8b8b6b239ddf1514d9"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "9ccc1b7f174ad2ad3b473e9f66026766efe93e1c485d937957605e4b15aec2ec"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "26370de047a1b5100eaa914ab82474d55c37be0ce06720035b0182975a4f8ec1"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "da6b95b50737d5e967c743061bfda403bbb43718dbf030d8f90e3a9613234cda"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "a1c581388eacd73d13bd2166bb0c1409de9efd8abd830a5ec03e53e7b79e5736"
          }
        }
      },
      "raw_output": "outputs/caveat-fr-1.json",
      "fixture": "fixtures/caveat-fr-1.html"
    },
    {
      "id": "caveat-fr-2",
      "pair_id": "caveat-fr",
      "family": "caveat",
      "language": "fr",
      "variant": "aside-element",
      "synthetic_data": true,
      "html_sha256": "5902c7fdfbf78740799d219bc7680ad6a3ea9d400a6ec977cb13291f28f48392",
      "visible_text_sha256": "a5d4da4dadb2600c52c2216b87945fa4aeef99fb012f87f9194b5f1a8e8e00ad",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "aside-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "absent",
            "caveat_element": "absent",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": null
            },
            "output_field": "readability.content",
            "output_sha256": "d45d25a821c3bf43f559522ad7d653b3328cffd03915c8a425df993d984ead07"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "caveat_text": "absent",
            "caveat_element": "absent",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": null
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "b5a2885c8d25e8fa7e334222b5c0e8ba551a1be7259afd9b075a6e52368ae264"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "4c42ff9c26b1503f09545668e784a7108d4865d353d32f5bb0f3baf4b5984b82"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "absent",
            "caveat_element": "absent",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": null
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "f1d7d6c516f9a0a3326bf576e088a8f3da30d3726423d9e25ade625e03aff1a6"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "da6b95b50737d5e967c743061bfda403bbb43718dbf030d8f90e3a9613234cda"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Réserve essentielle : cet exemple synthétique ne mesure ni un trafic réel, ni un classement, ni une citation par un système d’IA."
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "a1c581388eacd73d13bd2166bb0c1409de9efd8abd830a5ec03e53e7b79e5736"
          }
        }
      },
      "raw_output": "outputs/caveat-fr-2.json",
      "fixture": "fixtures/caveat-fr-2.html"
    },
    {
      "id": "heading-en-1",
      "pair_id": "heading-en",
      "family": "heading",
      "language": "en",
      "variant": "heading-element",
      "synthetic_data": true,
      "html_sha256": "e4c8dd8b2ea87f113776cfe6a51420c484a24c97750639347c1ddec38b1445c1",
      "visible_text_sha256": "e40869302b92e9b402f42258e04bf4acc51e4faf496285f71deaf8bad1ed76f5",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "heading-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<h2>Measurement conditions</h2>"
            },
            "output_field": "readability.content",
            "output_sha256": "f975f2b307c50cac67dd869eeadd093c9bc67ede9b27ea6ec3f81003ce7638d7"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<head rend=\"h2\">Measurement conditions</head>"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "e46a3ca344c18e58065359aceb261716fa2907deb0c2573739b6083924685251"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<h2 class=\"case-marker\">Measurement conditions</h2>"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "4d15bf98d00e82c34584f16076ac99c711e0e693b715b4a87dd3322f1fbce742"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "explicit",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "<h2 class=\"case-marker\">Measurement conditions</h2>"
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "6c4c15a897ef7963863b5475c51a1051da3f4af34c1f2c682c4f454fdfa2cee6"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "markdown_heading",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "## Measurement conditions"
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "9a28736bde52dc07bf00633d53d8f8bc721983acc27222156b039d9bb2a9e56a"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "markdown_heading",
            "heading_level": "h2",
            "evidence": {
              "excerpt": "## Measurement conditions"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "f9e6452285c0656268c583c49f7dce0e04970ffabf6e6daa28a636b1dc925028"
          }
        }
      },
      "raw_output": "outputs/heading-en-1.json",
      "fixture": "fixtures/heading-en-1.html"
    },
    {
      "id": "heading-en-2",
      "pair_id": "heading-en",
      "family": "heading",
      "language": "en",
      "variant": "generic-element",
      "synthetic_data": true,
      "html_sha256": "4173dad4d266784865a6ed57bddde0f63604d5b192c97e4b434405a9427216ed",
      "visible_text_sha256": "e40869302b92e9b402f42258e04bf4acc51e4faf496285f71deaf8bad1ed76f5",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "generic-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Measurement conditions"
            },
            "output_field": "readability.content",
            "output_sha256": "82182331487ce72ad6b4cb39fed4024217805600afc68a0ddc8aa0f6567ebd97"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Measurement conditions"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "4bb36170459a2b67ddfbb0ede501a5a2be00b5f8a8bba226428e3f48298d4843"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Measurement conditions"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "a1515c1e04b64d00c3ce5a312047154ded3e4d9f060ddd2da5c5c30b75d05608"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Measurement conditions"
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "632723f7cd2ad57c36e1ec194dfdd13316a52922c35d017e4c8195752b17ca0b"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Measurement conditions"
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "4a886f4f93313f17906f630eda280ebfef8276b77fc69f158ba86d0926909fe5"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "heading_relation": "text_only",
            "heading_level": null,
            "evidence": {
              "excerpt": "Measurement conditions"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "01bf6d792ae6929dc6bd49c239ff0457711b4aabb93daaeec20bb07a425aab57"
          }
        }
      },
      "raw_output": "outputs/heading-en-2.json",
      "fixture": "fixtures/heading-en-2.html"
    },
    {
      "id": "table-en-1",
      "pair_id": "table-en",
      "family": "table",
      "language": "en",
      "variant": "header-cells",
      "synthetic_data": true,
      "html_sha256": "374211644b0d1ad2d4ae9647d84e7e3e518ff392b9f4aaa108e438677c2b05da",
      "visible_text_sha256": "dcd87fc5c06b6fe99d76138e6bf2e4fe1aec9516f4c094b20f16ffa38e0981a1",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "row_header_relation": "explicit",
            "column_header_relation": "explicit"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "explicit",
            "row_header_relation": "explicit",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "<th scope=\"col\">Indicator</th><th scope=\"col\">Unit</th><th scope=\"col\">Period</th><th scope=\"col\">Value</th>",
              "data_row": "<th scope=\"row\">Response time</th><td>seconds</td><td>May 2026</td><td>1.8</td>",
              "table_excerpt": "<table><caption>Synthetic measurements</caption><thead><tr><th scope=\"col\">Indicator</th><th scope=\"col\">Unit</th><th scope=\"col\">Period</th><th scope=\"col\">Value</th></tr></thead><tbody><tr><th scope=\"row\">Response time</th><td>seconds</td><td>May 2026</td><td>1.8</td></tr></tbody></table>"
            },
            "output_field": "readability.content",
            "output_sha256": "cc1de29c4ea5d07f4c69e5d5ad58d8d9d148b3bec31053ccf45b3eea11d6ceb8",
            "source_column_headers_explicit": true
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "<cell role=\"head\">Indicator</cell><cell role=\"head\">Unit</cell><cell role=\"head\">Period</cell><cell role=\"head\">Value</cell>",
              "data_row": "<cell>Response time</cell><cell>seconds</cell><cell>May 2026</cell><cell>1.8</cell>",
              "table_excerpt": "<table>\n      <row>\n        <cell role=\"head\">Synthetic measurements</cell>\n      </row>\n      <row>\n        <cell role=\"head\">Indicator</cell>\n        <cell role=\"head\">Unit</cell>\n        <cell role=\"head\">Period</cell>\n        <cell role=\"head\">Value</cell>\n      </row>\n      <row>\n        <cell>Response time</cell>\n        <cell>seconds</cell>\n        <cell>May 2026</cell>\n        <cell>1.8</cell>\n      </row>\n    </table>"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "6d29047970a22bb54d72b4d58bf6236608242f90a1a0636efa5672153f992560",
            "source_column_headers_explicit": true
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "explicit",
            "row_header_relation": "explicit",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "<th class=\"case-cell\" scope=\"col\">Indicator</th><th class=\"case-cell\" scope=\"col\">Unit</th><th class=\"case-cell\" scope=\"col\">Period</th><th class=\"case-cell\" scope=\"col\">Value</th>",
              "data_row": "<th class=\"case-cell\" scope=\"row\">Response time</th><td class=\"case-cell\">seconds</td><td class=\"case-cell\">May 2026</td><td class=\"case-cell\">1.8</td>",
              "table_excerpt": "<table><caption>Synthetic measurements</caption><thead><tr><th class=\"case-cell\" scope=\"col\">Indicator</th><th class=\"case-cell\" scope=\"col\">Unit</th><th class=\"case-cell\" scope=\"col\">Period</th><th class=\"case-cell\" scope=\"col\">Value</th></tr></thead><tbody><tr><th class=\"case-cell\" scope=\"row\">Response time</th><td class=\"case-cell\">seconds</td><td class=\"case-cell\">May 2026</td><td class=\"case-cell\">1.8</td></tr></tbody></table>"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "dd0d4776a404ecb7e226e3cda9b66fd53711dbe5a979e0f0d0bc58d141dc645c",
            "source_column_headers_explicit": true
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "absent",
            "expected_data_row": "not_found",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [],
            "data_values": [],
            "evidence": {
              "header_row": null,
              "data_row": null,
              "table_excerpt": null
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "83e20c3f4eabe5503f05c00084a5638fb1eb93d87e5af4b9a8289bb3b9196078",
            "source_column_headers_explicit": true
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": null,
              "data_row": "Response time| seconds| May 2026| 1.8  ",
              "table_excerpt": "Synthetic measurementsIndicator| Unit| Period| Value  \n---|---|---|---  \nResponse time| seconds| May 2026| 1.8  "
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "86120ade9741f764e399a69d1b982a7af7a7ac8ad132e704fbc211b318dc4e0b",
            "source_column_headers_explicit": true
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "markdown_header_row",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "| Indicator | Unit | Period | Value |\n| --- | --- | --- | --- |",
              "data_row": "| Response time | seconds | May 2026 | 1.8 |",
              "table_excerpt": "| Indicator | Unit | Period | Value |\n| --- | --- | --- | --- |\n| Response time | seconds | May 2026 | 1.8 |"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "b89ed68e1940ec52ddc6c2ca9f80ec35d1b57d7cde93df26244dd029a4fcff13",
            "source_column_headers_explicit": true
          }
        }
      },
      "raw_output": "outputs/table-en-1.json",
      "fixture": "fixtures/table-en-1.html"
    },
    {
      "id": "table-en-2",
      "pair_id": "table-en",
      "family": "table",
      "language": "en",
      "variant": "data-cells",
      "synthetic_data": true,
      "html_sha256": "f047171076d291106cd77b19fe1195a11b287e101144a134317cf2a3f64dd654",
      "visible_text_sha256": "dcd87fc5c06b6fe99d76138e6bf2e4fe1aec9516f4c094b20f16ffa38e0981a1",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "row_header_relation": "not_explicit",
            "column_header_relation": "not_explicit"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "<td>Indicator</td><td>Unit</td><td>Period</td><td>Value</td>",
              "data_row": "<td>Response time</td><td>seconds</td><td>May 2026</td><td>1.8</td>",
              "table_excerpt": "<table><caption>Synthetic measurements</caption><thead><tr><td>Indicator</td><td>Unit</td><td>Period</td><td>Value</td></tr></thead><tbody><tr><td>Response time</td><td>seconds</td><td>May 2026</td><td>1.8</td></tr></tbody></table>"
            },
            "output_field": "readability.content",
            "output_sha256": "d8405f99038c4ecba3d10c49c8a6d8f423938b614d71a6b754b8d8add9041188",
            "source_column_headers_explicit": false
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "<cell>Indicator</cell><cell>Unit</cell><cell>Period</cell><cell>Value</cell>",
              "data_row": "<cell>Response time</cell><cell>seconds</cell><cell>May 2026</cell><cell>1.8</cell>",
              "table_excerpt": "<table>\n      <row>\n        <cell role=\"head\">Synthetic measurements</cell>\n      </row>\n      <row>\n        <cell>Indicator</cell>\n        <cell>Unit</cell>\n        <cell>Period</cell>\n        <cell>Value</cell>\n      </row>\n      <row>\n        <cell>Response time</cell>\n        <cell>seconds</cell>\n        <cell>May 2026</cell>\n        <cell>1.8</cell>\n      </row>\n    </table>"
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "c48a9fe2ad013cf64762a3e6f333849b056af44391f8c937ccfd8360a5da6459",
            "source_column_headers_explicit": false
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "present",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "<td class=\"case-cell\">Indicator</td><td class=\"case-cell\">Unit</td><td class=\"case-cell\">Period</td><td class=\"case-cell\">Value</td>",
              "data_row": "<td class=\"case-cell\">Response time</td><td class=\"case-cell\">seconds</td><td class=\"case-cell\">May 2026</td><td class=\"case-cell\">1.8</td>",
              "table_excerpt": "<table><caption>Synthetic measurements</caption><thead><tr><td class=\"case-cell\">Indicator</td><td class=\"case-cell\">Unit</td><td class=\"case-cell\">Period</td><td class=\"case-cell\">Value</td></tr></thead><tbody><tr><td class=\"case-cell\">Response time</td><td class=\"case-cell\">seconds</td><td class=\"case-cell\">May 2026</td><td class=\"case-cell\">1.8</td></tr></tbody></table>"
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "061bafa129843240a20b1ce58d03f912d9e027b1f776484d38b3aea44838045b",
            "source_column_headers_explicit": false
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "table_structure": "absent",
            "expected_data_row": "not_found",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_explicit",
            "column_labels": [],
            "data_values": [],
            "evidence": {
              "header_row": null,
              "data_row": null,
              "table_excerpt": null
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "83e20c3f4eabe5503f05c00084a5638fb1eb93d87e5af4b9a8289bb3b9196078",
            "source_column_headers_explicit": false
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "not_explicit",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": null,
              "data_row": "Response time| seconds| May 2026| 1.8  ",
              "table_excerpt": "Synthetic measurementsIndicator| Unit| Period| Value  \n---|---|---|---  \nResponse time| seconds| May 2026| 1.8  "
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "86120ade9741f764e399a69d1b982a7af7a7ac8ad132e704fbc211b318dc4e0b",
            "source_column_headers_explicit": false
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "table_structure": "markdown_layout",
            "expected_data_row": "exact_values_in_order",
            "column_header_relation": "markdown_header_row",
            "row_header_relation": "not_encoded_in_markdown",
            "column_labels": [
              "Indicator",
              "Unit",
              "Period",
              "Value"
            ],
            "data_values": [
              "Response time",
              "seconds",
              "May 2026",
              "1.8"
            ],
            "evidence": {
              "header_row": "| Indicator | Unit | Period | Value |\n| --- | --- | --- | --- |",
              "data_row": "| Response time | seconds | May 2026 | 1.8 |",
              "table_excerpt": "| Indicator | Unit | Period | Value |\n| --- | --- | --- | --- |\n| Response time | seconds | May 2026 | 1.8 |"
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "b89ed68e1940ec52ddc6c2ca9f80ec35d1b57d7cde93df26244dd029a4fcff13",
            "source_column_headers_explicit": false
          }
        }
      },
      "raw_output": "outputs/table-en-2.json",
      "fixture": "fixtures/table-en-2.html"
    },
    {
      "id": "caveat-en-1",
      "pair_id": "caveat-en",
      "family": "caveat",
      "language": "en",
      "variant": "paragraph-element",
      "synthetic_data": true,
      "html_sha256": "11babb37902010f22ccbe9592ac6757c3f8543c2ab09dff81157398e1dba5fe5",
      "visible_text_sha256": "066ed1dc21744337022e89ba1f88625cb1f4eeba9f9e2a3fd673ee2cdd499ded",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "paragraph-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "readability.content",
            "output_sha256": "f41c397139aeac6a0cb4dff56c848809b0736968ccbca1e3c3d85183e9d6ad25"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "38f60a02988bc76e1135237947abd632ecb41946ba385398f6fce801e04fb7be"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "7d4ff7497952540738d3c6b36ed87adec3f117c17112458c510ea6ee3e32c996"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "not_aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "bc598b393caad766fa014f4d82c27a4fcbfb45316c8865a2d86a2ccceae93bcb"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "c8488bd4f1582e5cc6ae5b2190fe51b909bf4b02e7acd7b562dcdbad33c2bbf4"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "957f388db8089777f7bced0a55c6262479540ffc9deae953a1a17384bfe39bb0"
          }
        }
      },
      "raw_output": "outputs/caveat-en-1.json",
      "fixture": "fixtures/caveat-en-1.html"
    },
    {
      "id": "caveat-en-2",
      "pair_id": "caveat-en",
      "family": "caveat",
      "language": "en",
      "variant": "aside-element",
      "synthetic_data": true,
      "html_sha256": "d364cbe27a74da20accf413f383b852914e5fa9cf4216d6e7d3960ce561cf95a",
      "visible_text_sha256": "066ed1dc21744337022e89ba1f88625cb1f4eeba9f9e2a3fd673ee2cdd499ded",
      "visible_text_equality_with_pair": true,
      "pair_markup_equal_after_masking_treatment": true,
      "tools": {
        "readability": "ok",
        "trafilatura": "ok",
        "readability_lxml": "ok",
        "newspaper4k": "ok",
        "justext": "no_output",
        "html2text": "ok",
        "markdownify": "ok"
      },
      "evaluation": {
        "schema_version": 2,
        "method": "Exact expected labels and values in the same table; captions excluded from column-header detection. Markdown layout is reported separately from native HTML semantics. No claim-attachment inference.",
        "relation": {
          "source": {
            "fixture_variant": "aside-element"
          },
          "readability": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "absent",
            "caveat_element": "absent",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": null
            },
            "output_field": "readability.content",
            "output_sha256": "94885503024da2a9571c17dcc27a6844744c90520388aa1e489c2a7794170934"
          },
          "trafilatura": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "xml",
            "caveat_text": "absent",
            "caveat_element": "absent",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": null
            },
            "output_field": "trafilatura.xml",
            "output_sha256": "1872b0aabe5e4fadfb76e8751a9084aa4c130fecd797e32e8e54f90def60e9b5"
          },
          "readability_lxml": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "present",
            "caveat_element": "aside",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.readability_lxml.html",
            "output_sha256": "962af45f1751e7f0f5428c9e50e503e2231367cfdf5b787d99cfbbc22f02d324"
          },
          "newspaper4k": {
            "status": "ok",
            "tool_class": "content_extractor",
            "format": "html",
            "caveat_text": "absent",
            "caveat_element": "absent",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": null
            },
            "output_field": "additional_extractors.newspaper4k.html",
            "output_sha256": "c3a6c6c60449de5fcbcddfcbd4c6e7e7ff10b2c4920375b8d860243cec3a4cab"
          },
          "justext": {
            "status": "no_output",
            "tool_class": "content_extractor",
            "format": "text",
            "row_header_relation": "not_evaluated",
            "column_header_relation": "not_evaluated",
            "evidence": null
          },
          "html2text": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.html2text.markdown",
            "output_sha256": "c8488bd4f1582e5cc6ae5b2190fe51b909bf4b02e7acd7b562dcdbad33c2bbf4"
          },
          "markdownify": {
            "status": "ok",
            "tool_class": "markdown_converter",
            "format": "markdown",
            "caveat_text": "present",
            "caveat_element": "not_encoded_in_text",
            "attachment_to_claim": "not_evaluated",
            "evidence": {
              "excerpt": "Essential caveat: this synthetic example measures neither real traffic, ranking, nor citation by an AI system."
            },
            "output_field": "additional_extractors.markdownify.markdown",
            "output_sha256": "957f388db8089777f7bced0a55c6262479540ffc9deae953a1a17384bfe39bb0"
          }
        }
      },
      "raw_output": "outputs/caveat-en-2.json",
      "fixture": "fixtures/caveat-en-2.html"
    }
  ],
  "evaluation_revision": {
    "version": "2.0.0",
    "reviewed_on": "2026-09-21",
    "extraction_rerun": false,
    "counter_tests_executed": true,
    "counter_test_correction": "The original four accepted:false entries were declarations, not executed checks. This revision executes four mutations per language against archived outputs, each with a positive control.",
    "original_aggregate": {
      "path": "results-original-v1.2.0.json",
      "sha256": "87a9bf8c4062fcf3d0f4c8b4898af62f871bfb189fabbce667a64b5db9c2e9a2"
    },
    "raw_outputs": [
      {
        "path": "outputs/heading-fr-1.json",
        "sha256": "a8bba7f38605a9c47bd2f53699e9ab71a244227decef5f85fce8b1d17f1ecf78"
      },
      {
        "path": "outputs/heading-fr-2.json",
        "sha256": "0623a1960a18fcd599d1d6b39c087064958f1153f5a4993b9d1d2bea591a2a3c"
      },
      {
        "path": "outputs/table-fr-1.json",
        "sha256": "229f23e646343a8baf06f034052fa5ac12fcc10f4c0dabe6446beb3df4ad1cf6"
      },
      {
        "path": "outputs/table-fr-2.json",
        "sha256": "ee15bfb3664970f7a4d761f28dbc4fbdb07ad8adcf87be3b5073d1bf8a5cb196"
      },
      {
        "path": "outputs/caveat-fr-1.json",
        "sha256": "d89046419b30fb07dd06542e9a06671fb68e79ba57325d2158e3cf6c3ea8ce25"
      },
      {
        "path": "outputs/caveat-fr-2.json",
        "sha256": "dd3eaef65f03cfe5eec9bc7179941d52404e3db158de62b3cc23ca047a5be873"
      },
      {
        "path": "outputs/heading-en-1.json",
        "sha256": "ee51503a571e654136552cdd72c7487926f106e158a7167fd68c58ec3d5e4a41"
      },
      {
        "path": "outputs/heading-en-2.json",
        "sha256": "c8bfd13a8adfe6d5db63c4f8d3a937a9923949e89b5b9ba51ce3e36dd087ef00"
      },
      {
        "path": "outputs/table-en-1.json",
        "sha256": "988077e5a5f2050c4d88bb95c6940a9ac9658ab495040dc82b041651bd6489c0"
      },
      {
        "path": "outputs/table-en-2.json",
        "sha256": "1712c65c1c8df7fb565ef7a7426192a58ef5c15d7c31497f911968170c2ebe93"
      },
      {
        "path": "outputs/caveat-en-1.json",
        "sha256": "2f87ea1c09ea09e9073dba08abd8977738eee1e04242385e1c1fb4397845e994"
      },
      {
        "path": "outputs/caveat-en-2.json",
        "sha256": "5ec45897c4d21232c1ad54ebd1902ab347ccadb2fee508e40906eb36c0200348"
      }
    ],
    "note": "Only evaluation of archived outputs was refined. Original extraction dates, outputs and repeatability results are unchanged. Raw-file evaluation fields are the legacy v1 summary; this aggregate supersedes them."
  }
}
