El analizador lee un registro de cambios como una tirada plana de encabezados y
decide qué es cada uno. No se configura nada: la entrada es la forma del propio
fichero.

## Un encabezado de versión

Un encabezado es una versión cuando — reducido cualquier enlace al texto que
muestra — lo que queda es un **número de versión, opcionalmente seguido de una
fecha entre paréntesis**.

```md
## [1.4.0](https://github.com/acme/app/compare/v1.3.0...v1.4.0) (2026-02-01)
### [1.4.1](https://github.com/acme/app/compare/v1.4.0...v1.4.1) (2026-02-03)
## 1.4.0 (2026-02-01)
## v2.0.0
```

Los cuatro se leen. Los dos primeros son lo que escribe release-please — una
versión menor en `##` y un parche en `###` — y los dos últimos son un fichero
mantenido a mano. El nivel no forma parte de la prueba, y eso es lo que deja pasar
ambas formas.

Un enlace con el que **abre** el encabezado se conserva como la URL de comparación
de la versión — el diff contra la versión anterior, que la página
[enlaza junto a su procedencia](/reference/changelog/components).
Solo se toma si es absoluto y `http(s)`: un href relativo se resuelve contra el
sitio que renderiza el registro y no contra el repositorio del que vino el fichero.

El **nivel se lee del cuerpo** en vez de suponerse, por la misma razón:
release-please escribe un parche en `###` y sus grupos también en `###`, así que
«el encabezado menos profundo de esta versión» es la única regla que lee ambos.

## Un encabezado de grupo

Todo encabezado por debajo del nivel de la versión es un **grupo**, y su nombre es
el del propio fichero — literal, sin traducir, sin taxonomía fija detrás.

```md
### Features
### Bug Fixes
```

release-please escribe esos dos, changesets escribe su propio conjunto, Keep a
Changelog otro, y cada uno los escribe en el idioma en el que se mantiene el
proyecto. Una capa que los mapeara sobre una lista fija fallaría en silencio con el
primer encabezado que no conociera — así que los filtros de la vista general se
construyen con lo que salió del fichero, y un registro escrito en alemán filtra en
alemán sin configurar nada.

La insignia junto a un grupo cuenta sus **elementos de lista de primer nivel**. Un
encabezado dentro de un bloque de código es texto, no un encabezado, y una valla
solo cierra con las de su propia clase.

## El título y el preámbulo

El primer `#` del fichero, si no vino ninguna versión antes, es el título propio del
fichero y se descarta — la página saca su encabezado de `title`, así que
conservarlo sería un segundo `<h1>`.

**Solo ese, y solo por delante de la primera versión.** Descartar todos los `#` se
lee bien en el fichero que escribe release-please, donde hay exactamente uno, y es
pérdida silenciosa de contenido en un registro mantenido a mano que pone sus
versiones en el nivel superior.

Lo que haya delante de la primera versión se queda, como introducción propia de la
vista general.

## Un encabezado que casi es una versión

La tolerancia de arriba tiene un filo silencioso: un encabezado que la prueba de
versión **no** casa es prosa, así que sus líneas se pliegan en la versión de encima
y la versión que pretendía ser nunca llega a ser una página. Nada en el sitio
renderizado lo diría.

Así que lo dice la compilación. Un encabezado que abre con un número con punto pero
no se lee — `## 1.4 (Feb 2024)`, o la forma Keep a Changelog
`## [1.2.3] - 2024-01-01` — se informa en el informe de compilación, nombrando la
línea y la forma que sí funciona.

Es una **advertencia, no un fallo**, por la razón por la que lo es todo hallazgo de
contenido: el sitio renderiza, y un registro de cambios que esta capa no escribió no
le toca a la compilación rechazarlo. Ver
[Qué comprueba la compilación](/concepts/build-checks).

## La URL en la que se sirve una versión

El número de versión, con una `v` delante cuando empieza por dígito.

```
/releases/v1.4.0
```

La `v` no es decoración. Content lee un nombre de fichero hecho solo de dígitos y
puntos como una versión y deja de refinarlo, lo que dejaría el prefijo de orden en
la dirección: `/releases/01.0.2.0`. Con la `v` el prefijo se quita como en todas
partes, y el segmento coincide con la etiqueta con la que se cortó la versión.