Files
egutierrez 1e4ffba40e docs: schema de documentacion v1.0
Añade la especificacion completa del registry:
- README con overview de tablas y kinds
- Schema de functions (atomicas, pipelines, components)
- Schema de types (algebraicos: product y sum)
- Reglas de integridad y referencias cruzadas
- Arquitectura del sistema (registry vs operacional)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 01:59:14 +01:00

69 lines
1.9 KiB
Markdown

# Referencias cruzadas entre tablas
Todas las referencias son validadas al indexar. Una referencia a un ID inexistente es rechazada. El grafo de dependencias es siempre consistente.
---
## Mapa de referencias
| Campo origen | → | Campo destino |
|---|---|---|
| `functions.uses_functions[]` | → | `functions.id` |
| `functions.uses_types[]` | → | `types.id` |
| `functions.returns[]` | → | `types.id` |
| `functions.error_type` | → | `types.id` |
| `types.uses_types[]` | → | `types.id` |
---
## Jerarquía de composición
```
types/ → contratos de datos
product: OHLCV, Tick, Order...
sum: Result, OrderResult, ParseError...
functions/
pure/ → transformaciones atómicas sin side effects
filter_slice
clamp
map_ohlcv
impure/ → bordes del sistema (IO, red, tiempo, estado)
fetch_ticks
write_csv
get_bitcoin_price
pipeline/ → composiciones orquestadas, siempre impuras
tick_to_ohlcv
build_market_feed
component/ → UI React, pura si sin estado, impura si con estado
DataTable
PriceChart
OrderForm
```
**Regla arquitectónica fundamental:**
- Las funciones **puras** nunca dependen de funciones **impuras**
- Los **pipelines** son el único lugar donde se orquesta IO
- Los **tipos** no tienen purity — son solo forma
- El agente compone puras libremente e **aísla** impuras en los bordes
---
## Grafo de dependencias
El grafo completo vive en las referencias cruzadas. Para cualquier función o pipeline el agente puede recorrer:
```
pipeline.uses_functions
→ function.uses_functions (recursivo)
→ function.uses_types
→ type.uses_types (recursivo)
→ function.returns
→ function.error_type
```
Esto permite al agente saber exactamente qué necesita para componer cualquier pipeline antes de escribir una sola línea de código.