Firmada por el autor (bolsa de 12, 2026-08-27). La asimetría con data[] —que
siempre admitió la entrada sin fuente— hacía INEXPRESABLE la cura del lote L5
(un attr cuya aritmética el morfo no puede computar: depth+1, colIndex+1);
un constructor lo midió con tsc y paró. Ahora el contrato puede decir «este
attr existe, el provider posee su valor», que es la forma que data[] practica.
- types.ts: `value?`, con la doctrina en el JSDoc.
- compile.ts: guard `if (!entry.value) continue` en ambos cubos, réplica
LITERAL del de data[] (:452): sin plan y sin deps, pero la entrada consta.
- schema.ts: `value` opcional + invariante nuevo — `ariaBoolean` sin value
LANZA (pedir stringificación booleana de un valor inexistente es
declaración incoherente).
- resolver.ts: consecuencia OBLIGADA que el lote destapó — `resolvePartAttrs`
escribía `undefined` en la bolsa para una entrada sin fuente, y `dom.apply`
lee undefined como BORRA: habría pisado el valor del provider (la ley de
wave por la otra puerta). Ahora salta, simétrico a data.
- morfo-check: el pase ARIA ya distinguía «declarado sin fuente» de «no
declarado» por construcción (declaredAria mapea por attr); queda la ley
escrita y la mitad «required sin condición» SIGUE exigiéndose: que el
provider posea el valor es la promesa de que emite uno.
PROVENIENCIA CORREGIDA en los 3 sitios (JSDoc de schema, JSDoc del flag y el
MENSAJE QUE SE LANZA): citaban la regresión f48acab37 como la clase que el
invariante cierra y NO la cierra — aquella entrada TENÍA value (stateRef, sin
flag), así que retorna antes; la mentira entró por la REGISTRACIÓN, que un
esquema no puede ver porque no ve al provider. Esa clase la cierran la
doctrina de composición y el censo de fuentes. Medido: las 114 apariciones
del flag llevan todas value ⇒ hoy el invariante no muerde ninguna. Higiene
contra una forma, con su proveniencia honesta. (Hallazgo del peer vicen-e1,
verificado por mí con git show.)
Corpus medido: 168 morfos / 994 entradas / 0 sin value hoy — la puerta se
abre vacía a propósito. morfo 270/270 · server 1850 · client soma 643 ·
check 71 (techo).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>