Guidedog Manual 0.2.0
Idioma
En esta página
Guidedog / Documentación 0.2.0

Invariantes antes que algoritmos

Un invariante útil dice qué se mantiene durante el algoritmo y qué puede asumir el llamador al terminar. Escríbelo antes del bucle.

Intervalos de subárbol en preorden

Supongamos una emisión en preorden: cada nodo precede a sus hijos y cada subárbol es contiguo. Sea \(e_i\) el primer índice posterior al nodo \(i\) y todos sus descendientes.

(3)\[\operatorname{subtree}(i) = [i,e_i), \qquad i < e_i \le N.\]

Afirmación. El recorrido puede saltar el subárbol avanzando hasta \(e_i\).

Demostración. La contigüidad sitúa todos los descendientes antes de \(e_i\). La definición de extremo excluido sitúa los nodos posteriores en \(e_i\) o después. Avanzar allí salta exactamente el subárbol. El validador comprueba estas premisas antes de que el renderizador las use.

El nodo cero contiene un título y un párrafo; el párrafo contiene un nodo de texto.
Fig. 5 El intervalo del padre contiene los intervalos de sus hijos.

Un recorrido completo visita cada nodo una vez: cuesta \(O(N)\). Saltar un subárbol requiere actualizar un índice. Procesar su contenido sigue teniendo su coste. Un salto constante no implica renderización constante.

Medir antes de emitir

El renderizador mide primero el número de bytes \(m\). Sea \(c\) la capacidad de salida del llamador.

\[m \le c \quad \Longrightarrow \quad \text{puede comenzar la emisión}.\]

Los recorridos de medición y emisión usan las mismas reglas. Una emisión correcta escribe exactamente \(m\) bytes. Un fallo no devuelve un artefacto parcial válido. El anfitrión controla la publicación; los bytes incompletos no pueden sustituir la salida anterior.

Validez de la caché

La clave de caché debe cubrir todos los datos capaces de cambiar el resultado. No bastan las fuentes: inclusiones, plantillas, configuración, referencias, recursos y versiones de adaptadores influyen. Solo se reutiliza si las dependencias registradas siguen coincidiendo. Si falta la salida, no se reutiliza aunque la clave coincida.

Las pruebas instalan asignadores que fallan en el límite del núcleo y comparan el contenido emitido. También auditan importaciones. Contar asignaciones sin comprobar el resultado podría ocultar contenido descartado silenciosamente tras un rechazo.