fix(indexer): match Python markdown chunk grouping
Native markdown chunking projected about 170,580 excess chunks on the 71,208-file real corpus: 1,377,411 native chunks versus 1,206,831 Python chunks. Add the generated markdown oracle fixture, the isolated differential corpus, and the native implementation changes in one commit because the green-expecting integration test would fail if committed before the behavior fix.
Port the Python structural rules into the native chunker: intro-paragraph consumption before lists and tables; definition-list grouping when at least two items match and matches are at least 50%; one chunk per top-level list item with nested and multi-block item content concatenated in document order; table row splitting with headers carried into every body-row chunk and no header-only chunk; single-chunk blockquotes; heading-only and thematic-break-only inputs producing no chunks; removal of the whole-input fallback; code-fence info strings retained; and pulldown-cmark Options::ENABLE_TABLES.
Replace raw production chunk_markdown access with one bounded format_markdown entry point at both markdown producers. That entry point performs the 2048-char markdown line sanitization, carries warnings through ProducedChunks and ScanReport, and applies the 4096-char header-stub cap.
Capture red-then-green evidence with the unchanged Jaccard >= 0.90 and mutual-top-3 gate. Before the fix, markdown_parity_single_term, markdown_parity_and, and markdown_parity_phrase were each 0.667 Jaccard and markdown_parity_prefix_code_info was 0.0; the run classified unexpected-differs with failed_components ["fulltext"], reproduced on fe07e0f58. After the fix, all five parity cases are 1.0, classification is functionally-equal, and failed_components is empty.
Delete the tautological markdown_producer_wraps_chunker_without_content_changes test and replace it with oracle-driven producer tests plus Rust oracle token assertions against the generated fixture.
Document the single accepted divergence: oversized-chunk stub size tokens are normalized in the fixture because exact parity would require byte-identical rendering, which is explicitly out of scope.