- writeSqlMigration now classifies furni via classifyFurni and generates correct category sub-pages (imp_<catKey>) instead of hardcoded imp_other - writeSqlMigration generates idempotent INSERT...SELECT WHERE NOT EXISTS for parent and category catalog_pages, with correct numeric page_id - writeBadgeToExternalTexts creates ExternalTexts.json (and parent dirs) when missing instead of failing with ENOENT