# SYNOMAP DIGEST V2 — Bloc E (Mapping/Catégories) [CONTEXT] Bloc E = barrière d’entrée avant ABC. Cible : K/E/F (mapping format, ambigu, catégorie inconnue). Soft-block : ABC interdit si E/F/K. [STATES] K: mapping_invalid_format E: mapping_ambiguous F: unknown_category [PRIORITY] K > E > F (P1) [TAGS] K/E -> SYNO_ERR_MAP F -> SYNO_ERR_CAT Auto-clear tags when E/F/K resolved. [ALGO] for each torrent: lines = mapping_entries[torrent] # Format / chemins valid = filter_structurally_valid(lines) if len(valid) == 0: tag(SYNO_ERR_MAP); state=K; log_verbose(); continue # Ambiguïté if len(valid) > 1: tag(SYNO_ERR_MAP); state=E; log_verbose(); continue # Catégorie cat = get_category(valid[0], qb_category) if cat not in allowed_categories: tag(SYNO_ERR_CAT); state=F; log_verbose(); continue # OK → ABC clear_error_tags() classify_ABC() [OUTPUT] E-digest ready for AI reboot.