# SPDX-FileCopyrightText: 2026 PythonWoods <dev@pythonwoods.dev>
# SPDX-License-Identifier: Apache-2.0
#
# Zenzic Deterministic Routing Kernel v13 (SEO-Safe)
# Strategy: Exact 1:1 semantic mapping. No nuclear sinks.
# Dead paths return 404. Soft-404s are rejected by design.

# ─── LAYER 1: CANONICAL HYGIENE ──────────────────────────────────────────────
/docs           /  301
/docs/          /  301
/it             /  301
/it/            /  301

# ─── LAYER 2: ADR FINITE GRAPH (Mappatura Esatta 1:1 - NO WILDCARDS) ─────────
# Rimuove ogni ambiguità. Nessun rewrite parziale.
/developers/explanation/adr-vault/adr-lint-source         /developers/explanation/adr-vault/records/adr-lint-source/ 301
/developers/explanation/adr-vault/adr-discovery           /developers/explanation/adr-vault/records/adr-discovery/ 301
/developers/explanation/adr-vault/adr-020                 /developers/explanation/adr-vault/records/adr-020-mirror-law/ 301
/developers/explanation/adr-vault/adr-021                 /developers/explanation/adr-vault/records/adr-021-parallel-audit/ 301
/developers/explanation/adr-vault/adr-regex-acl           /developers/explanation/adr-vault/records/adr-regex-acl/ 301
/developers/explanation/adr-vault/adr-path-sovereignty     /developers/explanation/adr-vault/records/adr-path-sovereignty/ 301
/developers/explanation/adr-vault/adr-agnostic-universalism /developers/explanation/adr-vault/records/adr-agnostic-universalism/ 301
/developers/explanation/adr-vault/adr-native-telemetry     /developers/explanation/adr-vault/records/adr-native-telemetry/ 301
/developers/explanation/adr-vault/adr-unified-perimeter    /developers/explanation/adr-vault/records/adr-unified-perimeter/ 301
/developers/explanation/adr-vault/adr-002-zero-subprocesses /developers/explanation/adr-vault/records/adr-002-zero-subprocesses/ 301
/developers/explanation/adr-vault/adr-007-sovereign-sandbox /developers/explanation/adr-vault/records/adr-007-sovereign-sandbox/ 301
/developers/explanation/adr-vault/adr-075-radical-unawareness /developers/explanation/adr-vault/records/adr-075-radical-unawareness/ 301

# Short Path Overrides (Legacy Discovery Fix)
/developers/explanation/adr-discovery                    /developers/explanation/adr-vault/records/adr-discovery/ 301
/developers/explanation/adr-parallel-early-termination   /developers/explanation/adr-vault/records/adr-021-parallel-audit/ 301
/developers/explanation/adr-bilingual-structural         /developers/explanation/adr-vault/records/adr-bilingual-structural/ 301
/developers/explanation/adr-sovereign-sandbox            /developers/explanation/adr-vault/records/adr-007-sovereign-sandbox/ 301
/developers/explanation/adr-zero-subprocesses            /developers/explanation/adr-vault/records/adr-002-zero-subprocesses/ 301
/developers/how-to/adapter-examples/                     /developers/how-to/implement-adapter/ 301
/developers/how-to/adapter-examples                      /developers/how-to/implement-adapter/ 301
/explanation/scoring-design                              /explanation/scoring-system/ 301
/explanation/scoring-design/                             /explanation/scoring-system/ 301
/vscode                                                  /editor/vscode/ 301
/vscode/                                                 /editor/vscode/ 301
/action                                                  /reference/zenzic-action/ 301
/action/                                                 /reference/zenzic-action/ 301
/github-action                                          /reference/zenzic-action/ 301
/github-action/                                         /reference/zenzic-action/ 301

# ─── LAYER 3: BLOG CANONICAL SLUGS ───────────────────────────────────────────
/blog/welcome                                 /blog/2026/04/28/welcome-to-the-zenzic-blog/ 301
/blog/welcome/                                /blog/2026/04/28/welcome-to-the-zenzic-blog/ 301
/blog/zenzic-v0160-engineering-determinism-into-documentation-pipelines /blog/2026/06/27/zenzic-v0160-engineering-determinism-into-documentation-pipelines/ 301
/blog/obsidian-masterclass/                   /blog/2026/05/24/engineering-v080-deep-dive/ 301
/blog/obsidian-masterclass                    /blog/2026/05/24/engineering-v080-deep-dive/ 301
/blog/2026/07/18/2026-07-18-zenzic-vs-code-extension/ /blog/2026/07/18/zenzic-vs-code-extension/ 301
/blog/rss.xsl                                 /rss.xsl 301
/blog/atom.xsl                                /rss.xsl 301

# ─── LAYER 4: STRUCTURAL MIRRORS (Known Folders) ─────────────────────────────
/it/docs/how-to/examples/*                     /tutorials/examples/:splat 301
/it/docs/tutorials/examples/*                  /tutorials/examples/:splat 301
/docs/how-to/*                                 /how-to/:splat 301
/docs/reference/*                              /reference/:splat 301
/docs/explanation/*                            /explanation/:splat 301
/docs/tutorials/*                              /tutorials/:splat 301
/docs/developers/*                             /developers/:splat 301

# ─── LAYER 5: SEO-SAFE SINKS ──────────────────────────────────────────────────
# Explicit-only. No nuclear sinks. Dead paths return 404 by design (ADR-018).
# /it/adr-vault/* expanded to exact 1:1 semantic mapping (no subtree compression)
/it/developers/explanation/adr-vault/records/adr-lint-source/         /developers/explanation/adr-vault/records/adr-lint-source/ 301
/it/developers/explanation/adr-vault/records/adr-discovery/           /developers/explanation/adr-vault/records/adr-discovery/ 301
/it/developers/explanation/adr-vault/records/adr-020-mirror-law/      /developers/explanation/adr-vault/records/adr-020-mirror-law/ 301
/it/developers/explanation/adr-vault/records/adr-021-parallel-audit/  /developers/explanation/adr-vault/records/adr-021-parallel-audit/ 301
/it/developers/explanation/adr-vault/records/adr-regex-acl/           /developers/explanation/adr-vault/records/adr-regex-acl/ 301
/it/developers/explanation/adr-vault/records/adr-path-sovereignty/    /developers/explanation/adr-vault/records/adr-path-sovereignty/ 301
/it/developers/explanation/adr-vault/records/adr-agnostic-universalism/ /developers/explanation/adr-vault/records/adr-agnostic-universalism/ 301
/it/developers/explanation/adr-vault/records/adr-native-telemetry/    /developers/explanation/adr-vault/records/adr-native-telemetry/ 301
/it/developers/explanation/adr-vault/records/adr-unified-perimeter/   /developers/explanation/adr-vault/records/adr-unified-perimeter/ 301
/it/developers/explanation/adr-vault/records/adr-002-zero-subprocesses/ /developers/explanation/adr-vault/records/adr-002-zero-subprocesses/ 301
/it/developers/explanation/adr-vault/records/adr-007-sovereign-sandbox/ /developers/explanation/adr-vault/records/adr-007-sovereign-sandbox/ 301
/it/developers/explanation/adr-vault/records/adr-075-radical-unawareness/ /developers/explanation/adr-vault/records/adr-075-radical-unawareness/ 301
/it/developers/explanation/adr-vault/records/adr-022-english-only-governance/ /developers/explanation/adr-vault/records/adr-022-english-only-governance/ 301
/it/developers/explanation/adr-vault/records/adr-bilingual-structural/ /developers/explanation/adr-vault/records/adr-bilingual-structural/ 301
/it/developers/explanation/adr-vault/records/adr-decentralized-cli/   /developers/explanation/adr-vault/records/adr-decentralized-cli/ 301

# ─── LAYER 6: TAXONOMIC REFACTORING (v0.29.0) ──────────────────────────────────
# Deprecated rule Z118 -> Z620 server-side 301 redirects for Cloudflare Pages
/rules/Z118/                                   /rules/Z620/ 301
/rules/Z118                                    /rules/Z620/ 301
/tutorials/examples/z1xx-links/z118-stale-global-suppression/ /tutorials/examples/z6xx-brand/z620-stale-global-suppression/ 301
/tutorials/examples/z1xx-links/z118-stale-global-suppression /tutorials/examples/z6xx-brand/z620-stale-global-suppression/ 301

# Subpath fallback aliases for /docs/ base URLs
/docs/rules/Z118/                              /rules/Z620/ 301
/docs/tutorials/examples/z1xx-links/z118-stale-global-suppression/ /tutorials/examples/z6xx-brand/z620-stale-global-suppression/ 301
