{
  "date": "2026-11-05",
  "numerator": 320,
  "denominator": 798,
  "percent": 40.100250626566414,
  "counting_rule": "Unicode regex words \\b[\\w]+(?:[’'-][\\w]+)*\\b; denominator all prose/headings/static tool labels/status/hint (includes tool download label); excludes measured tables, evidence-download links, code, navigation/footer/diagram labels and dynamic results. Numerator only five fresh paired-control paragraphs. Mixed-content/common theory/method/limits excluded.",
  "comparison_scope": "Ten actually retrieved related tool bodies on2026-11-05, NOT verified Google natural top10 or whole-web absence. One page already has a minidom/ET mixed example, which is explicitly excluded. Only the fresh6-fixture repeated-pass dataset supports numerator. No online converter results claimed.",
  "paragraphs": [
    {
      "id": "answer",
      "exclusive": false,
      "words": 46,
      "text": "Paste XML to format and download it below. Compare the parsed text before using a reformatted file: our local two-pass controls show that a formatter can keep adding whitespace, while a stable second pass still does not prove that the first pass preserved the original text.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "method",
      "exclusive": false,
      "words": 51,
      "text": "Measured November 5, 2026 using Python 3.12.14 and ElementTree 1.3.0. Six newly constructed XML inputs were formatted with ElementTree.indent plus tostring and the bundled minidom.toprettyxml, each with two-space indentation. Every first-pass output became the next input. ElementTree and minidom independently read the saved text back.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "compact",
      "exclusive": true,
      "words": 60,
      "text": "The compact batch input contained 47 bytes and the text northsouth. ElementTree produced 54 bytes on both passes. Minidom produced 94 bytes first and 110 bytes second. Its concatenated text grew from 17 to 33 characters between passes, whereas ElementTree stayed at 17. Element counts remained unchanged. Counting elements alone therefore missed the additional text nodes in this supplied pair.",
      "evidence": "results.json and24 saved outputs with independently agreed text readback"
    },
    {
      "id": "preformatted",
      "exclusive": true,
      "words": 64,
      "text": "The preformatted control had the same two row elements and values as the compact input, but already contained the chosen line breaks and indentation. Its input was 54 bytes. ElementTree returned 54 bytes twice; minidom returned 110 and then 126. Both paths received identical bytes for this control. Existing indentation, rather than a different set of element values, distinguished it from the compact case.",
      "evidence": "results.json and24 saved outputs with independently agreed text readback"
    },
    {
      "id": "inherited",
      "exclusive": true,
      "words": 63,
      "text": "The 75-byte inherited-preserve control put xml:space on its document element and nested two value elements inside a group. ElementTree returned 92 bytes on each pass. Minidom returned 132 and then 170. Both first outputs contained 31 concatenated text characters; only the minidom second output grew to 69. The original preserve attribute remained present, so retaining that attribute did not establish text preservation.",
      "evidence": "results.json and24 saved outputs with independently agreed text readback"
    },
    {
      "id": "reset",
      "exclusive": true,
      "words": 64,
      "text": "Adding an explicit xml:space default reset to the nested group made a separate 95-byte control. Its ElementTree exports were 112 bytes twice; its minidom exports were 152 and 190. The reset and inherited cases had matching parsed text within each corresponding path and pass. This measured pair shows that the attribute change did not produce a different whitespace policy in these default calls.",
      "evidence": "results.json and24 saved outputs with independently agreed text readback"
    },
    {
      "id": "pad",
      "exclusive": true,
      "words": 69,
      "text": "The 61-byte pad control contained three literal spaces in a leaf element beside a cobalt value. ElementTree returned 68 bytes twice, while minidom returned 108 and 124. Both readers agreed on 16 concatenated text characters after the first pass and 32 after the second minidom pass. The three-space leaf survived; the growth occurred in surrounding text. The report keeps each text and tail value rather than trimming them away.",
      "evidence": "results.json and24 saved outputs with independently agreed text readback"
    },
    {
      "id": "mixed",
      "exclusive": false,
      "words": 58,
      "text": "Mixed content needs a separate check. Our fresh note puts text before and after an inline part element. ElementTree kept that control at 54 bytes on both passes, while minidom returned 104 and 114. This is a known formatting hazard; examine the complete text, including spaces and newlines, rather than assuming that matching element names preserve a sentence.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "interpret",
      "exclusive": false,
      "words": 52,
      "text": "A byte comparison, a text comparison and an element count answer different questions. This experiment intentionally counts all parsed whitespace as text. Some applications ignore layout-only whitespace under their own rules; the test does not decide those application rules. Stable output only establishes that a particular operation stopped changing these particular bytes.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "faq",
      "exclusive": false,
      "words": 58,
      "text": "Does a stable second pass mean the XML is unchanged? No: compare against the original, not only against the first result. Does xml:space force every formatter to protect text? These default local calls changed text while retaining the attribute. Are these results a ranking of online formatters? No: the saved outputs came from the named Python paths.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "tool-limits",
      "exclusive": false,
      "words": 65,
      "text": "This browser tool conservatively leaves a whole subtree inline when its element has direct non-whitespace text or xml:space preserve. Leaf elements are serialized without reindentation. Other element-only content receives layout whitespace. Parsing and serialization can change lexical details such as quoting or empty-tag notation. DOCTYPE input is rejected. This is not byte preservation, schema validation or a signature-safe transformation. Input stays in this page.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "reproduce",
      "exclusive": false,
      "words": 52,
      "text": "Run the reproduction script in an empty folder with the stated Python environment. It creates the fixed inputs, both passes and the raw report. Full checksums and text maps accompany every output. Test files are small constructed controls, not untrusted documents; no external resource, performance ceiling or cross-browser compatibility test was performed.",
      "evidence": "excluded common/method/boundary"
    },
    {
      "id": "related",
      "exclusive": false,
      "words": 36,
      "text": "Base64 decode restores the text representation before XML formatting. The separate XML encoding-declaration experiment concerns byte decoding and declarations, while this page examines whitespace introduced by repeated formatting. JSON to CSV covers a different structure-conversion boundary.",
      "evidence": "excluded common/method/boundary"
    }
  ],
  "previous_batch_reused": false
}