El barrido exhaustivo del eje de opts encontro rutas fantasma, simbolos
inexistentes y props inventadas que docs:check no podia ver: sus 7 invariantes
no miraban dentro de los bloques de codigo, y su corpus no caminaba
src/arts, src/libs, src/svrs ni la raiz (567 de 673 .md). Tres invariantes
nuevos, escritos en la gramatica del propio guard:
- I8 imports: cabezas `$`/`@/` de los bloques ts/js/svelte contra la tabla de
alias EXTRAIDA de vite.config.ts (nunca copiada) + resolucion en disco.
`$lib` esta retirado: error en docs del framework (docs/**, src/uix/**),
tolerado en ejemplos de app consumidora. Builtins de SvelteKit en whitelist;
placeholders `{name}` y anti-ejemplos marcados, exentos.
- I9 simbolos: todo `XxxProvider`/`XxxOpts` en bloque de codigo debe existir
en el indice de simbolos de src. Exentos: placeholders, menciones negadas
("not TerraDialogProvider"), imports externos declarados por el propio
bloque (LoggerProvider de @opentelemetry) y el pragma `docs-check-allow:`.
- I10 tablas de props: cada prop documentada en un README de componente debe
declararse en su dir O en sus imports a un salto (convencion types.ts) —
el salto existe porque el rest-forwarding de eidos expone props que nunca
declara (los 4 falsos positivos del extractor lo demostraron).
Corpus 567 -> 614: entran las capas arts/libs/svrs/packs y la raiz;
crónica case-insensitive (continuar-*.md); docs aspiracionales
(RFC/IMPROVEMENTS/...) exentos de los invariantes nuevos.
Triage del fallout inicial (11): los 11 eran defectos del guard, no de los
docs — ethereal compara con @floating-ui por oficio (exento de I3),
`{Name}TriggerProvider` es placeholder pegado, LoggerProvider viene de un
paquete externo que el bloque importa. Verificado en ROJO (5 plantas, 5
disparos con linea exacta) y en verde (0/614).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>