Fase 1 del plan de corrección, y materialización de D-AG.12a firmada ayer:
`docs/spec/delegation-contract.md`, versionada por fecha (2026-07-28).
QUÉ ES
50 requisitos `AG-1…50` en RFC-2119, con escalera de estabilidad por sección
(stable | provisional | reserved), identificadores estables que NUNCA se
renumeran ni se reciclan (un requisito retirado conserva su número), y la
exigencia de que ambos vehículos de conformance CITEN el identificador que
incumplen — «una suite que no nombra lo que falla no acredita a nadie».
La doctrina pasa a ser el PORQUÉ y lo declara explícitamente: si doctrina y
spec discrepan sobre un requisito, manda la spec y la doctrina se corrige.
Annex A lleva las dos reclamaciones de frontera con estado `claimed` (ninguna
materializada) y su gate de promoción: ≥2 FORMAS DE DOMINIO con manifiesto
conforme — y dice por qué dos participantes de texto no valen: un formato
probado solo sobre texto secuencial asume texto secuencial en silencio.
Annex B mapea el modelo de amenazas a requisitos concretos en vez de dejarlo
como prosa. §0.6 declara la posición honesta (actos secuenciales, cliente-
first, generalidad en prueba).
LO QUE LA ESCRITURA SACÓ A LA LUZ — y no estaba en ninguna lista
- **AG-35 (presencia)**: el invariante correcto NO es «Aura montada» sino
«alguna superficie está expresando el ciclo». El playground de agnt ya
expresa el ciclo SIN Aura, y exigir el componente lo rechazaría siendo
correcto. Además resuelve el problema técnico: el motor es un arte sin DOM
y no puede saber qué hay montado, pero sí puede contar adjuntos.
- **AG-41 (elicitación)**: especificado y NO cumplido, con el porqué
estructural — la escalada lleva razón tipada pero no la pregunta, y la
resolución es binaria y no lleva respuesta. No era falta de superficie.
- **AG-44**: «ningún estado se distingue solo por el color» sube de decisión
de componente a requisito del contrato (ya lo fija `shapes.test.ts`).
§D — DECISIONES ABIERTAS, VISIBLES
Un DRAFT puede llevarlas; al promocionar, §D debe quedar VACÍA. Son dos y
ninguna la firmo yo: `SHOULD` vs `MUST` en AG-35 (con recomendación razonada:
SHOULD + política que lo eleve a MUST, porque rehusar por defecto rompería
los 30 tests del motor y le quitaría al app el derecho a elegir su superficie)
y la forma del canal de elicitación en AG-41.
Registrada en el índice del corpus. `docs/README.md` lo edita otra sesión en
paralelo: stageada SOLO mi fila (backup → HEAD → mi cambio → add → restaurar
su versión + mi cambio), verificado que lo suyo queda sin stagear.
Verificado: docs:check 542 docs, sin errores nuevos (el único es el ajeno
preexistente de callout).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>