#!/usr/bin/env python3 """URL 1:1 断言(Phase 2 T5):Halo slugs == 新站文件 slugs。 新站文章路由 = /archives/{文件名去 .md}/,与 Halo permalink 同构; 集合差集非空即失败(多一篇少一篇都不行)。 """ import json import sys from pathlib import Path old = {p["spec"]["slug"] for p in json.load(open(".migration/posts.json", encoding="utf-8"))} new = {f.stem for f in Path("content/posts").glob("*.md")} missing = old - new # 旧有新无 → 404 风险 extra = new - old # 新有旧无 → 无害但记录 print(f"halo slugs={len(old)} new slugs={len(new)}") for s in sorted(missing): print(f" MISSING: {s}") for s in sorted(extra): print(f" extra : {s}") sys.exit(1 if missing else 0)