docs(process): la 6a fila de chronos no era un defecto — decision revocada por el SPEC

El item llevaba un mes en la cola como «la 6a fila fantasma» y estaba FIRMADO
para arreglarse. Al ir a ejecutarlo aparecio el SPEC del propio componente, que
dice lo contrario en TRES sitios coordinados: rejilla de 6 filas constante
«estabiliza la altura» (SPEC.md:270), inventario de reuso pidiendo «rejilla de
mes 6x7» (:492), y `data-outside-month` como estado declarado de `day-cell` CON
su propio token de tema (:311 y :461). Las celdas de fuera de mes son diseno,
no relleno.

La asimetria con la familia —chronos `true`, los otros cuatro `false`— se leyo
como deriva y es al reves: chronos es el unico que escribio su decision, y
coincide con el default de sus dos referentes de libreria, verificados en la
fuente y no citados de memoria: FullCalendar `fixedWeekCount` viene `true` («the
calendar will always be 6 weeks tall») y Toast UI `month.isAlways6Weeks` viene
`true`. Google/Apple/Outlook si varian las filas, pero porque son aplicaciones
que llenan el viewport; chronos no tiene contrato de altura, asi que la receta
propuesta tenia que inventarse la altura con `calc(6 * cell-min-block)` — la
altura de 6 filas. Era la misma altura con 5 filas mas gordas, y menos
informacion.

Medido antes de opinar: hoy son 115 px por fila y 724 px de rejilla en todos los
meses; con `fixedWeeks:false`, jul→dic 2026 da 609/724/609/609/724/609, o sea el
salto de 115 px que la decision queria evitar. Y crecer las filas no ensenaria
ni un evento mas: `maxLanes` es `$state(3)` fijo.

Corregidos ademas dos errores de la ficha original: el default vive en DOS
sitios (chronos.svelte:20 y engine/state.svelte.ts:64), y chronos.css:278 no es
la altura de las filas del mes sino la pista de carriles de chips dentro de una
fila. La conducta de Google queda anotada como FUNCIONALIDAD con firma propia
(contrato de altura + maxLanes derivado), no como flip de flag.

docs:check 0/623.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-dir-prefs
dev 2 months ago
parent c00e97b91a
commit a157454913

@ -62,9 +62,10 @@ supresión por labelledby sobre un prop sin default.
**Lo siguiente, en orden:**
1. ~~**`alert-dialog`** — la única cadena mecánica que queda (30 min).~~ **HECHA 2026-08-12.**
2. ~~**Dos decisiones del autor** (§4)~~ **FIRMADAS 2026-08-12** — `fixedWeeks`
(crecer filas), el chip bloqueado (vía b + su letra pequeña) y
`mode`/`scope` (retirar): las disposiciones completas viven en §4.
2. ~~**Dos decisiones del autor** (§4)~~ **FIRMADAS 2026-08-12**: el chip
bloqueado (vía b + su letra pequeña) y `mode`/`scope` (retirar). La tercera,
`fixedWeeks`, quedó **REVOCADA el 2026-08-13** al aparecer el SPEC del
componente — las disposiciones completas viven en §4.
3. **C5 rebanada 3**, y empieza por **subir a soma el comportamiento del chip**
— la tabla de §C5-r3 explica por qué no es mecánica.
4. ~~**Arreglar `npm run translations:check`** (casca) y censar los 166 morfos.~~
@ -1068,14 +1069,13 @@ reproducible, y el 1 espera decisión tuya.
Salieron al responder dos preguntas del autor sobre la vista de mes. Ninguno es
de superficie perceptual; se anotan aquí para que no se pierdan.
1. **La 6ª fila fantasma.** `fixedWeeks` vale **`true` por defecto en chronos**
(`components/chronos.svelte:20`), al revés que Calendar / DatePicker /
RangeCalendar / DateRangePicker, que lo traen `false`. `buildMonthGrid`
rellena entonces hasta 42 celdas (`engine/grid.ts:67`), así que un mes que
cabe en 5 filas (junio de 2026: lun 1 jun → dom 5 jul) se inventa una 6ª
fila **entera del mes siguiente**. Decisión: alinear el defecto con la
familia, o mantener la altura estable creciendo las filas en vez de añadir
una semana.
1. ~~**La 6ª fila fantasma.**~~ **NO ERA UN DEFECTO — REVOCADO 2026-08-13, ver
§4.** `fixedWeeks` viene `true` en chronos y `false` en Calendar / DatePicker /
RangeCalendar / DateRangePicker, y de esa asimetría se dedujo una deriva. Es
al revés: chronos es **el único que escribió su decisión** (`SPEC.md:270`,
`:492`, `:311`/`:461`) y coincide con el default de FullCalendar y Toast UI;
los otros cuatro son rejillas en popover, otro problema. La ficha además leyó
mal el CSS y se dejó la mitad de los defaults — el detalle, en §4.
2. ~~**Una ocurrencia de evento recurrente NO se puede mover.**~~ **ARREGLADO
2026-08-11** — y el arreglo NO era el que parecía. Su id es sintético
(`${serie}::${YYYY-MM-DD}`, `engine/recurrence.ts:145`) y `moveEventToDay`
@ -1361,13 +1361,44 @@ Detalle: `morfo.md` Step 4 + ledger §A-85 RESOLUCIÓN.
¿Alineamos el defecto con la familia, o mantenemos la altura estable
**creciendo las filas** en vez de añadir una semana? (Google Calendar hace lo
segundo.)
**FIRMADA (2026-08-12): crecer las filas.** Mata el fantasma Y mantiene la
altura estable; `fixedWeeks` pasa a `false` como parte del cambio, así que la
alineación de familia sale gratis. Y no es sólo el default: las filas del mes
son hoy de altura FIJA (`grid-auto-rows: var(--_chronos-lane-height)`,
`chronos.css:278`), así que un `false` pelado cambiaría la semana fantasma
por saltos de altura al navegar — el arreglo es de RECETA (altura de grid
estable + filas `minmax(0, 1fr)`), no un flip de flag.
~~**FIRMADA (2026-08-12): crecer las filas.**~~ **REVOCADA POR EL AUTOR
(2026-08-13) — NO SE TOCA: `fixedWeeks` se queda en `true`.** La firma se dio
sobre una premisa incompleta: **nadie puso el SPEC del componente sobre la
mesa**, y el SPEC no dice una línea sino tres coordinadas —
`SPEC.md:270` («Rejilla de 6 filas constante (**estabiliza la altura**).
Default: true.»), `SPEC.md:492` (el inventario de reuso pide «Rejilla de mes
**6×7**») y `SPEC.md:311`+`:461` (`data-outside-month` es un estado declarado
de `day-cell` **con su propio token de tema**). La 6ª fila no es un fantasma:
es la rejilla especificada, y la altura estable que la decisión perseguía ya
está — medido: 115 px por fila y 724 px de rejilla en TODOS los meses.
Y la comparación competitiva, verificada en las fuentes en vez de citada:
**FullCalendar `fixedWeekCount` viene `true`** («the calendar will always be
6 weeks tall») y **Toast UI `month.isAlways6Weeks` viene `true`** — los dos
referentes de librería de la propia matriz del SPEC (§2.1) hacen lo que
chronos hace. Google/Apple/Outlook sí varían las filas, pero **porque son
aplicaciones que llenan el viewport** y la rejilla se estira hasta el alto de
la ventana (Google llega a exponer un ajuste de densidad para regularlo). Esa
condición chronos no la tiene: sus filas son `min-block-size` y la rejilla
crece con el contenido, así que no hay altura dentro de la que estirarse — por
eso la receta propuesta tenía que INVENTARSE la altura con
`calc(6 * var(--_chronos-cell-min-block))`, que es la altura de 6 filas. Era
«seguir midiendo 6 filas de alto, pero con 5 filas más gordas»: misma altura,
menos información.
⚠️ Dos errores de la ficha original, corregidos para que no se repitan: el
default vive en DOS sitios (`components/chronos.svelte:20` **y**
`engine/state.svelte.ts:64`), y `chronos.css:278`
(`grid-auto-rows: var(--_chronos-lane-height)`) **no es la altura de las filas
del mes** — es la pista de los carriles de chips DENTRO de una fila
(`.chronos-overlay`, absoluta). Las filas del mes son hijos flex con
`min-block-size` (`chronos.css:188-193`).
**Si algún día se quiere la conducta de Google, es una FUNCIONALIDAD, no un
flip de flag**: contrato de altura (la rejilla llena su contenedor) + `maxLanes`
derivado de la altura medida — hoy es `$state(3)` fijo
(`engine/state.svelte.ts:66`), así que crecer las filas no enseña ni un evento
más. Eso necesita firma propia y una enmienda deliberada del SPEC.
- **Cómo pintar un chip bloqueado.** Una ocurrencia recurrente ya no se
arrastra, pero sigue con `cursor: grab` porque `DragDrop.Draggable` no estampa
`data-disabled`. Dos vías: (a) `event-chip` declara un estado nuevo — local y

Loading…
Cancel
Save

Powered by TurnKey Linux.