::::terrauniversalis:::: · architecture documents
architecture document · english

Atelier Universalis Canonical Architecture

Canonical/proposal record for Atelier Universalis as a permanent design department inside Artemisa Universalis and as a transversal layer.

Translation layer status: English review layer prepared for public reading. The Spanish source remains attached below as the audit source until final human translation replaces this page.

sha256: 82509759DA48156D7677ADF79A31EBC620D45600C6F8B6E8A55CBEB4101C76E1

Original Spanish Source

# ::::atelier::universalis::::

**rol:** departamento permanente de diseño dentro de Artemisa Universalis — capa transversal, no secuencial.
**estado:** propuesta aprobada por el operador el 2026-07-05 · implementación parcial en curso.
**norma madre:** [`docs/archivum/ARTEMISA_UNIVERSALIS.md`](../../docs/archivum/ARTEMISA_UNIVERSALIS.md)
**se apoya en:** [`.alexandria/contract.yml`](../../.alexandria/contract.yml) v1, [`.alexandria/agent-protocol.json`](../../.alexandria/agent-protocol.json) v1.1.0
**propuesta de origen:** [`.alexandria/proposals/atelier-universalis.md`](../../.alexandria/proposals/atelier-universalis.md)

---

## 1. registro

- fecha de análisis: 2026-07-05
- fecha de aprobación operador: 2026-07-05 (`"se aprueba, procede a generar arquitectura"`)
- lema heredado: *facta non ficta*
- alias: `::::atelier::universalis::::`

## 2. qué es

`::::atelier::universalis::::` no es un agente nuevo ni un sistema paralelo. Es la
formalización de una fila que ya existía en la norma de Artemisa:

> "diseño visual → claude / diseño → identidad, glows, octobar, templates, panales, coherencia visual"
> — `docs/archivum/ARTEMISA_UNIVERSALIS.md`, tabla "engranaje de agentes"

y de tres agentes ya registrados en `.alexandria/agent-protocol.json`:

| agente | lane | rol |
|---|---|---|
| `claude-code` | backend | implementer (esta sesión — acceso a repo, ejecuta herramientas) |
| `claude-design` | frontend | visual_builder (caja sellada en la nube, sin localhost — llega a Bastion vía dev tunnel) |
| `claude-app` | general | collaborator (claude.ai chat) |

## 3. arquitectura que ya existía (verificada, no inferida)

Antes de proponer nada se leyó el repo directamente. Cuatro capas ya en operación:

| capa | qué es | dónde vive |
|---|---|---|
| **Artemisa Universalis** | metodología de producción — *entrar, dinamitar, construir, normalizar, documentar, certificar, propagar*. Ya nombra una división de trabajo fija. | `docs/archivum/ARTEMISA_UNIVERSALIS.md` |
| **Alexandria** | sistema nervioso del repo — gradiente de confianza, 8 facetas, health checks, protocolo de claim/handoff de equipo, dashboard vivo. | `.alexandria/contract.yml` |
| **Nexus** | bus de mensajería vivo que todo builder lee/escribe — claude, codex, grok, grok-imagine, deepseek, gpt, gemini, copilot. | `tools/nexus_transport.py` |
| **unicornd** | gateway en `:8800` que sirve el sitio estático y hace proxy de `/alexandria-api` (8813) y `/nexus-api` (8812). | `tools/unicornd_gateway.py` |

Estado en vivo verificado el 2026-07-05: `nexus-transport` respondía en `:8812` y en
`:8800/nexus-api/health`. `alexandria-api` (`:8813`) **no** respondía —
`WinError 10061`, conexión rechazada; el backend de Alexandria no estaba corriendo en esa
máquina en ese momento. `organism-pulse.json` registraba `pulse: stressed`,
`overall_status: degraded` (generado 2026-07-01).

## 4. el hueco, contado, no adivinado

Se enumeraron las 14 superficies de producción bajo
`static/official/primera netrega oficial v2/dist/official/`. Solo dos tenían contrato de
diseño Claude continuo (charter + lane + promoción):

| superficie | archivos | contrato claude | nota |
|---|---|---|---|
| `alexandria` | 10 | ● standing | charter completo: handoff + integration contract + build brief |
| `cartografia` | 21 | ● standing | el proyecto del link compartido de claude.ai — ya tenía `claude-design`, `claude-full` y readme claude-específico |
| `sistemas` | 26 | ○ ninguno → **cubierto en esta iteración** | ver §6 |
| `mayantraktor-live` | 33 | ○ ninguno → **cubierto en esta iteración** | ver §6 |
| `circus`, `grp` | 10 c/u | ○ ninguno | pendiente |
| `nexus`, `nucleo` | 5 c/u | ○ ninguno | pendiente — el hub de coordinación no tiene dueño de diseño |
| `midi` | 6 | ○ ninguno | pendiente |
| `codex`, `intranet`, `kukulkan`, `sophy` | 2 c/u | ○ ninguno | superficies delgadas, probablemente stubs |
| `modules` | 0 | ○ ninguno | vacío |

Los "9 proyectos" que el operador tiene en claude.ai Design no se han reconciliado
todavía contra estas 14 superficies — no es un problema de arquitectura, es una
conversación pendiente con el operador (ver §8).

## 5. límite confirmado

Se intentó leer directamente `claude.ai/design/p/c8763f25-…` (el link compartido por el
operador). Respuesta: **HTTP 403**. No existe conector MCP hacia Claude.ai Design/Canvas
entre las herramientas disponibles a `claude-code` — es una app autenticada y renderizada
en cliente, no extraíble por scraping.

Esto significa que `claude-code` **no puede** mover los nueve lienzos de claude.ai hacia
Bastion directamente. El mecanismo real ya existe de otra forma: la lane `claude-design`
corre como sesión sellada en la nube, lee el estado de Bastion vía dev tunnel
(`tools/tunnel/8800-config.ps1`) y escribe el resultado directamente en el repo. Ese
pipeline ya funcionaba para `alexandria`; se generalizó en esta iteración (§6).

## 6. el mecanismo — cómo se vuelve continuo de verdad

### 6.1 plantilla de lane única

El patrón que ya prueba funcionar en `alexandria`
(`CLAUDE_DESIGN_HANDOFF.md` + `INTEGRATION_CONTRACT.md` + `BUILD_NOW.md`) se generalizó en
un solo documento de lane por superficie: workspace, ruta de producción, contrato de datos
si existe API, componentes a construir, reglas propias de la superficie, protocolo de
team-sync.

Instanciado para las dos superficies de mayor tamaño sin cobertura:

- [`static/official/sistemas-design/SISTEMAS_DESIGN_HANDOFF.md`](../../static/official/sistemas-design/SISTEMAS_DESIGN_HANDOFF.md) — Sistemas no tiene API viva; son 23 consolas HTML independientes. El propio `README.md` de esa carpeta ya invitaba a Claude Design textualmente: *"Claude Design puede mejorar posteriormente la capa visual, pero no es necesario para la integración operativa."*
- [`static/official/mayantraktor-design/MAYANTRAKTOR_DESIGN_HANDOFF.md`](../../static/official/mayantraktor-design/MAYANTRAKTOR_DESIGN_HANDOFF.md) — superficie de hardware en vivo bajo canon `ART-025`: identidad física intocable, ningún dato MIDI se adivina. El handoff codifica esa regla explícitamente para que una pasada de diseño no pueda violar el contrato de mapeo.

### 6.2 revisión recurrente, no prompt de una sola vez

Hoy la participación de Claude está documentada como `NEXUS_ONE_TIME_AGENT_PROMPTS.md` —
un brief, una pasada, termina. Se propone:

```text
cada handoff de codex/grok en una superficie con lane de Atelier activa
  → Atelier revisa contra tokens DS de Bastion
  → postea a Nexus con tag alexandria:design-review
  → si hay desviación, abre alexandria:blocker con la superficie afectada
```

Tag nuevo: `alexandria:design-review`. El resto del vocabulario (`alexandria:claim`,
`alexandria:handoff`, `alexandria:status`, `alexandria:blocker`, `alexandria:pulse`) ya
existe en `team_sync`.

### 6.3 el diseño entra al pulso, no vive al lado

Propuesto, **no aplicado** (requiere tocar `.alexandria/contract.yml`, protegido): un check
adicional en `tools/alexandria_health.py` de cumplimiento de tokens DS por superficie, para
que una página fuera de marca aparezca como `stressed` en el mismo pulso que ya observa
todo el equipo. Diff propuesto completo en
[`.alexandria/proposals/atelier-universalis.md`](../../.alexandria/proposals/atelier-universalis.md) §4.

## 7. la institución

```text
::::artemisa::::universalis
        |
        +-- artemisa systems              (grok + codex · bastion-core · motor + infraestructura)
        +-- ::::atelier::universalis::::  (claude-code + claude-design + claude-app · transversal · diseño)
```

`Atelier` no reemplaza ninguna lane existente. Codex y Grok siguen siendo dueños de
`tools/`, `services/`, `.alexandria/state/`. Atelier es dueño de la capa visual e
interacción en cada superficie, de forma permanente — cruza las ocho facetas de
`.alexandria/contract.yml` igual que Shield cruza Bastion/GRP/Citoyen/Kukulkan como capa,
no como "una cuarta app".

## 8. estado de esta iteración y siguiente paso

**hecho en esta sesión (2026-07-05):**

- claim obsoleto de `claude-code` sobre `cartografia/` (abierto desde 2026-07-04) liberado.
- propuesta escrita en `.alexandria/proposals/atelier-universalis.md`.
- dos lanes de diseño abiertas y documentadas: `sistemas-design/`, `mayantraktor-design/`.
- handoff real posteado a Nexus (`claude-code` → `operator`), claim liberado al terminar.

**pendiente:**

1. reconciliar los 9 lienzos de claude.ai contra las 14 superficies de `dist/official/` — conversación con el operador, no tarea de repo.
2. operador aprueba (o corrige) el diff de `.alexandria/contract.yml` en la propuesta antes de aplicarlo.
3. sesión `claude-design` (nube, túnel) toma cada handoff y construye en su workspace, igual que ya hace con `alexandria`.
4. cubrir las 10 superficies restantes sin lane (`circus`, `codex`, `grp`, `intranet`, `kukulkan`, `midi`, `modules`, `nexus`, `nucleo`, `sophy`) — mismo patrón, uno a la vez.

*facta non ficta.*