Ir al contenido

Estabilidad ​

Traducción automática

Esta página se tradujo automáticamente del inglés y todavía no la revisó un hablante nativo; las correcciones son bienvenidas en GitHub. La página en inglés se genera a partir de SUPPORT_TIERS.md y esta traducción puede quedar atrás; si algo no coincide, vale el original en inglés.

Lo que Quantum promete, etiqueta por etiqueta. Desde la 1.0, el Núcleo (Core) y la IA siguen el versionado semántico (semver): una versión 1.x no rompe un programa que usa solo esos niveles; su significado lo fijan las reglas de la especificación, y una ruptura espera a la 2.0. Experimental y Laboratorio no tienen esa promesa.

Esta página es la promesa. Lo que de verdad funciona hoy se mide en la página de Estado, y cada cambio está en el registro de cambios.

La frase ​

Quantum: aplicaciones web declarativas en XML, con IA y RAG en el propio lenguaje. Sin cadena de build, sin JavaScript, sin framework de front-end.

Lo que no encaja en esa frase no pertenece al README ni a la presentación. Puede seguir existiendo, en otro nivel o en otro repositorio.

Para quién es ​

Personas que desarrollan solas y equipos pequeños que construyen herramientas internas, paneles, pantallas de administración y aplicaciones de IA, y que no quieren una cadena de build de front-end.


Los niveles ​

Núcleo: lo que el framework es ​

Documentado, probado de punta a punta, estable. Una ruptura aquí es un bug crítico. Ninguna etiqueta entra sin: una regla en SPEC.md con una prueba que la cite, un ejemplo que funcione, una página de guía y una línea en FEATURE_STATUS.md.

EtiquetaFunción
q:componentUnidad de composición, con q:param / q:return
q:setVariables y ámbitos (session. / application. / request.)
q:ifCondicional (q:elseif / q:else)
q:loopIteración (array, lista, rango, consulta)
q:functionFunción reutilizable, con q:param / q:return
q:querySQL parametrizado: q:param obligatorio, inyección imposible por construcción; paginación, verificación del esquema (quantum check), historial (DB-11)
q:transactionConsultas que se confirman o se revierten juntas (DB-4)
q:actionManejador de formularios, con q:redirect y q:flash; las reglas de q:param se verifican en el servidor y se muestran junto a cada campo
q:invokeLlamar a una función, a un componente o a un servicio HTTP
q:dataImportar y transformar CSV/JSON/XML
q:import / q:slotComposición de componentes
q:fileArchivos subidos bajo paths.uploads, y descargas cuyo acceso decide una página (FILE-1, FILE-2)
q:mailCorreo mediante la configuración mail:, con un modo de registro para desarrollo (MAIL-1, MAIL-2)
ui:*, el conjunto del NúcleoPantallas en una página, enumeradas en la regla UI-7. El navegador (quantum start), la consola (quantum console) y la ventana (quantum desktop, la página en una ventana local) las dibujan con el mismo significado; un único guion de paridad se ejecuta en un navegador real y en la consola
require_auth / require_roleAutenticación y autorización por componente, sobre el ámbito session (decisión D4); hashPassword / verifyPassword en las expresiones

IA: la razón de ser del proyecto ​

El mismo contrato que el Núcleo, más una prueba en vivo contra un modelo real antes de cada versión. Es lo que Quantum tiene y ningún otro framework declarativo tiene.

EtiquetaFunciónLo prueba
q:llmCompletado y chat; knowledge= responde a partir de una base y cita sus fuentes; stream="true" envía la respuesta mientras se escribeIA-1…IA-8, projects/docs-assistant
q:knowledgeUna base de conocimiento vectorial (RAG) sobre texto, archivos y consultasIA-2, IA-6, IA-8, projects/docs-assistant
q:agentUn agente cuyas herramientas se declaran en .q, con un contrato de fallo y un presupuesto de tiempoIA-4, IA-5, projects/shop-agent

Experimental: existe, sin promesa ​

Se mantiene y funciona, pero fuera del README y de la presentación, sin garantía de estabilidad de la API. Pasa al Núcleo con el mismo rigor: una regla de la especificación con su prueba, un ejemplo, una página de guía y una línea en el estado.

ÁreaEtiquetas
Multiagenteq:team: todavía sin regla en la especificación ni aplicación que lo demuestre
Tareasq:job, q:schedule, q:thread
Mensajeríaq:message, q:queue, q:subscribe, q:messageAck, q:messageNack, q:websocket, q:websocket-send, q:websocket-close
Serviciosq:log, q:dump
Scriptingq:python, q:pyclass, q:pyimport: desactivados por defecto, se activan con security.python_scripting (ver SECURITY.md)
Eventosq:dispatchEvent
Decoradoresq:decorator / q:pydecorator: un parser y un nodo del AST sin consumidor en el entorno de ejecución; o se diseñan decoradores para q:function o las etiquetas se van. Sin documentar hasta entonces
UI / otros destinosElementos ui:* fuera del conjunto del Núcleo (solo en el navegador; la consola dice que no los dibuja); la compilación independiente q:application type="ui" (--target html/textual, solo diseño, UI-8); el destino de terminal (qt:), htmx, islands

Laboratorio: se queda en el repositorio, fuera de la promesa ​

Decisión D1/D2 (2026-09-10): estos proyectos se quedan en el repositorio porque exigen más del lenguaje: jugando es como aparecen las funcionalidades y los bugs que el núcleo necesita. No forman parte de la presentación ni tienen promesa de estabilidad, y el entorno de ejecución avisa una vez cuando uno se ejecuta (quantum/core/tiers.py). Sus pruebas se ejecutan en CI en un job propio (pytest -m laboratory), obligatorio como el principal, para que un cambio en el núcleo que rompa un juego se note, y un CI en rojo diga de inmediato qué lado se rompió.

ÁreaNota
Motor de juegos 2D (qg:), generación de código para GodotLos juegos de projects/ y examples/ los construye el generador de código; nunca edites la salida generada. Los cambios del lenguaje que rompen un juego migran sus fuentes .q en el mismo cambio
quantum-as4 (compilador MXML/AS4 → JS)Tiene una regresión abierta en test_transpiler_comprehensive.py
quantum run --target mobile (React Native)Traduce q:set/q:function a JavaScript por su cuenta, lo contrario de "un solo entorno de ejecución". Los teléfonos quedan fuera de la 1.0. Avisa una vez (tiers.warn_ui_target)

Cómo evitamos que esto se pudra ​

ROADMAP.md se pudrió porque se mantenía a mano y nadie lo verificaba. Las defensas:

  1. FEATURE_STATUS.md se genera ejecutando de verdad los ejemplos (scripts/generate-feature-status.py).
  2. manifest.yaml no tiene autoridad sobre "funciona o no": 29 archivos sincronizados a mano es justamente la razón por la que se desviaron.
  3. El motor aplica los niveles (quantum/core/tiers.py, probado en tests/unit/test_tiers.py); esta página y ese archivo cambian juntos.
  4. Este documento solo cambia por una decisión explícita, y el cambio es pequeño: mover una etiqueta de un nivel a otro.

Cambios para la 1.0 ​

CambioPor qué
Los nombres de los niveles están en inglés: Core, AI, Experimental, Laboratory (antes eran Core, Diferencial, Experimental, Laboratório)El repositorio está en inglés
q:file, q:mail y q:transaction → NúcleoCada uno tiene reglas en la especificación con pruebas (FILE-1/2, MAIL-1/2, DB-4) y una aplicación en CI que lo usa (projects/helpdesk, projects/blog)
q:team → ExperimentalSin regla en la especificación ni aplicación que lo demuestre; el nivel de IA promete solo lo que está demostrado
Conjunto del Núcleo de ui:* → Núcleo (0.16)UI-1…UI-14, el guion de paridad, tres renderizadores
q:decorator / q:transaction quedaron "sin nivel"q:transaction recibió su regla (DB-4); los decoradores son Experimentales, con la nota de arriba

Licencia MIT · Hecho con VitePress