# CONTINUE — tier blocks (handoff, act. 2026-08-19 noche · el chasis de sección) **Estado**: F1 CERRADA (8/8) · F2 CERRADA (15/15) · F2b CERRADA ENTERA · **F3 ABIERTA — F3.1 `app-shell` CONSTRUIDO, VERIFICADO Y REHECHO**, con su fase 0 firmada (Q1–Q4) y el canon `SkipLink` nacido delante de él. **Cinco filas cerradas** (A-111 · A-112 · A-109 · A-110 · A-29), cada una con su doctrina escrita. Y después, **el eje que cambió el método**: en vez de seguir bajando filas, `Section` crece hasta ser la sección de página y los 19 blocks dejan de reescribir su chasis. **EMPIEZA POR AHÍ** — §0, abajo. **19 blocks vivos**: site-header · hero · feature-grid · feature-split · pricing · testimonials · faq · stats-band · cta · newsletter · site-footer · banner · team · contact · content-section · logo-cloud · article-grid · cookie-consent · **app-shell**. Más la página compuesta `/blocks/landing`. **A-95 CERRADA** con `app-shell`: solape del aviso sobre la cabecera **0px** y hit-test dentro de la cabecera, medido (antes: 49px). ## Por dónde entrar mañana ### 0 · EL EJE VIVO: el chasis de sección (abierto, tres tandas hechas) **Idea del autor**, después de parar una cola de parches con una frase que hay que conservar: _«todo esto es muy engorroso, lo estás ensuciando y convirtiendo el framework en una mierda a base de parches, ninguna es profesional ni de alcance»_. Tenía razón, y la pregunta que vino después —_«¿no sería definir un componente del que se basen todos los bloques?»_— es la que abrió esto. El censo le dio la razón con números: `containerSize` recableado en **16** blocks, `sectionSize` en **15**, `decor` en **9**, y **ocho copias del mismo `Header`**, una ya derivada — la de `article-grid` había perdido su `Motion`. **Firmado: A — que CREZCA `Section`**, no que nazca un hermano. El nombre que se propuso, `Block`, se descartó con dato: `block` ya es vocabulario del canon (`block?: boolean` = «a todo el ancho», 10+ componentes) y colisionaría con el nombre del tier. Si algún día naciera aparte sería `PageSection`. **Tres commits, sin push**: - `4a2771517` — `Section` gana `containerSize`, `decor` y la parte `Section.Header`, y renderiza un `
` real absorbiendo el `{...rest}`. Para eso **`Box` gana `as`** (lista CERRADA de contenedores, default `div`), que **cierra F21**. Dos blocks migrados como prueba. - `ecb23d6a4` — los ocho `Header` pasan a componer `Section.Header`, que gana `align` para la única variación real. `article-grid` recupera su `Motion`. - `cc9844434` — las diecisiete raíces restantes. **−420 líneas.** **Cuatro conservan algo suyo, cada uno por un motivo medido**: `cta` (su `paddingX` condicional: `full` significa EDGE TO EDGE) · `content-section` (mide con una rejilla de cinco pistas, no con `Container`) · `site-footer` (`as="footer"`) · `hero`, que destapó **la trampa del diseño**. ⚠️ **La trampa, y sólo salió MIDIENDO**: si un block pasa `containerSize` Y un `` propio como hijo, el fondo queda **atrapado dentro de la medida** — el `hero` salió con 128px de blanco a cada lado en vez de a sangre. El `decor` del chasis se pinta FUERA del container justo por eso; un `Background` que llega como hijo se capa con la copia. Escrito en el sitio donde volvería a morder. Verificado después: fondo 1280 a sangre, hijo directo de la sección, medida 1024 dentro, en `hero` y en `stats-band`. ⚠️ **Y el paso de tipos que costó 5 + 14 errores**: la raíz de un block extiende los props del componente del canon que envuelve (**`SectionProps`**), nunca `HTMLAttributes` — cuya superficie laxa choca con el `style`/`class` refinado del canon al esparcirse. La regla ya estaba escrita en el `types.ts` de `stats-band` para las sub-partes; ahora la raíz también envuelve canon. **Lo que queda de este eje**: 1. **Los 19 README describen el nido viejo** (`Section · Container` en sus mapas de composición). Es prosa, no está guardada por nada, y ahora miente. 2. **El contrato del tier** (`architecture/blocks.md`) no dice todavía que la raíz de un block ES un `Section`. Si eso se escribe, `blocks:check` puede vigilarlo. 3. **Nada más del chasis**: los tres ejes y la parte están migrados y medidos. ### 1 · La cola del ledger, con el aviso que la reencuadra ⚠️ **Antes de bajar otra fila, léete esto**: al revisar la cola con el autor salió que **más de la mitad de lo que queda archivado bajo un block tiene la causa en el canon** — A-48 (el `Banner` declara cero eventos), A-62 y A-65 (el `Button` de soma emite haya o no handler), A-60 (el modelo `auto-fill` de `AutoGrid`), A-53 (`Link` mudo frente a `Button`). Bajarlas una a una dentro de la frontera del tier fabrica parches. **A-11 quedó replanteada por eso** (ver su ficha): su arreglo profesional es que el canon publique el CATÁLOGO en runtime de sus escalas, como ya hace `EIDOS_VARIANTS`, no siete líneas de exhaustividad repartidas por las demos. **Trabajo honesto que queda dentro de la frontera**: A-74 (anclas muertas en la demo de feature-split) · A-96 (`affixOffset` sin control vivo) · A-71 (el arnés pinta el block antes del `h1`, en las 15 demos). Media hora, y la cola queda limpia sin mentir. ### 2 · ~~A-111~~ — **CERRADA 2026-08-19**. Lo que dejó, y lo que abrió El nombre del landmark vive ya en el `