You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/process/PLAN-agent.md

442 lines
103 KiB

feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
---
title: PLAN — Eje agéntico ($agent) · track del agente como tal
type: process / plan de ejecución
status: v2.2 — D-AG.1/D-AG.2 + bloque §3 + ⚖️1/⚖️2/⚖️3 FIRMADOS (2026-07-21). F0 desbloqueada.
date: 2026-07-21
docs:
informe: INFORME-eje-agentico-revision-externa.md
triage: TRIAGE-revision-externa-agente.md
doctrina-futura: docs/architecture/agent.md (F0, no existe aún)
scope: |
ESTE track = el agente como tal (motor, protocolo, contratos, ciclo, semántica,
superficies propias). La integración en palabras (4 ejes F-B, provenance en su
modelo, puertas mudas, transact, concurrencia espacial) pertenece al TRACK DE
PALABRAS, que consume el contrato definido aquí.
provenance: |
Ids entre corchetes = origen: N* (propuesta propia) · G* (Gemini) · C* (ChatGPT)
· F* (Fable) · Z* (z.ai). Detalle y veredictos en el triage.
---
# PLAN — Eje agéntico (`$agent`)
## §1 · Tesis y principios (doctrina, no negociable sin re-firma)
1. **Es un eje, no un componente**: motor (art) + contrato de participación por
componente + registro + superficies propias. Instancia el patrón de eje
ortogonal existente (motor + módulo-por-componente + wiring + canon + guard).
2. **Regla de oro**: el agente actúa por la MISMA API pública del provider; la
ruta de llamada no se bifurca, pero la **concreción semántica depende del
actor** (eventos polimórficos `allowedFamilies` → `{family:'delegate',
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
verb:'act'}` cuando el actor es el agente). Puerta ausente ⇒ se promociona
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
al componente; nunca bypass.
3. **Actor-agnóstico** (libro cap. 29): macro, regla, workflow o LLM — todos
son «otro actor». Nada del eje depende de un proveedor LLM concreto.
4. **Degradación total**: con el eje ausente, todo componente funciona al 100%.
Fila §0 de contratos mínimos obligatoria en F0.
5. **Presupuestos cliente = cortesía de UX, no frontera de seguridad** [F4a]:
la frontera vive donde vive la credencial (proxy/backend). Se declara así
de honesto en la doctrina.
## §2 · Decisiones FIRMADAS (2026-07-21, vinculantes)
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
| D | Decisión |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **D-AG.1a** | Arte `agent` · `$agent` · `EngineAgent` (puro) + `ActiveAgent` (reactivo, contrato ActiveEngine) |
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
| **D-AG.1b** | Factory feature-scoped `defineActiveAgent(...)` a nivel app (patrón auth/session); NADA en ActiveUix v1; promoción a accessor `uix.agent` con el consumidor canónico (precedente scene-D4) |
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
| **D-AG.1c** | Adaptadores de proveedor en `$agent/adapters/*` fuera del barrel (precedente `$logger/adapters`); **ScriptedAgentTransport determinista first-class** (tests sin mocks, demos estáticas) |
| **D-AG.2a** | Protocolo de eventos PROPIO espejo de AG-UI (5 categorías: run · deltas · tool-calls · estado · custom), nombres alineados con el canon; AG-UI = baseline de paridad (patrón ethereal) |
| **D-AG.2b** | El streaming lo posee cada adaptador (fetch+ReadableStream/SSE local); `$http`/`$connection` intactos |
| **D-AG.2c** | Estado = snapshot-por-turno v1; categoría snapshot/delta RESERVADA tipada; JSON Patch en la generalización |
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
Enmiendas menores a D-AG.2 aceptadas en triage (no alteran lo firmado, se
firman con el bloque §3): dirección tipada del canal de estado [F7], mapeo
wire de review/elicitación como confirmation-tool [F3e], versionado de
protocolo y manifiestos en el handshake del run [F12].
## §3 · Decisiones A FIRMAR (consolidadas del triage)
> Cada bloque es una decisión firmable. ⚖️ marca las bifurcaciones con
> alternativas reales donde hace falta TU elección; el resto lleva la forma
> recomendada ya consensuada por la revisión cruzada.
### D-AG.3 — Modelo de dominio y sesión [N1 · G1 · C1 · C3 · F2]
- **La escalera, documentada**: `ActiveAgent` = **sesión** (larga vida,
contexto entre runs — «hazlo otra vez en la sección 2») → `Run` =
**delegación** (presupuesto, autorización, agrupado de undo, devolución de
control) → `Turn` = coordinación → `CapabilityCall` = **mutación** (lo único
que toca el mundo). Conversation = superficie opcional que encadena runs.
- **Run degenerado**: una sola call auto-autorizada (macro/regla/workflow —
el caso no-IA del libro) es un Run válido y barato.
- **`initiative`** [C3]: `'user' | 'system' | 'scheduled'` en la identidad del
Run, viajando en el contexto de actor de cada call. Alimenta política
(D-AG.7), a11y y audit. El verbo de entrada la insinúa (`offer`-first =
iniciativa del sistema).
- **Reservas** (huecos declarados, no construidos): `parentRunId` (sub-runs /
agente-como-capacidad / A2A) [C6]; identidad de usuario en el vocabulario de
actor (multiusuario, llega con `connection`) [F12].
- ✅ **Modo ambiental** (always-on) [F2a·G1·C6] — **FIRMADO ⚖️1: fuera del eje
v1, RESERVADO CON NOMBRE**: `Subscription`/watcher que emite `delegate.offer`;
micro-runs coalescidos = diseño futuro (F5). Deja constancia para que no
crezca un segundo sistema de agencia paralelo por la puerta de atrás.
### D-AG.4 — Máquina de estados del run [N2 · C2 · G4 · G5 · F3]
- Estados = verbos `delegate`, **como custodia del control, no fases
cognitivas** [C2]: el ciclo plan→tool→plan del modelo vive DENTRO de
`acting`.
- **`reviewing` re-entrante** desde `acting` [C2·F3a] (aprobaciones
parciales/incrementales).
- **La autorización fija alcance** [F3a]: `authorized` deriva del plan un
**allowlist de capacidades + presupuesto**; un act fuera de alcance ⇒
`escalate` automático a re-review (ni fallo ni silencio). Sin esto, la
review es teatro.
- **`returned` con outcome tipado** [F3b·G4]: `completed | partial |
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
rolled-back | aborted | error`, con `reason` (p. ej. `superseded` — la
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
premisa cambió por mutación externa; `budget-exhausted`; `killed`).
**Política de fallo a mitad de secuencia — FIRMADO ⚖️3: rollback a
inicio-de-run por defecto** (el usuario autorizó el plan entero, no la
mitad; reversión vía historia nativa); una capacidad puede DECLARAR en su
manifiesto que admite cierre parcial cuando tenga sentido.
- **`escalated`**: no terminal; `reason` tipado (`elicitation |
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
insufficient-scope | budget-exhausted | out-of-plan`) [F3d]; **timeout →
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
auto-return** (escalada abandonada) [G5].
- **Pausa sin verbo nuevo** [F3c]: pausa = `return` con contexto reanudable;
reanudar = run nuevo encadenado en la sesión (coincide con el `resume` de
AG-UI — la mecánica wire y nuestra semántica convergen).
- **Interrupción del usuario = `return` inmediato**, jamás error.
- **Kill switch global** [F12]: primitiva del motor (`disable()`) → todos los
runs `returned(aborted)`. Cubre «agente presente pero desactivado YA».
### D-AG.5 — Tool-loop y presupuestos [N3 · G2 · G3 · F4]
- Loop en `EngineAgent`, cliente, v1; **portabilidad a servidor como requisito
explícito** del núcleo (sin DOM, sin runes en el Engine) [F1c].
- Acts **secuenciales** v1. Fallos tipados → verbos (recuperable→retry acotado
· alcance→`escalate` · abortado→`return`); clase **`unknown-capability`**
(tool alucinada) devuelta como tool-result para auto-corrección, acotada por
presupuesto [F4c].
- **Presupuestos first-class**: máx. acts/run · máx. turns · timeout
(uix.timers) · **tokens/contexto con política de truncado local**
(FIFO + resumen) [G3·Z2] · `AbortSignal` en cada capacidad. Agotamiento ⇒
`escalate`, jamás silencio. (Los guards de orca NO alcanzan este loop —
verificado.)
- **Idempotencia** [G2·Z3]: dedupe por `toolCallId` en la puerta de capacidad;
reintento tras timeout de red devuelve el resultado cacheado, nunca
re-ejecuta.
- **Topología de credenciales** [F4a]: adapter-proxy hacia el backend del app
como topología de primera clase documentada; directo-a-proveedor desde el
navegador = footgun señalado a gritos.
### D-AG.6 — Contrato de capacidades y reads [D-AG.3 previa · G7 · G11 · C5 · F1a · F4c · F5a · F9]
- **6a Hogar**: contrato estructural en el arte (`AgentCapability`/`AgentRead`:
ids string, args Standard-Schema vía sium, handler opaco — patrón
MotionDom/SceneDom); los manifiestos uix (`src/uix/agent/components/{x}.ts`)
lo satisfacen tipando contra la API del provider. El handler opaco da
location-transparency gratis (reserva distribuida) [C6].
- **6b Proyección model-facing**: emisor **sium→JSON Schema** + `description`
obligatoria por read/act/arg. **Límites de tamaño por arg** en el contrato
[F4c].
- **6c Instancias y contexto — push→pull** [F9·G11]: índice siempre presente
(id estable + tipo + etiqueta + resumen de una línea, jerárquico — valida el
parentId de CopilotKit) + reads profundos como capacidad pull
(`read(instanceId)`) + **priorización por foco/viewport** (señal UIX-nativa)
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
- ambigüedad de direccionado ⇒ **elicitación**, no heurística. `available`
reactivo por act + `capabilities-changed` entre turnos; call pendiente
contra capacidad revocada ⇒ fallo tipado → escalate [C13a].
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
- **6d Resultados**: tipados con sium; los RESULTADOS de reads/acts con
contenido de terceros son tan no-confiables como un documento importado
(misma doctrina de origen) [F4c].
- **6e Traits** [C5]: annotations para el razonador (coste, latencia,
estabilidad, staleness) — precedente MCP tool annotations.
- **6f OCC** [G7·F8d]: cada read exporta `_version`; cada act la exige; mismatch
⇒ `StateStaleError` recuperable (re-read → re-plan).
- **6g Altitud** [C4]: capacidades = mutaciones MECÁNICAS del mundo, pocas y a
la altura correcta (`replaceRange`, no 12 micro-inserts). Operaciones
semánticas (`summarize`, `translate`) = cognición del modelo; «skills»
agent-side reutilizables (equivalente MCP prompts) = tier RESERVADO.
- **6h Tiers de madurez del manifiesto** [F1a]: `reads-only` → `acts
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
reversibles` → `acts completos`; el guard audita el tier declarado; los ~110
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
componentes entran incrementalmente sin gatear el eje.
- **6i Reversibilidad POR-EFECTO** [F5a]: no por-capacidad; efectos externos
(enviar/publicar/notificar) = irreversibles por definición; la autoridad de
reversión es la historia nativa del componente (nunca compensación de orca).
### D-AG.7 — Autorización, consentimiento y política [N5 · G8 · G9 · C3 · F5 · F8]
- Tres niveles (`suggest | review | auto`), resolución estilo prefs (app =
techo, usuario ajusta por debajo, la capacidad exige MÁS control, nunca
menos), **deny-overrides**; irreversible ⇒ review SIEMPRE.
- **Riesgo dinámico por payload** [G9]: el manifiesto declara clasificador de
riesgo sobre args; `auto` escala a `review` por invocación.
- **Origen del contexto en la resolución** [F8b — la unificación]: cada read
lleva etiqueta de origen (`authored-by-user | imported | third-party |
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
other-participant`); **cualquier origen no-confiable en el turno BAJA el
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
techo** (⇒ `review`, o `suggest` para capacidades sensibles). §7.1 del
informe deja de ser amenaza abierta: es una fila más de esta resolución.
- **`initiative` afecta techos** [C3]: iniciativa autónoma (`system` /
`scheduled`) ⇒ defaults más estrictos que la pedida por el usuario.
- **Autorización vinculada al estado, no a la prosa** [F8d]: la review computa
contra fingerprint F de los reads relevantes; la autorización se liga a F +
**TTL**; deriva ⇒ recomputar diff (idéntico → re-aprobación automática
opcional; distinto → re-review). Cierra TOCTOU (§7.2 del informe).
- **Fatiga de aprobación** [F5b]: grants persistentes («siempre permitir X»)
con TTL y alcance explícito (sesión/componente/tipo de act); la review
muestra **el cambio concreto propuesto en el dominio del app, nunca prosa**
(enmendado 2026-07-22 — el contenido de la review es del APP; ver doctrina
«The review surface» en agent.md §7).
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
- **`capabilities-changed` ⇒ re-gate** de grants [F5c].
- **perm** solo para scopes que tocan servidor (aplicado en el proxy/tool-loop
server-side); el caso base es política local sin dependencia de perm.
- **`reads` = sujetos de permiso simétricos a `acts`** (consentimiento de qué
viaja al modelo; componentes sensibles no registran reads).
### D-AG.8 — Semántica, actor y a11y [N6 · G6 · G12 · F1b · F6 · F11]
- El motor NO emite (art sin DOM); expone el run como estado reactivo. Las
**superficies** declaran el ciclo en sus morfos (`delegate-*`;
`sustain-processing` es de Aura, stateBound, limpiado al cerrar). Los
**componentes actuados** concretan `delegate.act` vía `allowedFamilies` con
contexto de actor.
- **Acuñación del actor** [F6b]: el contexto de run es un **token opaco
emitido solo por el motor** por CapabilityCall — no un literal construible;
el guard verifica que nadie en el canon fabrica actores a mano.
- ✅ **Propagación causal del actor** [G6·F6a] — **FIRMADO ⚖️2: híbrido (d)**.
El actor es un **token opaco acuñado solo por el motor** (F6b), llevado como
UN slot reservado en el **envelope causal que el framework ya propaga**
(`OrcaEventMeta` en la vía orca; el bag `context` del envelope de bus en la
vía bus), heredado profundidad-a-profundidad **igual que `traceId` ya lo
hace**, y leído por sema SÍNCRONAMENTE vía un campo `actor?: ActorToken` en
`TriggerOptions → SemanticSignal` (verificado: legible antes del primer
`await` de `EngineSemantic.emit` para `pre`/`coincident`). AsyncContext/ALS
(la cadena `als.ts` de orca) es **auto-relleno oportunista, NUNCA la
garantía** — en navegador degrada a root, que sema no tolera. Esto COMPARTE
el primitivo de propagación con la traza OTel de D-AG.9 (run=trace,
CapabilityCall=span, **actor=baggage**) sin bifurcar la agencia (⚖️1). La
hipótesis OTel-baggage se confirma, corregida por el caveat browser-await:
la fiabilidad viene del envelope explícito; lo ambiental es azúcar.
**Enmiendas vinculantes del stress-test**:
1. **Justificación corregida**: explícito gana a ambiental por integridad de
**AUDIT / provenance de efectos secundarios** (WAL D-AG.9 + traza OTel),
NO por anuncio síncrono per-emit — el anuncio va COALESCIDO POR PLAN por
Aura (WCAG 4.1.3), nunca per-act, y `data-actor` es pintura derivada del
MODELO (eidos lee el estado reactivo del run). Sema lee `signal.message`
verbatim y NO resuelve el token de actor.
2. **Hogar del tipo**: el tipo branded `ActorToken` vive en una **hoja bajo
orca Y agent** (`$libs` o arte-hoja) para evitar el ciclo orca→agent; la
autoridad de acuñar/resolver queda en `EngineAgent`. La vía bus lleva el
actor en el bag `context` sin tipar → su defensa anti-forja es el lint de
`agent-check` (D-AG.11), no el sistema de tipos.
3. **«Ya propaga» corregido**: el contexto causal NO cruza hoy la
suscripción bus→orca (solo `payload`), ni `publishCausedBy`
(solo causation/correlation), ni `withOptionalEnvelopeFields`; incluso
`traceId` se re-enraiza ahí. El retrofit es **acotado y presupuestado en
~6 costuras**: `OrcaEventMeta.actor`, `OrcaALSContext.actor`, forwarding
de `ctx.emit`, copia en `buildChildEnvelope`, forwarding de
`busEnvelope.context.actor` en la suscripción, y `publishCausedBy` +
`withOptionalEnvelopeFields` con merge del padre.
4. **Garantía acotada + fasing**: la garantía síncrona/autoritativa se
entrega para el **puente A→B autorado explícitamente** que hila
`opts.actor`. Agente-mueve-componente-de-stock por la API pública NO tiene
call-site → en navegador (ALS muerto) resuelve al **sentinel `USER`
branded** = best-effort, fuera de v1, NO se cierra con plumbing pervasivo
en providers. La atribución IN-SCOPE viaja por el `data-actor` derivado
del modelo (sin hilar `opts.actor`); la baggage del envelope es
específicamente para **efectos secundarios out-of-scope + audit**.
**F1 construye SOLO el primitivo** (ActorToken branded + sentinel USER +
registro privado + guard anti-forja + `actor?` en TriggerOptions leído en
el prepare-loop de emit). **El retrofit de propagación (enmienda 3) se
DIFIERE** a la fase con un consumidor real de cascada async out-of-scope
(F3+), gateado por el drift-check del guard (ambiental nunca es el único
portador en un puente cross-componente).
- **Run sin superficie = prohibido por encima de suggest** [F1b]: autonomía >
`suggest` exige superficie de presencia registrada (Aura mínima); el motor
rehúsa (o advierte) al entrar en `acting` sin ella. Verificable.
- **Write-scope declarado** [G10]: el run declara su alcance de escritura
(componente | parte | rango); hold y pintura aplican solo a ese scope.
(Materialización por componente → track palabras.)
- **Contrato a11y del eje** [F11·G12·Z11]:
1. UNA live region `polite` propiedad de Aura; anuncios **atribuidos**
(«Agente: …») y **coalescidos por lote/plan** — jamás por delta ni por
act individual (WCAG 4.1.3).
2. **No-robo-de-foco como invariante del MOTOR** (WCAG 3.2.1/3.2.2), no
cortesía de cada superficie.
3. `aria-busy` en la región mutándose durante streaming; anuncio de
completitud al cerrar.
4. Elicitaciones **posponibles**, no modales por defecto (WCAG 2.2.4).
5. **Salida global por teclado** (doctrina Esc): cancelar/return alcanzable
sin ratón. Aura `reduce: 'static-frame'`, jamás `hide`.
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
Oportunidad §8.3: nadie tiene este patrón — documentarlo es fijarlo.
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
### D-AG.9 — Persistencia, audit y observabilidad [N8 · F10 · F12]
- v1: sesión en memoria (`snapshot()`) **+ journal write-ahead mínimo por run**
vía `$storage` (sessionStorage vale): autorizaciones + acts aplicados;
detección de runs huérfanos al recargar [F12]. (Orca no puede ser store —
verificado.)
- **Puerto de trazas con forma OTel GenAI** [F10]: run = trace, CapabilityCall
= span — el puerto se define YA, el vehículo de almacenamiento llega
después. Responde §7.3 del informe. **Comparte el primitivo de propagación
con el actor** (⚖️2, D-AG.8): un solo carrier de contexto causal, cargas
distintas (traza = export async/tolerante a pérdida; actor = lectura
síncrona/autoritativa). En el borde de export se emite una etiqueta
no-autoritativa (`'agent'`) para observabilidad; el token resoluble nunca se
serializa (anti-forja F6b).
- Persistencia de conversaciones/historial entre sesiones: adapter `$storage`
opcional, diferida con hueco.
### D-AG.10 — i18n del agente [F12 · cruce con eje langs]
`identity`/system-context lleva el locale efectivo (`prefs.language`); el
idioma en que el agente responde y en que se ANUNCIA (live region, superficies de review del app)
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
sigue el eje langs como cualquier superficie. Los textos del eje (anuncios,
estados) = catálogos `langs/components/` normales.
### D-AG.11 — Guard mecánico `agent-check` [F1a · F5a · F6b · F12 · crítica previa]
Nace CON el árbol de manifiestos (no después). Audita: manifiesto ↔ API
pública real (drift tipado) · tier de madurez declarado [F1a] · veracidad de
reversibilidad por-efecto (review-always para APIs de reemplazo destructivo)
[F5a] · **calidad model-facing** (descriptions no vacías, args descritos,
clases de fallo declaradas — determina si el modelo usa bien las capacidades)
[F12] · anti-falsificación de actor (ningún sitio del canon construye
contextos a mano) [F6b] · no-bypass (todo act mapea a puerta emisora).
## §4 · Secuencia de fases
> Regla heredada del precedente blocks/scene: decisiones firmadas ANTES de
> código; guard en la misma fase que crea la superficie que vigila; doctrina
> con gate propio.
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
| Fase | Contenido
| ----------------------------------------------------------- | -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| **F0 · Doctrina** ✅ (doc) | `docs/architecture/agent.md` ESCRITA + registrada en el índice: capítulo comparativo (matriz 6 refs + bibliografía de seguridad) · tesis+principios · dominio+máquina de estados · contrato de participación · **fila §0** · actor primitivo (⚖️2) · autorización · a11y · amenazas. **Corrección**: la fila §0 vive en la DOCTRINA (§4 del doc), no en `src/uix/contracts.ts` — el agente es un arte APP-level (D-AG.1b), no una capa UIX; su degradación se verifica en la suite del arte (`arts:check`) cuando F1 cree `arts/agent`, no en el boundary-test de UIX
| **F1 · Motor mínimo** ✅ (2026-07-21) | **ENTREGADO** — `src/libs/actor` (ActorToken branded + sentinel `USER_ACTOR`) · `src/arts/agent` (24º arte, alias `$agent`): `EngineAgent` (máquina D-AG.4 completa — suggest/review/auto, escalated con reason+timeout, returned outcome-tipado, cancelled pre-autorización, kill switch, autorización journaled incluso auto; loop D-AG.5 — acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock, AbortSignal; techo por origen no-confiable F8b; acuñación de actor con registro privado WeakMap — forjados resuelven a null) + `ActiveAgent` (sesión reactiva, contrato ActiveEngine, `activeRun` para Aura) + puerto `AgentTransport` + protocolo v1 (`protocol.ts`: 5 categorías + dirección tipada + reservas state/elicitación + versionado) + `ScriptedAgentTransport` (`$agent/adapters/scripted`, fuera del barrel) + journal WAL (memory + webStorage, detección de huérfanos) + puerto de trazas OTel (run=trace, call=span, label no-autoritativa) + emisor sium→JSON Schema (`toJsonSchema`, nota de promoción a $sium al 2º consumidor) + costura `actor?` en `TriggerOptions→SemanticSignal` (runtime copia verbatim; sema no resuelve) + **`defineActiveAgent`** (service-factory app-level D-AG.1b: adapta el `ActiveTimers` del core al puerto `AgentTimersPort` + logger del core — cero setTimeout a pelo en runtime; tests con puerto manual determinista + flush `settle()` nombrado).
| **F2 · Piloto palabras** | ESTE track entrega: capacidad tipada contra la API de palabras + OCC (\_version) + write-scope + journal. El TRACK PALABRAS entrega su lado (4 ejes F-B firmados allí, puertas mudas promocionadas, `api.transact`, concurrencia espacial). Corre contra ScriptedAgentTransport
| **F3 · Semántica + superficies** ✅ CERRADA (2026-07-22) | `allowedFamilies` delegate en el 1er componente actuado (→ REUBICADO a F2: su hogar natural es el piloto, el primer componente actuado real) · **Aura** (dueña de sustain-processing; live region; reduce static-frame) · ~~review-card~~ **DESCARTADA como componente** (anclaje dev-tools; resolución 2026-07-22 con el usuario: framework = estados del ciclo expresados + afordancias authorize/reject/cancel — que Aura YA da — + semántica de «propuesto por otro actor»; el CONTENIDO de la review es del APP en su propio dominio; una tarjeta-diff es legítima a nivel de una app concreta, jamás canon — doctrina «The review surface» en agent.md §7) · pack sema de los eventos de superficie (resuelto: family-default, decisión firmada de capa 1). **Progreso 2026-07-21 — Aura fases 0–1 ✅**: decisión de pertenencia (SOMA; compose-first: orb=$scene en eidos, cancel=Button asChild, región propia espejo de Announce) + **morfo `aura.ts`** — EL PRIMER morfo del repo con eventos familia `delegate` (delegate-offer · delegate-escalate untilAction · delegate-return, los tres con requiresLiveRegion) + `sustain-processing` stateBound (dueña Aura, target indicator) + 5 partes (provider/indicator/status/**region** role=status aria-live=polite aria-atomic/cancel trigger) + texts (estados + anuncios atribuidos «Agent: …») + `expression: 'family-default'` (el perfil bajo de delegate es decisión firmada de capa 1; la modulación por intent de §F6 es visual → eidos/scene). Verificado: morfo:vocabulary limpio (solo WARN preexistente de cropper) · esquemas 114/114. Gotcha de convención: la clave de `stateRef` debe ser un VALOR representativo del vocabulario declarado (precedente progress/file-upload), no un nombre conceptual. **Fase 2 soma ✅ (2026-07-21)**: `soma/components/aura/` completo — provider raíz con puerto estructural `AuraAgentSource` (duck-type de ActiveAgent; soma NO importa $agent — degradación total: sin agente = idle válido), watcher de transiciones en constructor ($effect + untrack, cero write-loops), mapeo custody-of-control (authorized→acting; terminales→idle), `sustain-processing` stateBound con clearSignal al salir + guard de carrera (si el run avanzó antes de resolver el emit), `delegate-escalate` untilAction + clear en resolución, `delegate-return` = anuncio único consolidado atribuido en la Region PROPIA (role=status/polite/atomic — sin doble anuncio por la vía compartida), cancel() = salida global (disabled en idle, aria-label langs) + 5 wrappers + types + exports + README + catálogo `langs/components/aura.ts` (es/en) registrado + barrel soma. **Test 6/6** con `EngineSemantic({visual:false})` REAL (la degradación explícita del §0) — prueba emits/persistencias/clears de verdad; contracts sweep verde (solo los 2 fallos AJENOS preexistentes); svelte-check 0 errores propios. **Fases 4–5 eidos+recipe ✅ (2026-07-21)**: `eidos/components/aura/` completo — root `<Aura>` (data-size responsive sm/md/lg) · `<Aura.Indicator>` = el orb: **aurora `$scene` real** montada con el patrón de ciudadanía del pack (engine por superficie DOM WeakMap — eidos NO importa $packs, frontera dura), params modulados por estado según §F6 (velocidad/amplitud/hue: idle .35/.45 neutral → acting 1.2/1 primary → escalated 1.7/1.15 **threat**; reviewing **risk** — mapeo canon de intents), colores vía `eidos.resolveToken('--color-{role}-solid')` (jamás getComputedStyle), fallback = gradiente radial CSS del recipe (ES el render bajo reduced-motion static-frame del engine / SSR / effect off — la presencia nunca desaparece) · `<Aura.Cancel>` compone `<Button>` vía child/asChild (defaults diferidos al Button canónico — regla de la casa, sin ghost/neutral hardcodeado) · Status/Region passthrough · recipe `aura.css` sin @keyframes (R-4.5: el movimiento es del scene) + región sr-only + tokens `aura` en base.ts (orb-size por talla, tinte por estado en slots de rol re-tintables por tema). **Gates**: generate:eidos-css
| **F4 · Generalización** | Árbol `src/uix/agent/components/` + registro por instancia (índice push→pull) + **`agent-check`** (D-AG.11) + 2º consumidor (chat agéntico: participante + redactor + slot de actividad de tool) + elicitación materializada (Form.AutoFields) + promoción `uix.agent` (cierra D-AG.1b)
| **F4a · Marco de integración APP** ✅ (2026-07-22) | **Auditoría completa del track** (encargo del usuario: divergencias + marco independiente del componente). Divergencias CAZADAS y CORREGIDAS (4 firmadas sin implementar): initiative→techo (C3: system/scheduled clampa auto→review) · presupuesto de contexto D-AG.5 (maxContextBytes, FIFO-trim byte-based, el goal sobrevive; resumen diferido) · tope por-arg F4c (maxArgBytes→invalid-args tipado) · schema de resultado D-AG.6d (`result?` Standard-Schema; mismatch = recoverable, no cuenta como act). Divergencias ESTRUCTURALES resueltas: **integración bus** (patrón session EXACTO: el arte posee el vocabulario `agent.*` en consts + bus-helpers tipados publican con bus INYECTADO; `defineActiveAgent` cablea `core.bus`; source='agent', **correlationId=runId** = la costura causal ligera sin el retrofit de 6 costuras) · **orca app-land** (el APP registra acciones sobre `agent.run.closed/escalated` — invariante intacto; probado con orca REAL) · **página del arte `/active/docs/agnt`** (convención de la casa que faltaba: sección Delegation en nav, artículo + **playground VIVO** con los 4 motores puros reales compuestos en página — bus log en vivo, journal WAL, contador orca, kill switch reactivo, compuertas deterministas). Gates: agent 26/26 (integration.test: spine motor→bus→orca real + los 4 fixes) · smoke agnt PASS · check 0 propios · verificado en pane + Chrome real (ciclo completo, orca archiva, kill oculta drivers). Divergencias DIFERIDAS con disposición: resumen semántico de contexto (F5) · superseded producido por OCC (F2, lado componente) · wiring identity.locale←prefs (F4 con uix.agent) · journal por defecto en factory (app decide vehículo). **Auditoría de conformidad bus/orca ✅ (2026-07-22, pregunta del usuario)**: contraste punto-a-punto contra los README de ambos — conforme en 12/13 (module-events consts+types+bus-helpers = patrón documentado literal · envelope correlationId · Rule 5 payloads planos clonables · eventos-como-constantes · module→bus/action→ctx.emit · artifacts-no-consumen-orca · Rule 7 N/A a module events). **1 no-conformidad real corregida**: `goal` (contenido del usuario) viajaba en `AgentRunBusPayload` — viola higiene de credenciales del bus («pasa correlationId y que el suscriptor resuelva del módulo») y §Events de orca («no unnecessary private data — la acción resuelve del módulo al ejecutar»). Fix: payload = SOLO metadata; el suscriptor resuelve vía `App.agent.run(runId)` (testeado en el spine con orca real: `'goal' in payload === false` + resolución del módulo). Página agnt documenta la higiene + recomendación `configureEvent('agent.run.state', { queuePolicy: ORCA_QUEUE_REPLACE_QUEUED })` (evento frecuente → doctrina de colas de orca; constante verificada). **Carril de INICIATIVA documentado (2026-07-22, pregunta del usuario «¿el bus como eje?»)**: el bus es eje en TRES direcciones — observar (vocabulario `agent.*`) · reaccionar (orca) · **iniciar** (hecho de dominio → acción orca → `App.agent.start({initiative:'system'})` → clamp auto→review por construcción); lo que NO es: vehículo de la delegación (capacidades=handlers no clonables, turnos=request/response del protocolo, contenido en el módulo). Sección «The bus as the initiative axis» + ejemplo en la página. **Adaptador REAL `openai-chat` (2026-07-22)**: `$agent/adapters/openai-chat` (fuera del barrel, D-AG.1c) — dialecto OpenAI chat-completions (Ollama/llama.cpp/LM Studio/proxy), SSE→protocolo v1, sanitización de nombres con puntos (ida y vuelta), **re-pairing de `tool_calls`** al reproducir el transcript (el motor no anota los tool_calls del assistant — memoria por callId en el adaptador), fetch inyectable. **Fix cazado en vivo**: Ollama reutiliza `index:0` para TODAS las calls del stream → call nueva se detecta por `id` distinto (no por index), `call-end` por call arrancada; sin el fix los args se concatenaban (JSON inválido → invalid-args en motor + 400 en replay). Tests 4
| **F5 · Reservas** (cada una con gate propio, ninguna en v1) | deltas JSON Patch · skills semánticas (6g) · modo ambiental (si D-AG.3 lo firma dentro) · sub-runs/A2A · multiusuario · `svrs/agent` (solo si un consumidor real exige autoridad de servidor — respeta «transport app-land»)
## §5 · D-AG.12 — el contrato como REFERENCIA ✅ FIRMADA (2026-07-23)
Pregunta original del usuario (2026-07-22): «¿es el mejor diseño o podemos ir
más allá y establecer una referencia?». Firmada tras investigación a fondo el
2026-07-23 (precedente externo verificado a esa fecha, no de memoria).
### D-AG.12a — la spec y su conformance
Se extrae de `docs/architecture/agent.md` una **especificación normativa** —
«el contrato de delegación», en `docs/spec/` — con:
- lenguaje RFC-2119 e **IDs de requisito estables** (`AG-1…n`),
- **escalera de estabilidad por sección**: `stable | provisional | reserved`,
- **versionado por fecha** (patrón MCP: la fecha marca el último cambio
incompatible),
- la doctrina se queda como el PORQUÉ; la spec es el QUÉ.
**Conformance en DOS vehículos, no uno** (la distinción es la que evita que
«suite de conformance» sea retórica — un lint del propio repo no acredita a
nadie):
| Estrato | Vehículo | Naturaleza |
| ------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
| Wire protocol v1 | **kit de fixtures** (semilla: `ScriptedAgentTransport`) | PORTABLE — un tercero lo corre contra SU implementación |
| Contrato de participación | **`agent-check`** (D-AG.11) | lint del repo sobre manifiestos |
Ambos **citan IDs de requisito en sus fallos**. Sin eso la suite no acredita.
**Estado inicial: DRAFT.** La spec se escribe ANTES de F4b para que F4b se
construya CONTRA ella (spec-first), no después para describir lo que salió.
### D-AG.12b — las dos reclamaciones de frontera
Se nombran en la spec **con marcador de estado explícito** (`claimed` vs
`shipped`), porque hoy ninguna está materializada:
- **contexto por atención** — reads push→pull priorizadas por focus/viewport
(señal UIX-nativa; F4). Hoy `claimed`.
- **delegación como transacción** — run = grupo de undo + OCC + write-scope +
`superseded` (⚖️3 + F2). Hoy `claimed`.
### Gate de promoción a 1.0 / «referencia»
**≥2 FORMAS DE DOMINIO distintas**, no «2º consumidor» (corrección firmada el
2026-07-23; ver §5b) + las dos claims con estado `shipped` + kit de fixtures
en verde. Precedente externo que lo respalda: **MCP** ya no promueve a Final
sin escenario en la suite (SEP-2484) y opera lifecycle formal
Active→Deprecated→Removed con ventana de 12 meses; **AG-UI** se volvió
referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework),
no por publicar suite. Conclusión: la spec se escribe antes para gobernar; el
título de referencia se gana después, con consumidores y claims reales.
Posición honesta que la spec DEBE declarar: acts secuenciales v1 ·
cliente-first con portabilidad exigida (`svrs/agent` diferido a consumidor
real) · generalidad en prueba.
## §5b · Quién prueba el eje — FIRMADO (2026-07-23)
El gate de F4 pedía «2 manifiestos reales» **sin asignar dueños**. Esto
rellena ese hueco; no enmienda nada firmado.
**Criterio** (el que sustituye a «el que esté disponible»):
> El probador debe ser aquel cuyo manifiesto sea el **más difícil de
> expresar** — un formato lo decide su caso peor, no su caso fácil.
Aplicado, y con una razón que no es de conveniencia sino de **anatomía del
propio contrato**: los args de una capacidad SON schemas (sium →
`toJsonSchema`, F1 construido) y un run ES una transacción sobre un conjunto
de ediciones. Esquema y conjunto son las dos formas de las que el contrato
está hecho:
| Dueño | Forma | Qué fuerza a resolver |
| ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **`form`** | esquema | Args tipados vía sium + validación + write-scope por campo. Es el ÚNICO componente cuyo manifiesto el motor ya sabe escribir: agente→componente (args contra campos) y componente→agente (elicitación) son **la misma proyección en los dos sentidos** |
| **`table` / `tree-grid`** | conjunto | Actos sobre selección de N filas, OCC por fila, batch como transacción, `superseded` real. La claim «delegación como transacción» solo aguanta carga aquí; sobre texto es casi trivial |
**Chat y palabras son CONSUMIDORES, no jueces.** Chat entra por lo que solo
él da (provenance por modelo de mensaje · slot de actividad de tool · vista
conversacional de un run); palabras es un actuado más cuando su gate abra.
Ninguno decide el formato del manifiesto ni el gate de la spec. Riesgo que
esto evita, y que era real: chat y palabras son **ambos texto lineal**, así
que un manifiesto probado solo ahí asumiría texto en silencio (rango como
selección, ediciones secuenciales, args string) y el caso peor aparecería
tarde. Dato del inventario al firmar: **170 morfos, 0 declaran capacidad
`delegate`**.
**Corolario firmado — la elicitación NO depende de superficie conversacional.**
Una pregunta tipada es un formulario en contexto: `Form.AutoFields` (ya
previsto en F4) la materializa, descartable y no-modal, que es justo lo que
exige el contrato a11y (WCAG 2.2.4). La nota del protocolo v1
(«materializes with the conversation surface») describía UNA opción, no una
necesidad; corregida en `protocol.ts`.
### La entrada de delegación — patrón, no componente
Materializar el encargo (goal + contexto visible + autoridad) es un **patrón
con pieles**, montado en app-land con piezas del framework — mismo veredicto
que la review-card: el framework da estados, afordancias y piezas; el APP da
el contenido en su dominio. Lo que el servicio aporta —reads priorizadas por
atención— llega **cuando exista** (F4). **Descartado explícitamente** una
entrada global siempre-disponible: roza el modo ambiental, que está FIRMADO
FUERA (⚖️1) y no se recupera por la puerta de atrás.
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
## §5 · Bifurcaciones que requieren TU elección (⚖️)
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
| # | Decisión | Estado |
| --- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ⚖️1 | Modo ambiental (D-AG.3) | ✅ FIRMADO: fuera-reservado-con-nombre |
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
| ⚖️2 | Propagación causal del actor (D-AG.8) | ✅ FIRMADO: híbrido — token opaco de actor como baggage del envelope causal (comparte primitivo con la traza OTel); F1 solo el primitivo, retrofit ~6 costuras diferido a F3+ |
docs(agent): D-AG.12 y §5b firmadas — la spec, y quién prueba el eje Dos decisiones que estaban pendientes, firmadas tras investigación a fondo (precedente externo verificado a fecha, no de memoria). D-AG.12 — EL CONTRATO COMO REFERENCIA Spec normativa en `docs/spec/` (RFC-2119 + IDs `AG-n` + escalera stable|provisional|reserved + versionado por fecha), en estado DRAFT para que F4b se construya CONTRA ella y no al revés. La doctrina se queda con el PORQUÉ. Conformance en DOS vehículos, que es lo que evita que la palabra sea retórica: kit de fixtures del protocolo (PORTABLE — un tercero lo corre contra SU implementación; semilla ScriptedAgentTransport) + agent-check (lint del repo), ambos citando IDs de requisito en sus fallos. Las dos claims de frontera se nombran con marcador claimed|shipped porque hoy ninguna está materializada. Gate de promoción a 1.0: ≥2 formas de dominio + claims shipped + fixtures verdes. Respaldo externo: MCP ya no promueve a Final sin escenario en su suite (SEP-2484) y opera lifecycle formal con ventana de 12 meses; AG-UI se volvió referencia por ADOPCIÓN (AWS Bedrock AgentCore, Microsoft Agent Framework), no por publicar suite. La spec se escribe antes para gobernar; el título se gana después. §5b — QUIÉN PRUEBA EL EJE: form + table El gate de F4 pedía «2 manifiestos reales» sin asignar dueños; esto rellena ese hueco, no enmienda nada. El criterio deja de ser disponibilidad y pasa a ser dificultad: un formato lo decide su caso peor. Y form+table no son preferencia, son la ANATOMÍA del contrato — los args de una capacidad SON schemas (sium → toJsonSchema, ya construido en F1) y un run ES una transacción sobre un conjunto de ediciones. Form además dobla: agente→componente (args contra campos) y componente→agente (elicitación) son la misma proyección en los dos sentidos. Chat y palabras quedan como CONSUMIDORES, no jueces. El riesgo que esto evita era real: ambos son texto lineal, así que un manifiesto probado solo ahí habría asumido texto en silencio (rango como selección, ediciones secuenciales, args string) y el caso peor habría aparecido tarde. Inventario al firmar: 170 morfos, 0 con capacidad delegate declarada. COROLARIO — la elicitación no depende de superficie conversacional Una pregunta tipada es un formulario en contexto (Form.AutoFields), descartable y no-modal, que es justo lo que exige el contrato a11y (WCAG 2.2.4). La nota de protocol.ts («materializes with the conversation surface») describía UNA opción y se leía como necesidad: corregida ahí y en la doctrina §7. DESCARTADO Entrada de delegación global siempre-disponible: roza el modo ambiental, que está FIRMADO FUERA (⚖️1), y no se recupera por la puerta de atrás. La entrada es un patrón con pieles montado en app-land — mismo veredicto que la review-card. Handoff `continue-agente-2026-07.md` reescrito para mañana: la spec DRAFT es lo primero, luego el kit de fixtures, luego F4b con los dueños ya firmados. Verificado: agent 30/30 · agent:check limpio · docs:check sin errores nuevos (el único es el preexistente ajeno de callout). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
| ⚖️3 | Fallo a mitad de secuencia (D-AG.4) | ✅ FIRMADO: rollback-a-inicio default; parcial por-capacidad |
| §3 | D-AG.3–D-AG.11 (forma recomendada) | ✅ FIRMADO EN BLOQUE (2026-07-21) |
feat(agent): eje agéntico — motor $agent (F1) + Aura + promoción uix.scene Materializa el eje ortogonal agéntico del ecosistema: la 8ª familia semántica `delegate` («¿quién actúa ahora?») deja de estar sin materializar. El agente es OTRO ACTOR (LLM, macro, regla, workflow) que actúa por la MISMA API pública del provider; la ruta de llamada no se bifurca, la concreción semántica depende del actor. F0 · Doctrina - docs/architecture/agent.md — la doctrina permanente (capítulo comparativo de referencias + bibliografía de seguridad, máquina estados=verbos, contrato de participación, fila §0, a11y, amenazas). - docs/process/{PLAN,TRIAGE,INFORME}-agent — plan de ejecución con todas las decisiones firmadas (D-AG.1–11 + ⚖️1/2/3), triage de 4 revisores externos, e informe autocontenido para revisión externa. F1 · Motor ($libs/actor + arts/agent, 24º arte) - EngineAgent puro (sin DOM/runes, portable a servidor): máquina D-AG.4 (suggest/review/auto · escalated con reason+timeout · returned outcome-tipado · kill switch · autorización journaled aunque sea auto), tool-loop D-AG.5 (acts secuenciales, fallos→verbos, unknown-capability acotado, idempotencia por callId, presupuestos acts/turns/wall-clock vía puerto de timers), techo de autonomía por origen no confiable (F8b). - ActiveAgent (sesión reactiva, contrato ActiveEngine) · protocolo v1 espejo AG-UI (5 categorías + dirección tipada + reservas) · ScriptedAgentTransport determinista (adapters/ fuera del barrel) · journal WAL + puerto de trazas OTel · emisor sium→JSON Schema. - Acuñación del actor (⚖️2/F6b): ActorToken opaco en $libs/actor (hoja bajo orca/agent), registro privado WeakMap — los forjados resuelven a null; costura `actor?` en TriggerOptions→SemanticSignal (runtime copia verbatim; sema no resuelve). defineActiveAgent (service-factory app-level, timers del core — cero setTimeout a pelo). F3 · Aura — primer componente del eje (ruta 9 fases 0–6) - El materializador canónico de `delegate` (reservado en scene §F6): morfo con los eventos del ciclo (offer/escalate-untilAction/return + sustain-processing stateBound) — PRIMER morfo del ecosistema que emite familia delegate; provider soma que observa un puerto estructural (sin importar $agent — degradación total); orb eidos = aurora $scene modulada por estado (§F6) con fallback CSS = render de reduced-motion; live region única atribuida (WCAG 4.1.3); cancel compone Button (asChild). Demo v2 sobre el MOTOR REAL con compuertas deterministas. Orb-size derivado de la primitiva Avatar (32/40/48). D4 · Promoción uix.scene (Aura llegó) - defineEngineScene + superficie ActiveUix/ActiveEidos/contracts; el orb prefiere el motor compartido (presupuesto de escenas global) con fallback por-superficie. Gates: arts/agent 18/18 · aura 6/6 · arts:check 24 · eidos battery + recipe 30/30 + eidos-lint aura 0 inválidos · morfo:vocabulary + esquemas · smoke aura PASS · verificado en navegador (ciclo completo + estampa delegate en DOM + aurora WebGL pintando). Los tokens de recipe base.ts + CSS generado ya entraron en HEAD vía una sesión concurrente. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
## §6 · Qué NO entra en este track
Los 4 ejes de F-B de palabras, la provenance en el modelo del documento
(`Block.origin`), las puertas mudas del provider, `api.transact` y la
materialización del write-scope → **track palabras**. La doctrina de
`data-actor` como pintura derivada del modelo queda enunciada aquí
(D-AG.8/triage) y materializada allí.

Powered by TurnKey Linux.