# Material blog compatibility fixtures These fixtures define the user-visible compatibility target for the native Zensical blog implementation. They are built with the pinned Material checkout and reduced to semantic JSON manifests by `scripts/blog_compatibility.py`. Run the compatibility check from the repository root: ```console uv run python scripts/blog_compatibility.py \ --mkdocs ../mkdocs-material/community/venv/bin/mkdocs \ --zensical .venv/bin/zensical ``` Pass `--update` only after reviewing an intentional Material baseline change. The harness compares routes, titles, navigation, page relations, ordered view memberships, pagination, links, and normalized excerpt fragments. It does not compare complete generated documents or theme assets. The Zensical build uses the built-in UI distribution, so this also validates the native blog templates. The fixtures are divided by compatibility concern: - `vertical-slice` defines the executable contract for phases 1 through 5. - `mutations` records ordered clean-build snapshots for route, content, ordering, draft, deletion, and pagination changes. - `grouped-views` covers archive, category, and author membership. - `standalone` records a blog omitted from configured navigation. - `multiple-instances` proves instance isolation. - `collisions` records Material's unsafe last-writer behavior as an upstream quirk. Zensical is expected to diagnose the collision instead of reproducing it. Additional focused fixtures are added before implementing deferred compatibility areas such as advanced date formatting and custom templates.