{
  "upstream_source": "DavidAnson/markdownlint default branch",
  "summary": {
    "total_rules": 53,
    "rules_with_examples": 53,
    "rules_with_fix_metadata": 37,
    "rules_with_parameters": 34,
    "manual_required": 13,
    "missing_fixtures": 0,
    "stale_fixtures": 0
  },
  "rules": [
    {
      "rule_id": "MD001",
      "aliases": [
        "heading-increment"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "front_matter_title",
          "value_type": "string",
          "default_value": "^\\s*title\\s*[:=]",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "sequential_heading_levels",
          "source": "# H1\n\n## H2\n\n### H3\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "skipped_heading_level",
          "source": "# H1\n\n### H3\n",
          "expected": "MD001"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD001\": true }",
          "expected": null
        },
        {
          "name": "front_matter_title_valid",
          "source": "{ \"MD001\": { \"front_matter_title\": \"^\\\\s*title\\\\s*[:=]\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD001\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "front_matter_title_invalid_type",
          "source": "{ \"MD001\": { \"front_matter_title\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "code_fence_heading_is_ignored",
          "source": "# H1\n\n```\n### not a heading\n```\n",
          "expected": null
        }
      ],
      "manual_required": [
        "fix requires author intent: changing heading levels can change document structure and anchors"
      ]
    },
    {
      "rule_id": "MD003",
      "aliases": [
        "heading-style"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "atx",
            "atx_closed",
            "consistent",
            "setext",
            "setext_with_atx",
            "setext_with_atx_closed"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "atx_heading_style",
          "source": "# Heading\n\n## Subheading\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "setext_heading_style",
          "source": "Heading\n=======\n",
          "expected": "MD003"
        }
      ],
      "fix": [
        {
          "name": "setext_h1_to_atx_h1",
          "source": "Heading\n=======\n",
          "expected": "# Heading\n"
        },
        {
          "name": "setext_h2_to_atx_h2",
          "source": "Heading\n-------\n",
          "expected": "## Heading\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD003\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD003\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD003\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD003\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "horizontal_rule_after_blank_line",
          "source": "# Heading\n\n---\n\nText\n",
          "expected": null
        },
        {
          "name": "front_matter_delimiters",
          "source": "---\ntitle: Doc\n---\n\n# Doc\n",
          "expected": null
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD004",
      "aliases": [
        "ul-style"
      ],
      "tags": [
        "bullet",
        "ul"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "asterisk",
            "consistent",
            "dash",
            "plus",
            "sublist"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "consistent_unordered_markers",
          "source": "- one\n- two\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "mixed_unordered_markers",
          "source": "- one\n+ two\n",
          "expected": "MD004"
        }
      ],
      "fix": [
        {
          "name": "normalize_unordered_marker",
          "source": "- one\n+ two\n",
          "expected": "- one\n- two\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD004\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD004\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD004\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD004\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "front_matter_delimiter_does_not_seed_style",
          "source": "---\ntitle: Doc\n---\n\n***\n\n***\n",
          "expected": null
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD005",
      "aliases": [
        "list-indent"
      ],
      "tags": [
        "bullet",
        "indentation"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "consistent_list_indentation",
          "source": "- one\n- two\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "inconsistent_list_indentation",
          "source": "- one\n  - nested\n   - inconsistent\n",
          "expected": "MD005"
        }
      ],
      "fix": [
        {
          "name": "nested_sibling_indent_drift",
          "source": "- one\n  - nested\n   - inconsistent\n",
          "expected": "- one\n  - nested\n  - inconsistent\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD005\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD005\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "ambiguous_top_level_indent_not_auto_fixed",
          "source": "- one\n - maybe nested\n",
          "expected": null
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD007",
      "aliases": [
        "ul-indent"
      ],
      "tags": [
        "bullet",
        "indentation"
      ],
      "parameters": [
        {
          "key": "indent",
          "value_type": "integer",
          "default_value": "2",
          "values": []
        },
        {
          "key": "start_indent",
          "value_type": "integer",
          "default_value": "2",
          "values": []
        },
        {
          "key": "start_indented",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "unordered_indent_multiple_of_two",
          "source": "- one\n  - nested\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "unordered_indent_not_multiple_of_two",
          "source": "   - item\n",
          "expected": "MD007"
        }
      ],
      "fix": [
        {
          "name": "normalize_unordered_indent",
          "source": "   - item\n",
          "expected": "- item\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD007\": true }",
          "expected": null
        },
        {
          "name": "indent_valid",
          "source": "{ \"MD007\": { \"indent\": 2 } }",
          "expected": null
        },
        {
          "name": "start_indent_valid",
          "source": "{ \"MD007\": { \"start_indent\": 2 } }",
          "expected": null
        },
        {
          "name": "start_indented_valid",
          "source": "{ \"MD007\": { \"start_indented\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD007\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "indent_invalid_type",
          "source": "{ \"MD007\": { \"indent\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "start_indent_invalid_type",
          "source": "{ \"MD007\": { \"start_indent\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "start_indented_invalid_type",
          "source": "{ \"MD007\": { \"start_indented\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD009",
      "aliases": [
        "no-trailing-spaces"
      ],
      "tags": [
        "whitespace"
      ],
      "parameters": [
        {
          "key": "br_spaces",
          "value_type": "integer",
          "default_value": "2",
          "values": []
        },
        {
          "key": "code_blocks",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "list_item_empty_lines",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "strict",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "line_without_trailing_spaces",
          "source": "text\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "line_with_trailing_spaces",
          "source": "text   \n",
          "expected": "MD009"
        }
      ],
      "fix": [
        {
          "name": "remove_trailing_spaces",
          "source": "text   \n",
          "expected": "text\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD009\": true }",
          "expected": null
        },
        {
          "name": "br_spaces_valid",
          "source": "{ \"MD009\": { \"br_spaces\": 2 } }",
          "expected": null
        },
        {
          "name": "code_blocks_valid",
          "source": "{ \"MD009\": { \"code_blocks\": false } }",
          "expected": null
        },
        {
          "name": "list_item_empty_lines_valid",
          "source": "{ \"MD009\": { \"list_item_empty_lines\": false } }",
          "expected": null
        },
        {
          "name": "strict_valid",
          "source": "{ \"MD009\": { \"strict\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD009\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "br_spaces_invalid_type",
          "source": "{ \"MD009\": { \"br_spaces\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "code_blocks_invalid_type",
          "source": "{ \"MD009\": { \"code_blocks\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "list_item_empty_lines_invalid_type",
          "source": "{ \"MD009\": { \"list_item_empty_lines\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "strict_invalid_type",
          "source": "{ \"MD009\": { \"strict\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "crlf_trailing_spaces",
          "source": "text   \r\n",
          "expected": "MD009"
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD010",
      "aliases": [
        "no-hard-tabs"
      ],
      "tags": [
        "whitespace",
        "hard_tab"
      ],
      "parameters": [
        {
          "key": "code_blocks",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "ignore_code_languages",
          "value_type": "array",
          "default_value": "[]",
          "values": []
        },
        {
          "key": "spaces_per_tab",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "line_without_tab",
          "source": "text\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "line_with_hard_tab",
          "source": "text\twith tab\n",
          "expected": "MD010"
        }
      ],
      "fix": [
        {
          "name": "replace_hard_tab_with_space",
          "source": "a\tb\n",
          "expected": "a b\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD010\": true }",
          "expected": null
        },
        {
          "name": "code_blocks_valid",
          "source": "{ \"MD010\": { \"code_blocks\": true } }",
          "expected": null
        },
        {
          "name": "ignore_code_languages_valid",
          "source": "{ \"MD010\": { \"ignore_code_languages\": [] } }",
          "expected": null
        },
        {
          "name": "spaces_per_tab_valid",
          "source": "{ \"MD010\": { \"spaces_per_tab\": 1 } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD010\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "code_blocks_invalid_type",
          "source": "{ \"MD010\": { \"code_blocks\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "ignore_code_languages_invalid_type",
          "source": "{ \"MD010\": { \"ignore_code_languages\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "spaces_per_tab_invalid_type",
          "source": "{ \"MD010\": { \"spaces_per_tab\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD011",
      "aliases": [
        "no-reversed-links"
      ],
      "tags": [
        "links"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "normal_link",
          "source": "[link](https://example.com)\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "reversed_link",
          "source": "(link)[https://example.com]\n",
          "expected": "MD011"
        }
      ],
      "fix": [
        {
          "name": "swap_reversed_link_syntax",
          "source": "(Example)[https://example.com]\n",
          "expected": "[Example](https://example.com)\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD011\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD011\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD012",
      "aliases": [
        "no-multiple-blanks"
      ],
      "tags": [
        "whitespace",
        "blank_lines"
      ],
      "parameters": [
        {
          "key": "maximum",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "single_blank_line",
          "source": "first\n\nsecond\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "multiple_blank_lines",
          "source": "first\n\n\nsecond\n",
          "expected": "MD012"
        }
      ],
      "fix": [
        {
          "name": "collapse_multiple_blank_lines",
          "source": "a\n\n\nb\n",
          "expected": "a\n\nb\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD012\": true }",
          "expected": null
        },
        {
          "name": "maximum_valid",
          "source": "{ \"MD012\": { \"maximum\": 1 } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD012\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "maximum_invalid_type",
          "source": "{ \"MD012\": { \"maximum\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD013",
      "aliases": [
        "line-length"
      ],
      "tags": [
        "line_length"
      ],
      "parameters": [
        {
          "key": "code_block_line_length",
          "value_type": "integer",
          "default_value": "80",
          "values": []
        },
        {
          "key": "code_blocks",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "heading_line_length",
          "value_type": "integer",
          "default_value": "80",
          "values": []
        },
        {
          "key": "headings",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "line_length",
          "value_type": "integer",
          "default_value": "80",
          "values": []
        },
        {
          "key": "stern",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "strict",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "tables",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "line_at_limit",
          "source": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "line_over_limit",
          "source": "abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefgh\n",
          "expected": "MD013"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD013\": true }",
          "expected": null
        },
        {
          "name": "code_block_line_length_valid",
          "source": "{ \"MD013\": { \"code_block_line_length\": 80 } }",
          "expected": null
        },
        {
          "name": "code_blocks_valid",
          "source": "{ \"MD013\": { \"code_blocks\": true } }",
          "expected": null
        },
        {
          "name": "heading_line_length_valid",
          "source": "{ \"MD013\": { \"heading_line_length\": 80 } }",
          "expected": null
        },
        {
          "name": "headings_valid",
          "source": "{ \"MD013\": { \"headings\": true } }",
          "expected": null
        },
        {
          "name": "line_length_valid",
          "source": "{ \"MD013\": { \"line_length\": 80 } }",
          "expected": null
        },
        {
          "name": "stern_valid",
          "source": "{ \"MD013\": { \"stern\": false } }",
          "expected": null
        },
        {
          "name": "strict_valid",
          "source": "{ \"MD013\": { \"strict\": false } }",
          "expected": null
        },
        {
          "name": "tables_valid",
          "source": "{ \"MD013\": { \"tables\": true } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD013\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "code_block_line_length_invalid_type",
          "source": "{ \"MD013\": { \"code_block_line_length\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "code_blocks_invalid_type",
          "source": "{ \"MD013\": { \"code_blocks\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "heading_line_length_invalid_type",
          "source": "{ \"MD013\": { \"heading_line_length\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "headings_invalid_type",
          "source": "{ \"MD013\": { \"headings\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "line_length_invalid_type",
          "source": "{ \"MD013\": { \"line_length\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "stern_invalid_type",
          "source": "{ \"MD013\": { \"stern\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "strict_invalid_type",
          "source": "{ \"MD013\": { \"strict\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "tables_invalid_type",
          "source": "{ \"MD013\": { \"tables\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "unicode_line_over_limit",
          "source": "あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ あ\n",
          "expected": "MD013"
        }
      ],
      "manual_required": [
        "fix requires author intent: line wrapping can change prose, code, tables, or inline references"
      ]
    },
    {
      "rule_id": "MD014",
      "aliases": [
        "commands-show-output"
      ],
      "tags": [
        "code"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "code_block_with_command_output",
          "source": "```\n$ ls\nfoo\n$ cat bar\n```\n",
          "expected": null
        },
        {
          "name": "latex_display_math",
          "source": "$$ \\sum {k=1}^{n} k = \\frac{n(n+1)}{2} $$\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "code_block_all_commands_with_dollar_prompts",
          "source": "```sh\n$ ls\n$ cat foo\n```\n",
          "expected": "MD014"
        }
      ],
      "fix": [
        {
          "name": "remove_dollar_prompts_from_command_block",
          "source": "```sh\n$ ls\n$ cat foo\n```\n",
          "expected": "```sh\nls\ncat foo\n```\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD014\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD014\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD018",
      "aliases": [
        "no-missing-space-atx"
      ],
      "tags": [
        "headings",
        "atx",
        "spaces"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "atx_heading_has_space",
          "source": "# Heading\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "atx_heading_missing_space",
          "source": "#Heading\n",
          "expected": "MD018"
        }
      ],
      "fix": [
        {
          "name": "insert_missing_space_after_atx_marker",
          "source": "#Heading\n",
          "expected": "# Heading\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD018\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD018\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD019",
      "aliases": [
        "no-multiple-space-atx"
      ],
      "tags": [
        "headings",
        "atx",
        "spaces"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "single_space_after_atx_marker",
          "source": "# Heading\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "multiple_spaces_after_atx_marker",
          "source": "#  Heading\n",
          "expected": "MD019"
        }
      ],
      "fix": [
        {
          "name": "collapse_multiple_spaces_after_atx_marker",
          "source": "#  Heading\n",
          "expected": "# Heading\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD019\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD019\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD020",
      "aliases": [
        "no-missing-space-closed-atx"
      ],
      "tags": [
        "atx_closed",
        "headings",
        "spaces"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "closed_atx_with_single_spaces",
          "source": "# Heading #\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "closed_atx_missing_inner_spaces",
          "source": "#Heading#\n",
          "expected": "MD020"
        }
      ],
      "fix": [
        {
          "name": "add_inner_spaces_to_closed_atx",
          "source": "#Heading#\n",
          "expected": "# Heading #\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD020\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD020\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD021",
      "aliases": [
        "no-multiple-space-closed-atx"
      ],
      "tags": [
        "atx_closed",
        "headings",
        "spaces"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "closed_atx_with_single_spaces",
          "source": "# Heading #\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "closed_atx_with_multiple_inner_spaces",
          "source": "#  Heading  #\n",
          "expected": "MD021"
        }
      ],
      "fix": [
        {
          "name": "collapse_inner_spaces_in_closed_atx",
          "source": "#  Heading  #\n",
          "expected": "# Heading #\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD021\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD021\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD022",
      "aliases": [
        "blanks-around-headings"
      ],
      "tags": [
        "headings",
        "blank_lines"
      ],
      "parameters": [
        {
          "key": "lines_above",
          "value_type": "integer|integer[]",
          "default_value": "1",
          "values": []
        },
        {
          "key": "lines_below",
          "value_type": "integer|integer[]",
          "default_value": "1",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "heading_surrounded_by_blank_lines",
          "source": "text\n\n# Heading\n\ntext\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "heading_without_blank_lines",
          "source": "text\n# Heading\ntext\n",
          "expected": "MD022"
        }
      ],
      "fix": [
        {
          "name": "surround_heading_with_blank_lines",
          "source": "text\n# Heading\ntext\n",
          "expected": "text\n\n# Heading\n\ntext\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD022\": true }",
          "expected": null
        },
        {
          "name": "lines_above_valid",
          "source": "{ \"MD022\": { \"lines_above\": 1 } }",
          "expected": null
        },
        {
          "name": "lines_below_valid",
          "source": "{ \"MD022\": { \"lines_below\": [1, 1] } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD022\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "lines_above_invalid_type",
          "source": "{ \"MD022\": { \"lines_above\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "lines_below_invalid_type",
          "source": "{ \"MD022\": { \"lines_below\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD023",
      "aliases": [
        "heading-start-left"
      ],
      "tags": [
        "headings",
        "spaces"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "heading_starts_left",
          "source": "# Heading\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "indented_heading",
          "source": "  # Heading\n",
          "expected": "MD023"
        }
      ],
      "fix": [
        {
          "name": "dedent_heading",
          "source": "  # Heading\n",
          "expected": "# Heading\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD023\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD023\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD024",
      "aliases": [
        "no-duplicate-heading"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "siblings_only",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "unique_headings",
          "source": "# One\n\n## Two\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "duplicate_heading",
          "source": "# Title\n\n## Section\n\n# Title\n",
          "expected": "MD024"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD024\": true }",
          "expected": null
        },
        {
          "name": "siblings_only_valid",
          "source": "{ \"MD024\": { \"siblings_only\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD024\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "siblings_only_invalid_type",
          "source": "{ \"MD024\": { \"siblings_only\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: duplicate heading fixes require choosing new heading text"
      ]
    },
    {
      "rule_id": "MD025",
      "aliases": [
        "single-title",
        "single-h1"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "front_matter_title",
          "value_type": "string",
          "default_value": "^\\s*title\\s*[:=]",
          "values": []
        },
        {
          "key": "level",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "single_h1",
          "source": "# Title\n\n## Section\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "multiple_h1",
          "source": "# Title\n\n# Another\n",
          "expected": "MD025"
        }
      ],
      "fix": [
        {
          "name": "collapse_spaces_after_blockquote_marker",
          "source": ">  quote\n",
          "expected": "> quote\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD025\": true }",
          "expected": null
        },
        {
          "name": "front_matter_title_valid",
          "source": "{ \"MD025\": { \"front_matter_title\": \"^\\\\s*title\\\\s*[:=]\" } }",
          "expected": null
        },
        {
          "name": "level_valid",
          "source": "{ \"MD025\": { \"level\": 1 } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD025\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "front_matter_title_invalid_type",
          "source": "{ \"MD025\": { \"front_matter_title\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "level_invalid_type",
          "source": "{ \"MD025\": { \"level\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD026",
      "aliases": [
        "no-trailing-punctuation"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "punctuation",
          "value_type": "string",
          "default_value": ".,;:!。，；：！",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "heading_without_trailing_punctuation",
          "source": "# Heading\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "heading_with_trailing_punctuation",
          "source": "# Heading!\n",
          "expected": "MD026"
        }
      ],
      "fix": [
        {
          "name": "remove_trailing_heading_punctuation",
          "source": "# Heading!\n",
          "expected": "# Heading\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD026\": true }",
          "expected": null
        },
        {
          "name": "punctuation_valid",
          "source": "{ \"MD026\": { \"punctuation\": \".,;:!\\u3002\\uff0c\\uff1b\\uff1a\\uff01\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD026\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "punctuation_invalid_type",
          "source": "{ \"MD026\": { \"punctuation\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD027",
      "aliases": [
        "no-multiple-space-blockquote"
      ],
      "tags": [
        "blockquote",
        "spaces"
      ],
      "parameters": [
        {
          "key": "list_items",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "blockquote_single_space",
          "source": "> quote\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "blockquote_multiple_spaces",
          "source": ">  quote\n",
          "expected": "MD027"
        }
      ],
      "fix": [
        {
          "name": "collapse_spaces_after_blockquote_marker",
          "source": ">  quote\n",
          "expected": "> quote\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD027\": true }",
          "expected": null
        },
        {
          "name": "list_items_false_valid",
          "source": "{ \"MD027\": { \"list_items\": false } }",
          "expected": null
        },
        {
          "name": "list_items_valid",
          "source": "{ \"MD027\": { \"list_items\": true } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD027\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "list_items_invalid_type",
          "source": "{ \"MD027\": { \"list_items\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD028",
      "aliases": [
        "no-blanks-blockquote"
      ],
      "tags": [
        "blockquote",
        "blank_lines"
      ],
      "parameters": [],
      "fixable": null,
      "check_pass": [
        {
          "name": "continuous_blockquote",
          "source": "> quote\n> more\n",
          "expected": null
        },
        {
          "name": "gfm_alert_blocks_separated_by_blank_lines",
          "source": "> [!NOTE]\n> Highlights information that users should take into account, even when skimming.\n\n> [!TIP]\n> Optional information to help a user be more successful.\n\n> [!IMPORTANT]\n> Crucial information necessary for users to succeed.\n\n> [!WARNING]\n> Critical content demanding immediate user attention due to potential risks.\n\n> [!CAUTION]\n> Negative potential consequences of an action.\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "blank_line_inside_blockquote",
          "source": "> quote\n\n> more\n",
          "expected": "MD028"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD028\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD028\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: official docs allow either separating adjacent quotes with prose or joining them by adding a blockquote marker"
      ]
    },
    {
      "rule_id": "MD029",
      "aliases": [
        "ol-prefix"
      ],
      "tags": [
        "ol"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "one_or_ordered",
          "values": [
            "one",
            "one_or_ordered",
            "ordered",
            "zero"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "ordered_prefixes_increment",
          "source": "1. one\n2. two\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "ordered_prefix_skips_number",
          "source": "1. one\n3. two\n",
          "expected": "MD029"
        }
      ],
      "fix": [
        {
          "name": "renumber_ordered_list",
          "source": "1. one\n3. two\n",
          "expected": "1. one\n2. two\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD029\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD029\": { \"style\": \"one_or_ordered\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD029\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD029\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD030",
      "aliases": [
        "list-marker-space"
      ],
      "tags": [
        "ol",
        "ul",
        "spaces"
      ],
      "parameters": [
        {
          "key": "ol_multi",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        },
        {
          "key": "ol_single",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        },
        {
          "key": "ul_multi",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        },
        {
          "key": "ul_single",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "single_space_after_list_marker",
          "source": "- item\n1. item\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "extra_space_after_list_marker",
          "source": "-  item\n1.  item\n",
          "expected": "MD030"
        }
      ],
      "fix": [
        {
          "name": "default_extra_marker_spaces",
          "source": "-  item\n1.  item\n",
          "expected": "- item\n1. item\n"
        },
        {
          "name": "configured_unordered_single_spacing",
          "source": "- item\n",
          "expected": "-  item\n",
          "config": {
            "MD030": {
              "ul_single": 2
            }
          }
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD030\": true }",
          "expected": null
        },
        {
          "name": "ol_multi_valid",
          "source": "{ \"MD030\": { \"ol_multi\": 1 } }",
          "expected": null
        },
        {
          "name": "ol_single_valid",
          "source": "{ \"MD030\": { \"ol_single\": 1 } }",
          "expected": null
        },
        {
          "name": "ul_multi_valid",
          "source": "{ \"MD030\": { \"ul_multi\": 1 } }",
          "expected": null
        },
        {
          "name": "ul_single_valid",
          "source": "{ \"MD030\": { \"ul_single\": 1 } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD030\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "ol_multi_invalid_type",
          "source": "{ \"MD030\": { \"ol_multi\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "ol_single_invalid_type",
          "source": "{ \"MD030\": { \"ol_single\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "ul_multi_invalid_type",
          "source": "{ \"MD030\": { \"ul_multi\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "ul_single_invalid_type",
          "source": "{ \"MD030\": { \"ul_single\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "fenced_list_marker_spacing_is_ignored",
          "source": "```\n-  item\n```\n",
          "expected": null
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD031",
      "aliases": [
        "blanks-around-fences"
      ],
      "tags": [
        "code",
        "blank_lines"
      ],
      "parameters": [
        {
          "key": "list_items",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "fence_surrounded_by_blank_lines",
          "source": "Paragraph\n\n```rust\n\n```\n\nNext\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "fence_without_blank_lines",
          "source": "Paragraph\n```rust\ncode\n```\nNext\n",
          "expected": "MD031"
        }
      ],
      "fix": [
        {
          "name": "surround_fenced_code_with_blank_lines",
          "source": "Text\n```\ncode\n```\nNext\n",
          "expected": "Text\n\n```text\ncode\n```\n\nNext\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD031\": true }",
          "expected": null
        },
        {
          "name": "list_items_valid",
          "source": "{ \"MD031\": { \"list_items\": true } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD031\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "list_items_invalid_type",
          "source": "{ \"MD031\": { \"list_items\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD032",
      "aliases": [
        "blanks-around-lists"
      ],
      "tags": [
        "bullet",
        "blank_lines"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "list_has_blank_line_before",
          "source": "Paragraph\n\n- item\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "list_missing_blank_line_before",
          "source": "Paragraph\n- item\n",
          "expected": "MD032"
        }
      ],
      "fix": [
        {
          "name": "insert_blank_line_before_list",
          "source": "Paragraph\n- item\n",
          "expected": "Paragraph\n\n- item\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD032\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD032\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD033",
      "aliases": [
        "no-inline-html"
      ],
      "tags": [
        "html"
      ],
      "parameters": [
        {
          "key": "allowed_elements",
          "value_type": "array",
          "default_value": "[]",
          "values": []
        },
        {
          "key": "table_allowed_elements",
          "value_type": "array",
          "default_value": "[]",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "plain_markdown",
          "source": "Paragraph\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "inline_html",
          "source": "<span>text</span>\n",
          "expected": "MD033"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD033\": true }",
          "expected": null
        },
        {
          "name": "allowed_elements_valid",
          "source": "{ \"MD033\": { \"allowed_elements\": [] } }",
          "expected": null
        },
        {
          "name": "table_allowed_elements_valid",
          "source": "{ \"MD033\": { \"table_allowed_elements\": [] } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD033\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "allowed_elements_invalid_type",
          "source": "{ \"MD033\": { \"allowed_elements\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "table_allowed_elements_invalid_type",
          "source": "{ \"MD033\": { \"table_allowed_elements\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: removing or replacing inline HTML changes rendered output"
      ]
    },
    {
      "rule_id": "MD034",
      "aliases": [
        "no-bare-urls"
      ],
      "tags": [
        "links",
        "url"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "no_url",
          "source": "Paragraph\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "bare_url",
          "source": "https://example.com\n",
          "expected": "MD034"
        }
      ],
      "fix": [
        {
          "name": "wrap_bare_url_with_angle_brackets",
          "source": "See http://example.com now.\n",
          "expected": "See <http://example.com> now.\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD034\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD034\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD035",
      "aliases": [
        "hr-style"
      ],
      "tags": [
        "hr"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "consistent_hr_style",
          "source": "---\n\n---\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "inconsistent_hr_style",
          "source": "---\n\n***\n",
          "expected": "MD035"
        }
      ],
      "fix": [
        {
          "name": "normalize_horizontal_rule_style",
          "source": "---\n\n***\n",
          "expected": "---\n\n---\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD035\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD035\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD035\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD035\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "front_matter_delimiter_does_not_seed_style",
          "source": "---\ntitle: Doc\n---\n\n***\n\n***\n",
          "expected": null
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD036",
      "aliases": [
        "no-emphasis-as-heading"
      ],
      "tags": [
        "emphasis",
        "headings"
      ],
      "parameters": [
        {
          "key": "punctuation",
          "value_type": "string",
          "default_value": ".,;:!?。，；：！？",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "normal_emphasis_in_paragraph",
          "source": "This is **important** text.\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "emphasis_as_heading",
          "source": "**Important**\n\nText\n",
          "expected": "MD036"
        }
      ],
      "fix": [],
      "unsafe_fix": [
        {
          "name": "emphasis_as_heading_to_atx_h1",
          "source": "**Important**\n\nText\n",
          "expected": "# Important\n\nText\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD036\": true }",
          "expected": null
        },
        {
          "name": "punctuation_valid",
          "source": "{ \"MD036\": { \"punctuation\": \".,;:!?\\u3002\\uff0c\\uff1b\\uff1a\\uff01\\uff1f\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD036\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "punctuation_invalid_type",
          "source": "{ \"MD036\": { \"punctuation\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD037",
      "aliases": [
        "no-space-in-emphasis"
      ],
      "tags": [
        "emphasis",
        "whitespace"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "emphasis_without_inner_spaces",
          "source": "This is *text*.\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "emphasis_with_inner_spaces",
          "source": "This is * text *.\n",
          "expected": "MD037"
        }
      ],
      "fix": [
        {
          "name": "trim_space_inside_emphasis",
          "source": "This is * text *.\n",
          "expected": "This is *text*.\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD037\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD037\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD038",
      "aliases": [
        "no-space-in-code"
      ],
      "tags": [
        "code",
        "whitespace"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "code_span_without_inner_spaces",
          "source": "`code`\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "code_span_with_inner_spaces",
          "source": "` code `\n",
          "expected": "MD038"
        }
      ],
      "fix": [
        {
          "name": "trim_space_inside_code_span",
          "source": "` code `\n",
          "expected": "`code`\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD038\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD038\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD039",
      "aliases": [
        "no-space-in-links"
      ],
      "tags": [
        "links",
        "whitespace"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "link_without_inner_spaces",
          "source": "[link](target)\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "link_with_inner_spaces",
          "source": "[ link ](target)\n",
          "expected": "MD039"
        }
      ],
      "fix": [
        {
          "name": "trim_spaces_inside_link_text",
          "source": "[ text ](target)\n",
          "expected": "[text](target)\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD039\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD039\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD040",
      "aliases": [
        "fenced-code-language"
      ],
      "tags": [
        "code",
        "language"
      ],
      "parameters": [
        {
          "key": "allowed_languages",
          "value_type": "array",
          "default_value": "[]",
          "values": []
        },
        {
          "key": "language_only",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "fence_with_language",
          "source": "```rust\ncode\n```\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "fence_without_language",
          "source": "```\ncode\n```\n",
          "expected": "MD040"
        }
      ],
      "fix": [
        {
          "name": "insert_default_fence_language",
          "source": "```\ncode\n```\n",
          "expected": "```text\ncode\n```\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD040\": true }",
          "expected": null
        },
        {
          "name": "allowed_languages_valid",
          "source": "{ \"MD040\": { \"allowed_languages\": [] } }",
          "expected": null
        },
        {
          "name": "language_only_valid",
          "source": "{ \"MD040\": { \"language_only\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD040\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "allowed_languages_invalid_type",
          "source": "{ \"MD040\": { \"allowed_languages\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "language_only_invalid_type",
          "source": "{ \"MD040\": { \"language_only\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD041",
      "aliases": [
        "first-line-heading"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "allow_preamble",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "front_matter_title",
          "value_type": "string",
          "default_value": "^\\s*title\\s*[:=]",
          "values": []
        },
        {
          "key": "level",
          "value_type": "integer",
          "default_value": "1",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "first_line_h1",
          "source": "# Title\n\nText\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "first_line_not_heading",
          "source": "Text\n\n# Title\n",
          "expected": "MD041"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD041\": true }",
          "expected": null
        },
        {
          "name": "allow_preamble_valid",
          "source": "{ \"MD041\": { \"allow_preamble\": false } }",
          "expected": null
        },
        {
          "name": "front_matter_title_valid",
          "source": "{ \"MD041\": { \"front_matter_title\": \"^\\\\s*title\\\\s*[:=]\" } }",
          "expected": null
        },
        {
          "name": "level_valid",
          "source": "{ \"MD041\": { \"level\": 1 } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD041\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "allow_preamble_invalid_type",
          "source": "{ \"MD041\": { \"allow_preamble\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "front_matter_title_invalid_type",
          "source": "{ \"MD041\": { \"front_matter_title\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "level_invalid_type",
          "source": "{ \"MD041\": { \"level\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: first heading text cannot be inferred safely"
      ]
    },
    {
      "rule_id": "MD042",
      "aliases": [
        "no-empty-links"
      ],
      "tags": [
        "links"
      ],
      "parameters": [],
      "fixable": null,
      "check_pass": [
        {
          "name": "non_empty_link",
          "source": "[link](target)\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "empty_link",
          "source": "[link]()\n",
          "expected": "MD042"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD042\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD042\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: empty link or image targets require author-provided destinations"
      ]
    },
    {
      "rule_id": "MD043",
      "aliases": [
        "required-headings"
      ],
      "tags": [
        "headings"
      ],
      "parameters": [
        {
          "key": "headings",
          "value_type": "array",
          "default_value": "[]",
          "values": []
        },
        {
          "key": "match_case",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "default_without_required_headings",
          "source": "No heading here.\n",
          "expected": null
        },
        {
          "name": "configured_required_headings",
          "source": "# Title\n",
          "expected": null,
          "config": {
            "MD043": {
              "headings": [
                "# Title"
              ]
            }
          }
        }
      ],
      "check_fail": [
        {
          "name": "configured_required_heading_mismatch",
          "source": "# Other\n",
          "expected": "MD043",
          "config": {
            "MD043": {
              "headings": [
                "# Title"
              ]
            }
          }
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD043\": true }",
          "expected": null
        },
        {
          "name": "headings_valid",
          "source": "{ \"MD043\": { \"headings\": [] } }",
          "expected": null
        },
        {
          "name": "match_case_valid",
          "source": "{ \"MD043\": { \"match_case\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD043\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "headings_invalid_type",
          "source": "{ \"MD043\": { \"headings\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "match_case_invalid_type",
          "source": "{ \"MD043\": { \"match_case\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "check requires configured MD043.headings; default markdownlint headings is empty",
        "fix requires author intent: required headings require author-provided sections and order"
      ]
    },
    {
      "rule_id": "MD044",
      "aliases": [
        "proper-names"
      ],
      "tags": [
        "spelling"
      ],
      "parameters": [
        {
          "key": "code_blocks",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "html_elements",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "names",
          "value_type": "array",
          "default_value": "[]",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "default_without_names_does_not_guess",
          "source": "markdownlint and github\n",
          "expected": null
        },
        {
          "name": "configured_proper_names_capitalized",
          "source": "Markdownlint and GitHub\n",
          "expected": null,
          "config": {
            "MD044": {
              "names": [
                "Markdownlint",
                "GitHub"
              ]
            }
          }
        }
      ],
      "check_fail": [
        {
          "name": "configured_proper_names_lowercase",
          "source": "markdownlint and github\n",
          "expected": "MD044",
          "config": {
            "MD044": {
              "names": [
                "Markdownlint",
                "GitHub"
              ]
            }
          }
        }
      ],
      "fix": [
        {
          "name": "fix_configured_proper_names",
          "source": "markdownlint and github\n",
          "expected": "Markdownlint and GitHub\n",
          "config": {
            "MD044": {
              "names": [
                "Markdownlint",
                "GitHub"
              ]
            }
          }
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD044\": true }",
          "expected": null
        },
        {
          "name": "code_blocks_valid",
          "source": "{ \"MD044\": { \"code_blocks\": true } }",
          "expected": null
        },
        {
          "name": "html_elements_valid",
          "source": "{ \"MD044\": { \"html_elements\": true } }",
          "expected": null
        },
        {
          "name": "names_valid",
          "source": "{ \"MD044\": { \"names\": [] } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD044\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "code_blocks_invalid_type",
          "source": "{ \"MD044\": { \"code_blocks\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "html_elements_invalid_type",
          "source": "{ \"MD044\": { \"html_elements\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "names_invalid_type",
          "source": "{ \"MD044\": { \"names\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "check requires configured MD044.names; default markdownlint names is empty",
        "fix requires: configured MD044.names to avoid guessing product capitalization"
      ]
    },
    {
      "rule_id": "MD045",
      "aliases": [
        "no-alt-text"
      ],
      "tags": [
        "images",
        "accessibility"
      ],
      "parameters": [],
      "fixable": null,
      "check_pass": [
        {
          "name": "image_with_alt_text",
          "source": "![alt](image.png)\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "image_without_alt_text",
          "source": "![](image.png)\n",
          "expected": "MD045"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD045\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD045\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: alt text requires image-specific author knowledge"
      ]
    },
    {
      "rule_id": "MD046",
      "aliases": [
        "code-block-style"
      ],
      "tags": [
        "code"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "consistent",
            "fenced",
            "indented"
          ]
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "only_fenced_code_block",
          "source": "```rust\ncode\n```\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "mixed_code_block_styles",
          "source": "```rust\ncode\n```\n\n    indented\n",
          "expected": "MD046"
        }
      ],
      "fix": [
        {
          "name": "convert_indented_block_to_fenced",
          "source": "```rust\ncode\n```\n\n    indented\n",
          "expected": "```rust\ncode\n```\n\n```text\nindented\n```\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD046\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD046\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD046\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD046\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD047",
      "aliases": [
        "single-trailing-newline"
      ],
      "tags": [
        "whitespace"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "ends_with_newline",
          "source": "text\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "missing_trailing_newline",
          "source": "text",
          "expected": "MD047"
        }
      ],
      "fix": [
        {
          "name": "append_single_trailing_newline",
          "source": "text",
          "expected": "text\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD047\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD047\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD048",
      "aliases": [
        "code-fence-style"
      ],
      "tags": [
        "code"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "backtick",
            "consistent",
            "tilde"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "consistent_fence_style",
          "source": "```rust\ncode\n```\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "mixed_fence_style",
          "source": "```rust\ncode\n```\n\n~~~text\ncode\n~~~\n",
          "expected": "MD048"
        }
      ],
      "fix": [
        {
          "name": "mixed_fence_style_to_first_style",
          "source": "```rust\ncode\n```\n\n~~~text\ncode\n~~~\n",
          "expected": "```rust\ncode\n```\n\n```text\ncode\n```\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD048\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD048\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD048\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD048\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "target_fence_marker_inside_code_block_remains_diagnostic_only",
          "source": "```rust\ncode\n```\n\n~~~~text\n```inner\ncode\n```\n~~~~\n",
          "expected": "MD048"
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD049",
      "aliases": [
        "emphasis-style"
      ],
      "tags": [
        "emphasis"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "asterisk",
            "consistent",
            "underscore"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "consistent_emphasis_style",
          "source": "*one* and *two*\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "mixed_emphasis_style",
          "source": "*one* and _two_\n",
          "expected": "MD049"
        }
      ],
      "fix": [
        {
          "name": "normalize_emphasis_to_first_style",
          "source": "*one* and _two_\n",
          "expected": "*one* and *two*\n"
        },
        {
          "name": "normalize_emphasis_to_configured_style",
          "source": "*one*\n",
          "expected": "_one_\n",
          "config": {
            "MD049": {
              "style": "underscore"
            }
          }
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD049\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD049\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD049\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD049\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD050",
      "aliases": [
        "strong-style"
      ],
      "tags": [
        "emphasis"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "asterisk",
            "consistent",
            "underscore"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "consistent_strong_style",
          "source": "**one** and **two**\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "mixed_strong_style",
          "source": "**one** and __two__\n",
          "expected": "MD050"
        }
      ],
      "fix": [
        {
          "name": "normalize_strong_to_first_style",
          "source": "**one** and __two__\n",
          "expected": "**one** and **two**\n"
        },
        {
          "name": "normalize_strong_to_configured_style",
          "source": "**one**\n",
          "expected": "__one__\n",
          "config": {
            "MD050": {
              "style": "underscore"
            }
          }
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD050\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD050\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD050\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD050\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD051",
      "aliases": [
        "link-fragments"
      ],
      "tags": [
        "links"
      ],
      "parameters": [
        {
          "key": "ignore_case",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "ignored_pattern",
          "value_type": "string",
          "default_value": "",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "link_without_fragment",
          "source": "[link](target)\n",
          "expected": null
        },
        {
          "name": "custom_heading_anchor",
          "source": "# Heading Name {#custom-name}\n\n[link](#custom-name)\n",
          "expected": null
        },
        {
          "name": "html_id_anchor",
          "source": "<a id=\"bookmark\"></a>\n\n[link](#bookmark)\n",
          "expected": null
        },
        {
          "name": "ignore_case_configured",
          "source": "# Heading Name\n\n[link](#Heading-Name)\n",
          "expected": null,
          "config": {
            "MD051": {
              "ignore_case": true
            }
          }
        },
        {
          "name": "ignored_pattern_configured",
          "source": "[link](#figure-1)\n",
          "expected": null,
          "config": {
            "MD051": {
              "ignored_pattern": "^figure-"
            }
          }
        }
      ],
      "check_fail": [
        {
          "name": "link_fragment",
          "source": "[fragment](#missing)\n",
          "expected": "MD051"
        }
      ],
      "fix": [
        {
          "name": "fix_heading_fragment_case",
          "source": "# Heading Name\n\n[Link](#Heading-Name)\n",
          "expected": "# Heading Name\n\n[Link](#heading-name)\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD051\": true }",
          "expected": null
        },
        {
          "name": "ignore_case_valid",
          "source": "{ \"MD051\": { \"ignore_case\": true } }",
          "expected": null
        },
        {
          "name": "ignored_pattern_valid",
          "source": "{ \"MD051\": { \"ignored_pattern\": \"^figure-\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD051\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "ignore_case_invalid_type",
          "source": "{ \"MD051\": { \"ignore_case\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "ignored_pattern_invalid_type",
          "source": "{ \"MD051\": { \"ignored_pattern\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD052",
      "aliases": [
        "reference-links-images"
      ],
      "tags": [
        "links",
        "images"
      ],
      "parameters": [
        {
          "key": "ignored_labels",
          "value_type": "array",
          "default_value": "[\"x\"]",
          "values": []
        },
        {
          "key": "shortcut_syntax",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        }
      ],
      "fixable": false,
      "check_pass": [
        {
          "name": "inline_link",
          "source": "[link](target)\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "missing_collapsed_reference_label",
          "source": "[ref][]\n",
          "expected": "MD052"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD052\": true }",
          "expected": null
        },
        {
          "name": "ignored_labels_valid",
          "source": "{ \"MD052\": { \"ignored_labels\": [\"x\"] } }",
          "expected": null
        },
        {
          "name": "shortcut_syntax_valid",
          "source": "{ \"MD052\": { \"shortcut_syntax\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD052\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "ignored_labels_invalid_type",
          "source": "{ \"MD052\": { \"ignored_labels\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "shortcut_syntax_invalid_type",
          "source": "{ \"MD052\": { \"shortcut_syntax\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "safe fix is not provided because the missing reference destination cannot be inferred"
      ]
    },
    {
      "rule_id": "MD053",
      "aliases": [
        "link-definitions"
      ],
      "tags": [
        "links"
      ],
      "parameters": [
        {
          "key": "ignored_definitions",
          "value_type": "array",
          "default_value": "[\"//\"]",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "unique_link_definitions",
          "source": "[one]: https://example.com\n[two]: https://example.com\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "duplicate_link_definition",
          "source": "[dup]: https://example.com\n[dup]: https://example.com/2\n",
          "expected": "MD053"
        }
      ],
      "fix": [
        {
          "name": "remove_duplicate_link_definition",
          "source": "[a]: target\n[a]: duplicate\nText\n",
          "expected": "[a]: target\nText\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD053\": true }",
          "expected": null
        },
        {
          "name": "ignored_definitions_valid",
          "source": "{ \"MD053\": { \"ignored_definitions\": [\"//\"] } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD053\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "ignored_definitions_invalid_type",
          "source": "{ \"MD053\": { \"ignored_definitions\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD054",
      "aliases": [
        "link-style"
      ],
      "tags": [
        "links"
      ],
      "parameters": [
        {
          "key": "autolink",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "collapsed",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "full",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "inline",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "shortcut",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        },
        {
          "key": "url_inline",
          "value_type": "boolean",
          "default_value": "true",
          "values": []
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "default_allows_collapsed_reference",
          "source": "[inline](target)\n[ref][]\n[ref]: target\n",
          "expected": null
        },
        {
          "name": "inline_links_only",
          "source": "[link](target)\n",
          "expected": null,
          "config": {
            "MD054": {
              "collapsed": false
            }
          }
        }
      ],
      "check_fail": [
        {
          "name": "collapsed_reference_when_disabled",
          "source": "[inline](target)\n[ref][]\n[ref]: target\n",
          "expected": "MD054",
          "config": {
            "MD054": {
              "collapsed": false
            }
          }
        }
      ],
      "fix": [
        {
          "name": "inline_collapsed_reference_when_disabled",
          "source": "[inline](target)\n[ref][]\n[ref]: target\n",
          "expected": "[inline](target)\n[ref](target)\n[ref]: target\n",
          "config": {
            "MD054": {
              "collapsed": false
            },
            "MD052": false
          }
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD054\": true }",
          "expected": null
        },
        {
          "name": "autolink_valid",
          "source": "{ \"MD054\": { \"autolink\": true } }",
          "expected": null
        },
        {
          "name": "collapsed_valid",
          "source": "{ \"MD054\": { \"collapsed\": true } }",
          "expected": null
        },
        {
          "name": "full_valid",
          "source": "{ \"MD054\": { \"full\": true } }",
          "expected": null
        },
        {
          "name": "inline_valid",
          "source": "{ \"MD054\": { \"inline\": true } }",
          "expected": null
        },
        {
          "name": "shortcut_valid",
          "source": "{ \"MD054\": { \"shortcut\": true } }",
          "expected": null
        },
        {
          "name": "url_inline_valid",
          "source": "{ \"MD054\": { \"url_inline\": true } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD054\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "autolink_invalid_type",
          "source": "{ \"MD054\": { \"autolink\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "collapsed_invalid_type",
          "source": "{ \"MD054\": { \"collapsed\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "full_invalid_type",
          "source": "{ \"MD054\": { \"full\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "inline_invalid_type",
          "source": "{ \"MD054\": { \"inline\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "shortcut_invalid_type",
          "source": "{ \"MD054\": { \"shortcut\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "url_inline_invalid_type",
          "source": "{ \"MD054\": { \"url_inline\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "check requires a disabled link style such as MD054.collapsed=false",
        "fix requires: disabled style and an inline-safe reference definition"
      ]
    },
    {
      "rule_id": "MD055",
      "aliases": [
        "table-pipe-style"
      ],
      "tags": [
        "table"
      ],
      "parameters": [
        {
          "key": "style",
          "value_type": "string",
          "default_value": "consistent",
          "values": [
            "consistent",
            "leading_and_trailing",
            "leading_only",
            "no_leading_or_trailing",
            "trailing_only"
          ]
        }
      ],
      "fixable": true,
      "check_pass": [
        {
          "name": "table_with_leading_and_trailing_pipes",
          "source": "| a | b |\n|---|---|\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "table_missing_boundary_pipe",
          "source": "| a | b |\n|---|---\n  c | d\n",
          "expected": "MD055"
        }
      ],
      "fix": [
        {
          "name": "normalize_table_boundary_pipes",
          "source": "| a | b |\n|---|---\n  c | d\n",
          "expected": "| a | b |\n| --- | --- |\n| c | d |\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD055\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD055\": { \"style\": \"consistent\" } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD055\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD055\": { \"style\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [
        {
          "name": "code_fence_pipe_text_is_ignored",
          "source": "```md\nA | B\n---|---\n```\n",
          "expected": null
        }
      ],
      "manual_required": []
    },
    {
      "rule_id": "MD056",
      "aliases": [
        "table-column-count"
      ],
      "tags": [
        "table"
      ],
      "parameters": [],
      "fixable": null,
      "check_pass": [
        {
          "name": "consistent_table_column_count",
          "source": "| a | b |\n|---|---|\n| 1 | 2 |\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "inconsistent_table_column_count",
          "source": "| a | b |\n|---|---|\n| 1 | 2 | 3 |\n",
          "expected": "MD056"
        }
      ],
      "fix": [
        {
          "name": "pad_short_table_row_with_empty_cells",
          "source": "| a | b |\n|---|---|\n| 1 |\n",
          "expected": "| a | b |\n| --- | --- |\n| 1 |  |\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD056\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD056\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD058",
      "aliases": [
        "blanks-around-tables"
      ],
      "tags": [
        "table"
      ],
      "parameters": [],
      "fixable": true,
      "check_pass": [
        {
          "name": "table_at_document_boundary",
          "source": "| a | b |\n| --- | --- |\n| 1 | 2 |\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "table_without_surrounding_blank_lines",
          "source": "Text\n| a | b |\n| --- | --- |\n| 1 | 2 |\n> Quote\n",
          "expected": "MD058"
        }
      ],
      "fix": [
        {
          "name": "surround_table_with_blank_lines",
          "source": "Text\n| A | B |\n| --- | --- |\n| 1 | 2 |\n> Quote\n",
          "expected": "Text\n\n| A | B |\n| --- | --- |\n| 1 | 2 |\n\n> Quote\n"
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD058\": true }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD058\": \"warn\" }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": []
    },
    {
      "rule_id": "MD059",
      "aliases": [
        "link-text"
      ],
      "tags": [
        "links"
      ],
      "parameters": [
        {
          "key": "prohibited_texts",
          "value_type": "array",
          "default_value": "[\"click here\",\"here\",\"link\",\"more\"]",
          "values": []
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "descriptive_link_text",
          "source": "[Normal link](https://example.com)\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "prohibited_link_text",
          "source": "[click here](https://example.com)\n",
          "expected": "MD059"
        }
      ],
      "fix": [],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD059\": true }",
          "expected": null
        },
        {
          "name": "prohibited_texts_valid",
          "source": "{ \"MD059\": { \"prohibited_texts\": [\"click here\",\"here\",\"link\",\"more\"] } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD059\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "prohibited_texts_invalid_type",
          "source": "{ \"MD059\": { \"prohibited_texts\": null } }",
          "expected": "invalid type"
        }
      ],
      "edge": [],
      "manual_required": [
        "fix requires author intent: descriptive link text requires replacement wording"
      ]
    },
    {
      "rule_id": "MD060",
      "aliases": [
        "table-column-style"
      ],
      "tags": [
        "table"
      ],
      "parameters": [
        {
          "key": "aligned_delimiter",
          "value_type": "boolean",
          "default_value": "false",
          "values": []
        },
        {
          "key": "style",
          "value_type": "string",
          "default_value": "any",
          "values": [
            "aligned",
            "any",
            "compact",
            "tight"
          ]
        }
      ],
      "fixable": null,
      "check_pass": [
        {
          "name": "aligned_table",
          "source": "| A | B |\n|---|---|\n| C | D |\n",
          "expected": null
        },
        {
          "name": "compact_table",
          "source": "| A | B |\n| --- | --- |\n| C | D |\n",
          "expected": null
        },
        {
          "name": "tight_table",
          "source": "|A|B|\n|---|---|\n|C|D|\n",
          "expected": null
        }
      ],
      "check_fail": [
        {
          "name": "mixed_table_style",
          "source": "|A| B |\n|---|---|\n| C | D |\n",
          "expected": "MD060"
        }
      ],
      "fix": [
        {
          "name": "tight_to_compact",
          "source": "|A|B|\n|---|---|\n|C|D|\n",
          "expected": "| A | B |\n| --- | --- |\n| C | D |\n",
          "config": {
            "MD060": {
              "style": "compact"
            }
          }
        },
        {
          "name": "compact_to_tight",
          "source": "| A | B |\n| --- | --- |\n| C | D |\n",
          "expected": "|A|B|\n|---|---|\n|C|D|\n",
          "config": {
            "MD060": {
              "style": "tight"
            }
          }
        },
        {
          "name": "compact_to_aligned",
          "source": "| A | B |\n| --- | --- |\n| C | D |\n",
          "expected": "| A   | B   |\n| --- | --- |\n| C   | D   |\n",
          "config": {
            "MD060": {
              "style": "aligned"
            }
          }
        }
      ],
      "config_valid": [
        {
          "name": "rule_enabled_valid",
          "source": "{ \"MD060\": true }",
          "expected": null
        },
        {
          "name": "style_valid",
          "source": "{ \"MD060\": { \"style\": \"any\" } }",
          "expected": null
        },
        {
          "name": "aligned_delimiter_valid",
          "source": "{ \"MD060\": { \"aligned_delimiter\": false } }",
          "expected": null
        }
      ],
      "config_invalid": [
        {
          "name": "rule_config_invalid_type",
          "source": "{ \"MD060\": \"warn\" }",
          "expected": "invalid type"
        },
        {
          "name": "style_invalid_type",
          "source": "{ \"MD060\": { \"style\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "aligned_delimiter_invalid_type",
          "source": "{ \"MD060\": { \"aligned_delimiter\": null } }",
          "expected": "invalid type"
        },
        {
          "name": "unknown_property_invalid",
          "source": "{ \"MD060\": { \"unknown\": true } }",
          "expected": "unknown property"
        },
        {
          "name": "style_invalid_enum",
          "source": "{ \"MD060\": { \"style\": \"invalid\" } }",
          "expected": "invalid enum"
        }
      ],
      "edge": [
        {
          "name": "compact_table_is_accepted",
          "source": "| A | B |\n| --- | --- |\n| C | D |\n",
          "expected": null
        },
        {
          "name": "mixed_table_style_has_safe_fix",
          "source": "|A| B |\n|---|---|\n| C | D |\n",
          "expected": "MD060"
        },
        {
          "name": "escaped_pipe_is_not_a_table",
          "source": "| A \\| B | C |\n|---|---|\n",
          "expected": null
        }
      ],
      "manual_required": []
    }
  ]
}
