Closes the calendar audit findings:
- README sections renamed to canonical headers: `## Baseline` (was
"Baseline audit"), `## Comparativa` (was "Reference comparison").
Added `## Decisiones` documenting the affirm-on-select choice, the
collapsed `shift-navigate` event for all month/year movement, why
arrow keys don't get their own events (pure focus moves), and the
read-only treatment. Rewrote `## Gaps` with disposition tokens
(implementar/diferir/descartar) for each entry.
- Recipe CSS gains `[data-calendar][data-readonly]` styling: cells
drop their hover affordance and the cursor stays neutral. Selection
+ navigation remain interactive (matches `aria-readonly` semantics).
- Audit A-3.7 refined per the COMPONENT_GUIDE rule "pure focus moves
don't need an event". The check now compares MUTATING keyboard
actions to declared events. Focus-move actions
(next-day/prev-day/next-week/prev-week/next-month/prev-month/
next-year/prev-year/first-day-of-week/last-day-of-week/
focus-{next,prev,first,last,up,down,left,right}) are excluded from
the ratio. Calendar's 10 keys / 2 mutating (Enter+Space → `select`)
/ 1 `commit-select` event now passes correctly.
Project audit: PASS 3 → 5, no new regressions. `range-calendar` also
flips to PASS as a side effect of the focus-move filter.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ -13,7 +13,7 @@ Visual wrapper for Soma Calendar. Calendar follows the compound Eidos surface:
| Morfo current | 15 declared parts including `WeekNumber` contract, grid APG, day/cell state data. | Add semantic events because Calendar is interactive. `WeekNumber` remains contract-only until Soma exposes a component. |
| Morfo current | 15 declared parts including `WeekNumber` contract, grid APG, day/cell state data. | Add semantic events because Calendar is interactive. `WeekNumber` remains contract-only until Soma exposes a component. |
| Sema current | No calendar pack before this migration. | Add `calendarSema` for select/unselect and navigation. |
| Sema current | No calendar pack before this migration. | Add `calendarSema` for select/unselect and navigation. |
| Public `Calendar.WeekNumber` part | Soma | Deferred. Morfo declares the part, but Soma currently exposes week numbers through `GridRow` snippet data instead of a DOM component. |
| Public `Calendar.WeekNumber` part | **diferir** | Morfo declara el part, pero Soma expone los números de semana a través del snippet data de `GridRow` en vez de un componente DOM. Requiere refactor en Soma antes de exponer en Eidos. |
| Range selection | Soma | Deferred to `range-calendar` / date range components, not Eidos Calendar. |
| Range selection | **descartar** | Vive en `range-calendar` / componentes de range, no en Calendar. |
| Popover date picker shell | Soma/Eidos date-picker | Deferred to `date-picker`; Calendar remains inline. |
| Popover date picker shell | **descartar** | Vive en `date-picker`; Calendar es inline por diseño. |
| Modal + footer (clear / cancel / close) compartido con pickers | **diferir** | Calendar inline no lo necesita; los pickers lo aportan en su capa. Si llega un caso de Calendar como contenido de Drawer, se reevalúa. |
| Año/mes con scroll vertical estilo iOS | **diferir** | Patrón nuevo, no cubierto por ninguna referencia que mantengamos. Sin caso de uso real. |