12 KiB
| title | type | date | branch | plan | doctrina |
|---|---|---|---|---|---|
| CONTINUE — Eje agéntico ($agent) · sesión siguiente | process / handoff | 2026-07-23 | alpha-0.1-sec-dom (COMPARTIDA entre sesiones — disciplina abajo) | PLAN-agent.md (el acta completa, fila a fila) | docs/architecture/agent.md |
CONTINUE — Eje agéntico ($agent)
Track del agente como tal (la integración por componente pertenece al
track de cada componente). Todo lo firmado, ejecutado y verificado está
actado en PLAN-agent.md; este documento es el punto de
reanudación.
Estado al cierre (2026-07-23)
Fases cerradas: F0 doctrina · F1 motor · F3 Aura completa (0–8, audit
PASS) + promoción uix.scene · F4a marco de integración APP (bus + orca +
página del arte + conformidad documental 13/13 + adaptador real + demo con
modelo real + presencia perceptible + superficie radial).
Commits de la última sesión (todos en gita/alpha-0.1-sec-dom):
| Commit | Qué |
|---|---|
fa7189056 |
Conformidad bus/orca — goal (contenido de usuario) FUERA del bus payload; suscriptor resuelve App.agent.run(runId) |
447a87239 |
Adaptador openai-chat (Ollama/llama.cpp/LM Studio) + carril de iniciativa del bus (hecho→orca→start({initiative:'system'})→clamp) |
595040b73 |
Aura como superficie de presencia de la demo real (boot uix standalone en agnt, createActiveAgent) |
97ae19da5 |
Docs de configuración del transporte en la página agnt (opciones + dev-directo vs prod-proxy) |
d008605fa |
Aura.Indicator default = efecto orb de $scene (el aurora leía estático a 32-48px); aurora queda variante |
0ab40cdce |
Aura al centro de un OnionMenu — afordancias radiales por estado, auto-open con re-aserción mientras la custodia espera |
Verificado E2E en Chrome real contra qwen3-coder:30b (Ollama local):
ciclo completo (3 acts, doc mutado, answer es, bus trail entero) y escalada
real por doc.clear → anillo auto-abierto con orb ROJO al centro → Deny →
returned(aborted, user-cancel) + documento intacto.
Sesión 2026-07-23 — la superficie visible
Rediseño dirigido por el usuario sobre un banco de mockups (con el orbe REAL corriendo dentro, no dibujos). Lo firmado y ejecutado:
| Qué | Detalle |
|---|---|
Anillo de custodia (Aura.Ring, parte nueva del morfo) |
El estado se lee como FORMA: raíl punteado · arco que respira - segmentos = pasos (laten) · dos arcos QUIETOS esperando tu revisión · arco que gira actuando - anillo cerrado + pulso saliente. Ningún estado depende del color. Movimiento = loops registrados (data-animation-style), nunca @keyframes de receta |
| El orbe es un contorno | thickness en el efecto orb; el hueco es real (alfa propia) sobre cualquier fondo. Fuera la rama claro/oscuro y el parámetro backgroundColor, que pintaba un disco opaco del color de la superficie en el centro |
| Color del orbe = tokens de rol | colorA/colorB/colorDeep en hex resueltos por eidos.resolveToken. Antes rotaba el hue: delta medido en OKLCH aplicado en YIQ → risk salía VERDE junto a su propio anillo naranja |
| Onion en el idioma del orbe | Prop look="luminous" (filo de luz, sin relleno ni sombra) + trigger data-chrome="bare" (sin disco, sin sombra FAB, sin salto en hover) + medio anillo bottom-center + radios 44/40 |
| Desenlaces expresados | Tres eventos terminales con intent intrínseco + textos por desenlace + primeras firmas de la familia delegate en el registro (return-recoil) |
| Mapa semántico de color | Un hue = un significado en TODA la superficie: gris=sin agencia · naranja=tu revisión · morado=él actúa · rojo=escalated (exclusivo) · teal=tu sí. El anillo de autoridad reusa los colores de la custodia con el MISMO sentido; los declines van a neutral (un cancel es absent, no loss) |
| El anillo en reposo delega | En idle ofrece las tres autoridades (Suggest/Review/Auto) y elegir ABRE el run. El cierre automático pasó a ser por transición (el control vuelve), no «siempre que no haya run» |
Verificado en Chrome real: los seis estados en claro y oscuro, y un error de
transporte real (transporte apuntado a un puerto muerto) →
delegate-return-failed · intent loss · firma return-recoil sobre el Ring
· región «Agente: falló — control devuelto». Antes ese caso era
indistinguible de un éxito.
Cómo verificar rápido al retomar
npm run dev # rutas en web/routes
npx vitest run src/arts/agent # 30/30
npx vitest run src/uix/eidos # 353/353
npx vitest run src/uix/soma/components/aura # 11/11
npm run morfo:vocabulary # sin errores (solo warnings ajenos)
npm run check # 73 errores = AJENOS preexistentes; 0 propios
/active/docs/agnt— página del arte: playground gated (compuertas) + §Real model (demo con modelo real: Aura + OnionMenu radial) + §Configuring the transport + §The bus as the initiative axis + vocabulario del bus./uix/components/aura— demo canónica: anillo on/off, tamaños, variante orb/aurora y los seis estados por compuertas deterministas (SIN modelo). Es el sitio para juzgar el componente aislado.- Entorno del usuario: Ollama en
:11434conqwen3-coder:30b(CPU mayormente → 2-3 min/turno; paciencia). El:8080es Open WebUI (API keys OFF — NO sirve como endpoint directo).
Siguiente trabajo (en orden)
- FIRMAR D-AG.12 (PLAN §5, pendiente 2026-07-22): elevar la doctrina a
spec publicable («el contrato de delegación») con
agent-checkcomo conformance + nombrar las dos reclamaciones de frontera (contexto por atención · delegación como transacción). El usuario dijo «sí» a dejarla planteada; falta la firma formal de forma y alcance al retomar. - F4b — chat como 2º consumidor (desbloqueado, siguiente):
participante con provenance por modelo de mensaje + composer como entrada
de delegación + árbol de manifiestos
src/uix/agent/components/+ guardagent-check(D-AG.11) + elicitación materializada (Form.AutoFields) + promociónuix.agent(cierra D-AG.1b). Con el 2º consumidor: promovertoJsonSchemaa$sium(nota en json-schema.ts) y wiringidentity.locale ← prefs. - F2 — piloto palabras: GATED hasta que el track palabras firme sus 4
ejes F-B. Al abrirse: capacidad tipada contra su API + OCC (_version) +
write-scope +
allowedFamiliesdel primer actuado (reubicada aquí). - Flecos de la superficie (ninguno bloqueante):
- El pulso de
commit-selectdel onion se corta si el consumidor cierra el anillo al elegir: el sello dura su hold, pero el nodo ya se desmontó. Arreglo: retención tipoPresenceen el cierre. reviewingvsescalateda 22° de hue (naranja vs rojo): el canon los separa por rol y la FORMA los distingue, pero perceptualmente están cerca. Si molesta:escalatedasolid-hover, o retintar el tema.loss(plum) a 16° deprimaryen el tema por defecto — por eso el «Deny» leía violeta (NO era bug delOnionColor: plum ES el rolloss). Con los declines en neutral ya no comparten superficie; regla escrita: «loss nunca convive con primary». Retintarlo de verdad exige una escala nueva (no hay hueco entre las 9 actuales).- Diferidos con disposición (acta en PLAN §F4a): resumen semántico de
contexto (F5) ·
supersededpor OCC (F2, lado componente) · journal por defecto en factory (el app decide vehículo).
- El pulso de
Preguntas abiertas (decisión del usuario)
- Superficie de composición del encargo (banco de mockups, D5: orbe → encargo → contexto → anillo de autoridad). El encargo NO es estado de la máquina: antes de delegar no hay custodia que sostener, y meterlo en el run pondría al motor a gobernar algo sobre lo que no tiene autoridad. Va como superficie de APP. ¿Se materializa en F4b (composer del chat) o espera a palabras (que es literalmente el escenario del editor de blog)?
- Canal de corrección a mitad de run (
amend/nudge): no existe — un prompt nuevo es un run nuevo. Cambio de motor + protocolo, sin firmar. - Pre-run elicitation (que pregunte ANTES de proponer): hoy solo puede preguntar escalando a mitad, y la escalada lleva razón tipada, no una pregunta abierta con respuesta.
Disciplina y gotchas operativos (¡leer antes de tocar!)
- Rama COMPARTIDA entre sesiones concurrentes: índice y working
compartidos — staging puede evaporarse. Commits SIEMPRE en un bloque
atómico
git reset -q && git add <paths explícitos> && verify && commit. Jamás amend. Ficheros mixtos con trabajo ajeno: stagear solo lo mío. contracts.test tiene 2 fallos AJENOS conocidos (menubar/radio-group). - Sesión paralela regenerando rutas → full reload del dev server que MATA runs en vuelo de las demos. No es bug propio.
- Pane oculto: no dispara clicks reales (sonda sintética
el.click()como diagnóstico) y congela rAF (canvas del orb sin pintar — el pintado se verifica en Chrome real SIEMPRE; regla dura re-aprendida esta sesión con elhalodescartado: MIRAR el render antes de enseñar). - Y la ventana de Chrome EN SEGUNDO PLANO también congela
rAFyResizeObserver(document.visibilityState === 'hidden'): el canvas se queda en 300×150 y las medidas MIENTEN. Media hora perdida esta sesión diagnosticando un «bug» que era eso. Verificar pintado o tamaño exige la ventana DELANTE. - El dev server de Vite escucha en
::1, no en127.0.0.1, y la extensión de Chrome rechazalocalhostcomo dominio → hace falta--host 127.0.0.1(ya está en.claude/launch.json, configverify). fallbackTargetgana sobre eltargetdel morfo (contrato deTriggerOptions): un provider que lo pase SIEMPRE ignora en silencio el target declarado. Aura pasa el Ring en los terminales por eso.- Chrome MCP: coords de screenshot ≠ viewport con zoom/scroll (clicks
fantasma que cierran menús por outside-click) — para sectores SVG usar
DOM dispatch (
pointerdown+pointerup+click) tras localizar el path. - Bus payloads = SOLO metadata (higiene
fa7189056): jamás goal ni contenido de usuario; el suscriptor resuelve del módulo porrunId. - El adaptador openai-chat: Ollama reutiliza
index:0para todas las tool calls del stream — una call nueva se detecta poriddistinto, jamás por index (test que lo reproduce en adapters/openai-chat.test.ts).