R4b and the text rule keep invisible sequences out of paths, comments
and the declared author, after the warning of Unicode 18.0.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ -249,6 +249,7 @@ Las claves 2 y 3 de `security` son cadenas de bytes con su propio CBOR dentro: e
- **Comentario:** prohibidos U+0000–0008, U+000B–001F (el escritor convierte CR LF y CR en LF), U+007F–009F, U+202A–202E, U+2066–2069, U+2028, U+2029, U+FEFF y los no-caracteres.
- **Autor:** lo mismo, más TAB, LF, U+061C, U+200E y U+200F, sin U+0020 en los extremos.
- **Invisibles:** ni el comentario ni el autor llevan puntos `Default_Ignorable_Code_Point` salvo la lista blanca de R4, y esa solo donde R4b la admite. Quedan fuera las etiquetas y los selectores de variante sueltos, con los que se esconde texto que un modelo de IA sí lee.
Ningún texto ni ruta puede llevar ESC o C1 a un terminal.
@ -281,6 +282,7 @@ R1 y R8 son capa 3 sobre todo el array; las demás, capa 4. Así, [«b/..», «a
- todo punto con la propiedad `Default_Ignorable_Code_Point` de Unicode 18.0.0, salvo la lista blanca: ZWNJ, ZWJ, VS15 y VS16, que hacen falta en emoji y en varias escrituras. La propiedad cubre los controles bidi (U+061C, U+200E, U+200F, U+202A–202E, U+2066–2069), U+00AD, U+034F, U+200B, U+2060–206F, U+3164, U+FEFF, los demás selectores de variante y las etiquetas U+E0000–E007F, que permiten nombres visualmente idénticos;
- los no-caracteres y todo Cn (sin asignar) de Unicode 18.0.0, que una versión futura podría plegar o volver ignorable;
- U+F000–U+F0FF, del área de uso privado: Cygwin, WSL y el SMB de macOS representan con ellos los caracteres prohibidos en Windows, así que «informe», U+F03A y «anexo» se verían allí como «informe:anexo».
- **R4b.** Los puntos de la lista blanca solo van donde su uso es conforme: VS15 y VS16 justo detrás de un carácter para el que `emoji-variation-sequences.txt` define esa secuencia, y ZWJ y ZWNJ nunca al principio ni al final del segmento, ni dos seguidos. Así ningún nombre lleva secuencias invisibles, que según Unicode 18 sirven para esconder datos y atacar aplicaciones de IA.
- **R5.** Ningún segmento empieza por U+0020 ni termina en U+0020 o '.'.
- **R6.** El segmento hasta el primer '.', sin U+0020 finales y sin distinguir mayúsculas ASCII, no puede ser CON, PRN, AUX, NUL, CONIN$, CONOUT$, COM0–9, LPT0–9, COM¹²³ ni LPT¹²³.
- **R6b.** Alias 8.3 (hallazgo 9). Se rechaza un segmento que, contando puntos de código, cumple las tres condiciones:
@ -298,7 +300,7 @@ R1 y R8 son capa 3 sobre todo el array; las demás, capa 4. Así, [«b/..», «a
- **R9.** Como mucho 65535 carpetas implícitas.
- **R10.** Ningún primer segmento cuya clave de R7 empiece por «.datekeys-». La CLI escribe el árbol en `DIR/.datekeys-*` antes de moverlo, y una entrada con ese nombre chocaría con él (hallazgo 10).
**Tablas.** Un generador en `datekeys-go` las produce desde UCD 18.0.0 (UnicodeData, DerivedCoreProperties, CaseFolding y las descomposiciones) y desde WindowsBestFit, y emite código para los dos repos; sus suites comprueban el digest. MUST NOT usarse `normalize`, `toLowerCase`, las clases `\p{…}` de las expresiones regulares, el paquete `unicode` ni x/text: dependen de la versión de Unicode de cada motor.
**Tablas.** Un generador en `datekeys-go` las produce desde UCD 18.0.0 (UnicodeData, DerivedCoreProperties, CaseFolding, emoji-variation-sequences y las descomposiciones) y desde WindowsBestFit, y emite código para los dos repos; sus suites comprueban el digest. MUST NOT usarse `normalize`, `toLowerCase`, las clases `\p{…}` de las expresiones regulares, el paquete `unicode` ni x/text: dependen de la versión de Unicode de cada motor.
**Escritor.**
@ -537,6 +539,7 @@ El autor cerró el 30-09 las diez preguntas abiertas, todas con la recomendació
8. Un único fichero dentro de una carpeta se descarga directamente, con su nombre, y el ZIP con la carpeta es una opción (apartado 5). No cambia el formato.
9. El lector acepta una cápsula sin ficheros (C = 0); el escritor exige un fichero o un comentario.
10. Un '-' inicial en una ruta solo da un aviso.
11. Todo el texto del creador, sean rutas, comentario o autor, sigue la regla de invisibles: R4b del apartado 3 y la regla del texto del apartado 2. El autor la aprobó el 30-09 por la noche, a raíz del aviso de Unicode 18 sobre los selectores de variante.