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/continue-agente-2026-07.md

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 :11434 con qwen3-coder:30b (CPU mayormente → 2-3 min/turno; paciencia). El :8080 es Open WebUI (API keys OFF — NO sirve como endpoint directo).

Siguiente trabajo (en orden)

  1. FIRMAR D-AG.12 (PLAN §5, pendiente 2026-07-22): elevar la doctrina a spec publicable («el contrato de delegación») con agent-check como 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.
  2. 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/ + guard agent-check (D-AG.11) + elicitación materializada (Form.AutoFields) + promoción uix.agent (cierra D-AG.1b). Con el 2º consumidor: promover toJsonSchema a $sium (nota en json-schema.ts) y wiring identity.locale ← prefs.
  3. 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 + allowedFamilies del primer actuado (reubicada aquí).
  4. Flecos de la superficie (ninguno bloqueante):
    • El pulso de commit-select del 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 tipo Presence en el cierre.
    • reviewing vs escalated a 22° de hue (naranja vs rojo): el canon los separa por rol y la FORMA los distingue, pero perceptualmente están cerca. Si molesta: escalated a solid-hover, o retintar el tema.
    • loss (plum) a 16° de primary en el tema por defecto — por eso el «Deny» leía violeta (NO era bug del OnionColor: plum ES el rol loss). 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) · superseded por OCC (F2, lado componente) · journal por defecto en factory (el app decide vehículo).

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 el halo descartado: MIRAR el render antes de enseñar).
  • Y la ventana de Chrome EN SEGUNDO PLANO también congela rAF y ResizeObserver (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 en 127.0.0.1, y la extensión de Chrome rechaza localhost como dominio → hace falta --host 127.0.0.1 (ya está en .claude/launch.json, config verify).
  • fallbackTarget gana sobre el target del morfo (contrato de TriggerOptions): 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 por runId.
  • El adaptador openai-chat: Ollama reutiliza index:0 para todas las tool calls del stream — una call nueva se detecta por id distinto, jamás por index (test que lo reproduce en adapters/openai-chat.test.ts).

Powered by TurnKey Linux.