Pascal Editor
Reparación de grafos Pascal: paredes útiles, enlaces obsoletos y padre único
Lee y ejecuta la función pura de reparación y distingue reparación conservadora, validación completa, migración y renderizado.
Qué aprenderás
- Tres pasadas con decisiones diferentes
- Repara un enlace inequívoco, no inventes propietario
- Conecta reparación y validación sin confundirlas
Antes de empezar
- Conceptos básicos de grafos, JavaScript y HTTP
- Una escena propia pequeña con dimensiones y relaciones esperadas
Explica el límite y reproduce la lista o el ejercicio acotado del capítulo.
Conclusiones clave
- Una pared de longitud cero con hijos se conserva.
- La evidencia única repara; la ambigüedad no.
- La reparación pura es una capa de aceptación de importación.
Tres pasadas con decisiones diferentes
healSceneNodes repara una copia del mapa de nodos. Primero elimina solamente paredes sin hijos cuya distancia entre extremos es como máximo 1e-6. Conserva una pared degenerada que aloja puerta o ventana porque eliminarla perdería una relación significativa. La decisión precede a limpiar hijos, por lo que no debe describirse como optimizador geométrico iterativo.
La segunda pasada retira referencias no textuales, referencias a paredes eliminadas, IDs duplicados y enlaces cuyo hijo pertenece explícitamente a otro padre. Los sitios antiguos pueden contener objetos hijos incrustados: se conservan para migración posterior, sin aplanarlos ni borrarlos aquí. Cada corrupción requiere una política de conservación diferente.
Repara un enlace inequívoco, no inventes propietario
La tercera pasada reúne reclamaciones de padres para cada hijo superviviente. Completa parentId nulo solo cuando lo reclama exactamente un padre distinto del propio nodo. Dos candidatos quedan sin resolver. Es inferencia conservadora basada en estructura, no prueba global de validez, ausencia de ciclos o idoneidad para cualquier operación de construcción.
La función devuelve contadores e IDs reparados junto al mapa. Los nodos intactos conservan identidad de referencia y los modificados reciben copias. Verificamos entrada JSON sin cambios, eliminación de una pared vacía, recuentos de referencias inválidas y obsoletas, reparación de un padre único y conservación de una relación ambigua.
Conecta reparación y validación sin confundirlas
validateBuildJson consume nodos reparados, separa errores y advertencias y valida esquemas conocidos o de plugins registrados. Los tipos de plugins desconocidos pueden permanecer con advertencias en lugar de hacer fallar el esquema estático de hijos del padre. Los materiales se normalizan individualmente y los inválidos se omiten con aviso. Una comprobación estructural no demuestra cumplimiento constructivo ni revisión visual.
El sondeo ejecuta TypeScript sin dependencias mediante borrado de tipos de Node después de verificar hashes. No ejecuta el validador completo, migraciones del almacén ni GPU. El JavaScript siguiente ilustra únicamente la regla de padre único; ese alcance limitado permite reproducir ambigüedad y autorreferencia sin instalar Pascal.
Pasos de implementación
- 1
Lee las tres pasadas del código fijado.
- 2
Prueba paredes vacías y paredes con abertura por separado.
- 3
Compara padre único, ambiguo y autorreferente.
- 4
Revisa advertencias e imagen después de reparar estructura.
Ejemplo para copiar
// Modelo independiente de una regla, no del reparador completo.
function inferredParent(nodeId, claims) {
return claims.length === 1 && claims[0] !== nodeId ? claims[0] : null;
}
console.log([inferredParent("wall", ["level"]), inferredParent("wall", ["a", "b"]), inferredParent("wall", ["wall"])]);Preguntas frecuentes
¿La reparación borra toda pared de longitud cero?
No. La primera pasada conserva paredes que todavía tienen hijos, como una abertura alojada.
¿Un grafo reparado demuestra un edificio seguro?
No. Reparación estructural, esquemas, imagen y revisión profesional son actividades diferentes.
Fuentes
- README.mdFuente verificada 2026-09-08
- LICENSEFuente verificada 2026-09-08
- packages/cli/package.jsonFuente verificada 2026-09-08
- packages/core/package.jsonFuente verificada 2026-09-08
- packages/viewer/README.mdFuente verificada 2026-09-08
- packages/cli/src/runtime.tsFuente verificada 2026-09-08
- packages/cli/src/editor-process.tsFuente verificada 2026-09-08
- packages/cli/src/mcp-connector.tsFuente verificada 2026-09-08
- packages/mcp/src/transports/http.tsFuente verificada 2026-09-08
- packages/mcp/src/storage/sqlite-scene-store.tsFuente verificada 2026-09-08
- packages/core/src/store/use-scene.tsFuente verificada 2026-09-08
- packages/viewer/src/components/renderers/node-renderer.tsxFuente verificada 2026-09-08
- packages/viewer/src/lib/renderer-capability.tsFuente verificada 2026-09-08
- packages/core/src/validation/validate-build-json.tsFuente verificada 2026-09-08
- packages/core/src/utils/heal-scene-graph.tsFuente verificada 2026-09-08
- packages/mcp/src/storage/slug.tsFuente verificada 2026-09-08