astra
alpha-0.1-background
alpha-0.1-dir-prefs
alpha-0.1-sec-dom
menubar-v4-safe
active-uix
morfo-runtime
morfo-driven-soma
semantuix
glm-5
main
sium-v1.0
${ noResults }
10 Commits (8864ba93ca5e8fa4977d06d79b85301de001418d)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
3097cfcb69 |
revert: deshacer la auditoría entera — se hizo sin leer la doctrina
Revert de los 7 commits de la sesión del 2026-07-29/30: |
2 months ago |
|
|
c39170abbf |
fix(uix): la auditoría del sistema — lo que los guards no veían
Auditoría clean-room de todo ActiveUIX (excluido `web/`), componente a
componente. Lo que sale de aquí no es una lista de bugs: es un patrón.
El framework validaba que lo escrito fuese VÁLIDO, no que lo declarado
se CUMPLIESE — y sus guards fallaban ABIERTOS.
## El colapso de las uniones de props (95 → 0)
Un `Props` de eidos es `{ …props propias… } & <atributos nativos>`.
Cuando el elemento declara un atributo homónimo, la intersección funde
ambos y una unión estrecha contra el `string` nativo COLAPSA a `string`.
Causa: `Without<T, U> = Omit<T, keyof U>` invocado como `Without<T, {}>`
— `Omit<T, never>`, un no-op — 433 veces en soma; sólo 3 con argumento
real. Invisible para `svelte-check`: ensanchar un tipo no es un error,
es una garantía perdida.
Medido: 95 props en 72 componentes. `<Avatar color="nonsense">`
compilaba. `ComboboxInput.size` chocaba con el `<input size>` numérico
y era inusable. Migrado con codemod sobre AST (nunca regex) a
`Own & Omit<Nativos, keyof Own>`: 92 tipos en 73 ficheros + carousel a
mano. `check` no se movió.
Garantía nueva: `eidos/prop-surface.test.ts` (PROP-1) compara los
literales de la anotación del autor contra los de la propiedad pública.
Verificado que falla reintroduciendo el defecto.
## Los cuatro guards que fallaban abiertos
- `translations:check` crasheaba en CADA ejecución de su historia — un
stripper de comentarios borraba `//` dentro de strings. Sustituido por
import dinámico. Al arrancar destapó 8 slots `texts` sin traducción.
- `soma-attr-audit` agotaba el timeout de 5 s: sin veredicto, verde por
omisión.
- `component-audit` D-7.4 hacía `continue` mudo cuando el tipo no
resolvía. Ahora resuelve con el checker de TypeScript
(`scripts/prop-unions.ts`): puntos ciegos de 124 → 3.
- `component-audit` R-1.1: el regex casaba `[data-motion='reduce']` y
daba PASS por el motivo equivocado.
Regla adoptada: un guard que no puede evaluar TIENE que decirlo. El
informe lleva ahora bloque «Not verified» y recuento en el resumen.
## D-1 · tooltip y D-2 · card, cableados
`tooltip` declaraba 3 eventos `emerge` que nadie emitía. Ahora emiten;
`present` pasa a `sequence: 'post'` — con `'pre'` el hold de ~240 ms
gateaba el montaje del propio overlay.
`card` declaraba `commit-select` sin emisor posible (scope sin soma).
Puente headless en `soma/components/card/` con la forma ya establecida
por `menu-dial` / `onion-menu`: eidos posee estado y render, soma posee
sólo el `SomaRuntime` que emite.
## Documentación: 22 mentiras corregidas
`docs/` afirmaba guards inexistentes (`NO_MISSING_PROVIDER_TESTS`),
APIs con firma equivocada y un modelo de Motion que el código no
implementa. Corregido en CANON, arquitectura, glosario, theming/motion,
checklist y los README de `motion` / `callout` / `arts/motion`.
## Además
- CardGroup: la descripción se metía en la primera celda del grid.
- Motion: `data-state` siempre estampado, salida real en `leave()`,
token fantasma `--motion-stagger-each-default` eliminado.
- `engine-motion`: `handoffState` Map → WeakMap (fuga por nodo).
- `mockup`: primitivo crudo → token de rol (R-4.6).
- 5 catálogos de traducción que faltaban.
Handoff: `docs/process/CONTINUE-audit-2026-07-29.md`.
Batería: check 0 errores en src · vitest server 3701/3701 ·
docs:check 0/0 · component:audit 161 PASS / 2 NEEDS-WORK.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2 months ago |
|
|
0588644a71 |
docs(book): F7.5 (1/2) — checklist + audit guide + demo guide moved to docs/guides/
Three English guides moved verbatim (copy + link touch-ups, no translation): COMPONENT_COMPLETION_CHECKLIST -> guides/ completion-checklist.md, COMPONENT_AUDIT_GUIDE -> guides/ component-audit.md, DEMO_AUTHORING_GUIDE -> guides/demo-authoring.md. Tooling moved with its doc in the same pass: docs-check I5 now parses the checklist at the new path (verified: 0 errors, rule tables found) and component-audit.ts's two path strings updated. One reconciliation in the audit guide's s5, applied as link-don't-copy: the copied v1 6-tab template list (stale vs the v2 9-tab guide it links, drawer canary vs button) is replaced by a pointer to demo-authoring.md; the domain canaries in s7 stay. demo-authoring's harness links now reach into web/routes/uix/lib/ (the modules stay with the code); the deleted pendiente_color_demos.md reference is marked TODO(reconcile). Corpus swept: building-a-component (frontmatter related: + phases 6/8), authoring, architecture/soma, theming/reference s5-parity, testing-and-tooling, getting-started, README (E4 rows + component-audit row added + two stale F7.3 paths in 'I want to' fixed). Remaining warns = links to component-guide.md, which lands in F7.5 (2/2). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
1a710c12ff |
docs(book): F7.2 (7/7) — soma-architecture chapter translated; architecture/ batch COMPLETE
src/uix/soma/SOMA_ARCHITECTURE.md (1058 L, Spanish) translated to English as docs/architecture/soma-architecture.md, same s1-s17 numbering: layer architecture, design principles, the closed six-piece model + SomaRuntime, component model (picker composition), runtime parts, the layers inventory, the Soma class + date/time domain + statics convention, the reactive system, internal helpers, data-* contracts, IDs, barrels, boundaries, directory structure, anti-patterns, current shape, stability rule, checklist. The frozen per-provider test list (dated 2026-05-15, ~140 L) became the timeless fact: the NO_MISSING_PROVIDER_TESTS guard + the test tree ARE the coverage inventory (testing-and-tooling aligned). Stub with the full sN map at the old path; corpus links swept. F7.2 is complete: docs/architecture/ now holds the whole E1 stratum in English (7 chapters, ~5.4k lines), with thin stubs + sN maps next to the code. docs:check 0 errors (251 docs). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
16caa0eb53 |
docs(reconciliation): close the phase — known-traps emptied, plan + CONTINUE updated
Closing pass of PLAN-docs-reconciliation:
- docs/building-a-component.md 'Known traps' table emptied — every trap
was fixed by phases 1a-1d/2 and docs:check guards the recurrence
classes (this was the phase's visible success indicator).
- PLAN checkboxes ticked + 'Resultado del cierre' appended (commits,
deviations from the plan, out-of-scope findings pending user decision).
- CONTINUE-docs-corpus.md Fase 6 marked HECHA.
- testing-and-tooling.md row reworded so the guard doesn't flag its own
description (the phantom-field literal).
Final state: npm run docs:check = 0 errors, 13 warns (all known foreign/
user-decision targets: THEMING_AUDIT deleted in worktree, PENDIENTES.md
deleted in
|
3 months ago |
|
|
b08dece4e2 |
feat(docs): docs:check guard — copyable-invariant lint for the doc corpus
Phase 3 of PLAN-docs-reconciliation (fable_audit D5: the 'link, don't copy' law had no mechanical guard). New scripts/docs-check.ts + npm run docs:check with six invariants, each born from a verified drift: - I1 vocabulary counts vs SEMA_FAMILIES/INTENTS/ARCHETYPE_VOCABULARY (context-gated: font/shape families, variant archetypes and evaluative subsets don't false-positive; section numbers and quoted historical mentions skipped). - I2 phantom fields: translations: in morfo/soma docs, defaultSemantic outside LIBRO_VARIACIONES (rename/rejection mentions allowed). - I3 dependency claims: soma dep lists must cite real package.json dependencies; corpus-wide @floating-ui mentions need their devDep-only context. - I4 SHARED_VARIANT_VOCAB (component-audit) == EIDOS_VARIANTS (textual mirror comparison). - I5 checklist<->audit: every Enforcement:audit rule exists in the script, every script rule ID is declared. - I6 relative links resolve (WARN until the known dangling targets get their user decision: THEMING_AUDIT deleted in worktree, PENDIENTES.md deleted 2026-06-07, MOTION_SERVICE_RFC demo routes). Chronicle docs (process/, changelogs, audits, CONTINUEs, status: historical frontmatter, the book) are exempt from truth-tracking. Also: THEMING s2 per-layer table realigned to the real entrypoint (the fragile rule-count column dropped); stale adom link in SOMA_ARCHITECTURE fixed; validator documented in docs/testing-and-tooling.md. Current output: 1 error (building-a-component known-traps row — cleared in the closing pass) + 13 warns. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
8606232125 |
fix(eidos): THEME-SYS-1 — consolidate overlay z-index into a named scale (+ guard + docs)
The ~12 overlay recipes hardcoded an ad-hoc parallel z-index scale (raw integers
60–99/1200) that duplicated nothing reusable and had drifted out of order
(tooltip 76 < dropdown 80 — a tooltip painted BEHIND a dropdown). They are now a
named scale.
- `STATIC_Z_INDEX_OVERLAY` (static.ts) → emitted as `--z-index-overlay-{inline,
backdrop,content,floating,tooltip,detached,toast}`. A SEPARATE scale from the
global `--z-index-*` ladder (which orders the depth planes) — overlays portal
to <body> as siblings of modals, so they share one flat low band where each
rung sits just above the modal scrim. Mapping them to the 300–900 ladder would
hide a dropdown/select/popover opened INSIDE a dialog (dropdown 300 < modal
700); the combobox recipe already warned about this. `tooltip` now sits above
`floating` (fixes the inversion); `toast` stays above the soma FloatPanel band.
- Every overlay recipe token (`content-z`/`overlay-z`/`inline-z`/`toaster-z`/
`preview-z`) now references `var(--z-index-overlay-*)` — zero raw integers.
dialog/drawer gain an explicit `content-z` rung (drops the `calc(... + 1)`).
- Guard (contracts.test.ts, "overlay z-index against raw integers"): a recipe
`*-z` token must reference the scale, never a bare integer. Proven to catch
drift (a raw `'76'` makes it fail). Local `z-index: 0..5` (avatar/tabs/sticky)
is intra-component relative stacking — out of scope, stays.
- Docs: THEMING.md §35 rewritten to describe the consolidated scale + the
flat-band rationale + the guard; token table gains `--z-index-overlay-*`;
testing-and-tooling.md documents the catalogue guards (VG-8/SYS-1/A31/A30/
THEME-SYS-1).
Stacking order verified from the resolved CSS (deterministic z compare: content
70 < floating 80 < tooltip 90 < toast 1200; dropdown-in-dialog preserved). A
live browser check was blocked by a port conflict with another session's server.
check: 0 new type errors; the 5 guards green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
3 months ago |
|
|
9926add637 |
docs(corpus): delete the terra-era DATA_ATTRS fossil + its dead generator
Per explicit instruction to remove deprecated/erroneous files (noise/confusion): - DATA_ATTRS.md (repo root, 2158 lines) — a stale "Terra Data Attributes Contracts" catalog, already self-headed DEPRECATED. The data-* contract is the morfo, validated by morfo:check; this file only lied about it. - scripts/generate-contracts-docs.ts — its generator, which imports the removed src/uix/terra/utils/contracts.ts, so it can no longer run. No doc links to either; nothing imports the script. The package.json `generate:contracts-docs` entry now dangles at the deleted script — left untouched because package.json carries unrelated concurrent edits I won't sweep; flagged in the CONTINUE hand-off to remove later. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
4 months ago |
|
|
001682c254 |
docs(corpus): fix dead generate:contracts-docs claim; census the pending fossils
testing-and-tooling.md listed `generate:contracts-docs` as live codegen "from the morfos" — it is not. The script imports `src/uix/terra/utils/contracts.ts` (the removed terra layer), so it no longer runs, and its output DATA_ATTRS.md is a terra-era fossil. Corrected: the data-* contract is the morfo itself, validated by morfo:check; the legacy script + DATA_ATTRS.md survive but are dead. Also recorded the pending-.md census in the CONTINUE hand-off: DATA_ATTRS.md (root, retire to process), the two dated audits (audit-opus / THEMING_AUDIT — the latter cited in ~7 places), and what to leave (fix-stext.md is cited provenance; MOTION_SERVICE_RFC / chronos are concurrent; words/palabras excluded). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
4 months ago |
|
|
e737f0f78d |
docs(corpus): add docs/testing-and-tooling.md — testing, validation, codegen, SSR
Consolidates the cross-cutting verification story that was scattered across package.json, COMPONENT_GUIDE and SOMA_ARCHITECTURE into one reference: - The two-project vitest suite (browser client / node server) and how to run one. - Each validator and the class of bug it catches: morfo:check (DOM vs contract), morfo:vocabulary (verb drift), component:audit (acceptance), perm:check (state transitions), smoke (hydration), translations:check, eidos-lint. - Codegen vs authored: generate:eidos-css, generate:contracts-docs, and the compileMorfo primitive. - The SSR posture: dom:false -> disabledDom, ActiveDom owner-document resolution, ornamental sema, and why smoke (not HTTP 200) is what catches hydration bugs. All grounded in the real package.json scripts. Wired into docs/README.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
4 months ago |