Détection de hubs mal classés

R_toilet_hub — WC hub → Corridor+

Condition : room_type == toilet, conf < 1.0, connected_rooms ≥ 2

→ corridor (conf 0.75)

Logique : un vrai WC est un nœud feuille (degré ≤ 1). S'il a 2+ portes vers des pièces différentes, c'est un espace de circulation/couloir.

Version : v9.0 · Contribution : +6.4 pts sur P3

R_storage_hub — Placard multi-portes → Corridor+

Condition : room_type == storage, conf < 1.0, portes ≥ 4

→ corridor (conf 0.70)

Logique : un placard a 1 porte d'accès. Un petit espace avec ≥ 4 portes dessert plusieurs pièces et constitue un corridor.

Version : v9.0

Empreintes topologiques locales

Comparaison du voisinage immédiat (profondeur 2) via hachage Weisfeiler-Lehman.

R_wl_local_bed_liv — Discrimination bedroom ↔ living_room+

Condition : room_type ∈ {bedroom, living_room}, conf < 1.0, signature WL locale discriminante

→ swap vers le type conforme au profil topologique (conf 0.78)

Principe : le voisinage local d'une chambre (voisins SDB, couloir) se distingue nettement de celui d'un séjour (cuisine, entrée, extérieur).

Version : v9.0 · Axe C exp010

Reclassements contextuels

R_storage_to_toilet — Placard fenêtré → WC+

Condition : storage ≤ 3.5 m² avec fenêtre ≥ 1, dans un appartement sans aucun WC comptant ≥ 3 pièces

→ toilet (conf 0.65)

Logique : chaque logement a au moins un WC. Une petite pièce d'eau avec fenêtre classée par erreur en rangement est promue WC.

Version : v9.0

R_corridor_high_diversity — Corridor haute diversité → Entrée+

Condition : corridor sans fenêtre, area < 15 m², connectant ≥ 5 types de pièces distincts

→ entrance_hall (conf 0.78)

Logique : une pièce de distribution centrale connectant au moins 5 fonctions distinctes est le vestibule / hall d'accueil principal.

Version : v9.0 · Agent E

Règles de sécurité et extérieurs

R_corridor_deadend — Corridor cul-de-sac+

Condition : corridor, conf < 1.0, total_conn < 2 (nœud terminal)

→ reclassé selon taille : bedroom (≥ 8.5 m² avec fenêtre), storage (≤ 3.5 m²), ou entrance_hall (conf 0.55)

Logique : un couloir avec moins de 2 connexions ne remplit pas sa fonction circulatoire.

Version : v9.0

R_ext — Filet de sécurité extérieurs+

Condition : side == "ext", type non encore classé parmi {balcony, terrace, garden}

→ balcony (< 2 m de profondeur), garden (RDC, area ≥ 15 m²), ou terrace (conf 0.70)

Logique : garantit que 100% des pièces étiquetées extérieures reçoivent une typologie extérieure valide.

Version : v9.0

R_ext_implicit — Jardin implicite non marqué+

Condition : side ≠ "int", 0 portes / connexions, niveau RDC (N00), area ≥ 15 m², sep_ratio ≥ 0.50

→ garden (conf 0.65)

Logique : grand espace extérieur privatif de rez-de-jardin délimité par séparateurs sans ouverture porte.

Version : v9.0