Corrección del autor, y era una equivocación de fondo, no de forma. Yo había
escrito que un menú en la barra sería «una segunda navegación dentro de un shell
cuya navegación es el raíl». Es al revés:
- la BARRA lleva la APLICACIÓN — su menú general, las áreas que tiene, y lo que
es de la persona y no de la página (buscar, avisos, la cuenta). No cambia
cuando el lector se mueve dentro de un contexto;
- el RAÍL lleva el CONTEXTO en el que está — este proyecto, esta tabla: sus
secciones y sus acciones. Cambias de contexto y el raíl entero cambia; la
barra no se mueve.
Es el `TopNav` + `SideNav` de Atlassian y el `TopBar` + `Navigation` de Polaris,
que estaban en mi propio dossier. Y es también por qué una app publica DOS
landmarks `navigation` legítimamente: la APG pide nombre único en los repetidos,
y cada uno nombra un ámbito distinto.
La demo modelaba mal: el raíl era el menú general. Ahora la barra lleva marca +
`NavigationMenu` de la aplicación (Bandeja · Proyectos · Informes) y el raíl es
el proyecto Apollo (Tablero · Conversaciones · Archivos + sus Acciones). El
rastro se va con ella: su sitio es la cabecera de la PÁGINA, no la barra —
cambia con cada vista mientras la barra no, y una barra que lo lleva crece una
segunda fila en cuanto la ruta tiene tres niveles, que es lo que se midió antes
de moverlo.
De `site-header` se queda sólo la razón que era cierta: no es que sobre una
navegación, es que la pieza es de un SITIO — `Sticky` por defecto (una barra de
app bajo `scroll="main"` no debe pegarse) y `Container` MEDIDA (una barra de app
va de borde a borde). Su forma marca · nav · acciones es la correcta.
**Y un defecto de canon que sólo aparece con dos navegaciones**: `NavigationMenu`
deja su landmark ANÓNIMO — el `aria-label` se reenvía al `<ul>` y el `<nav>` se
queda sin nombre (el morfo lo declara así: «the root delegates its name to the
list it wraps»). Un `<ul>` no es un landmark. Medido:
`navigation: ['Navegación principal', null, 'Migas de pan']`. No se arregla
desde fuera —nombrar la lista no nombra la región, y envolver en otro `<nav>`
anidaría landmarks—, así que queda VISIBLE y registrado en los Gaps.
Guards: `blocks:check` verde · `docs:check` 0/0 · `svelte-check` sin errores
propios (de paso, `NavigationMenu.Item` exige `value` y no se lo pasaba).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>