Connect any source, model it as an ontology, transform it, and operationalize it, analytics, automation and machine learning, under one governed, self-hostable roof.
---
Most teams stitch the...
C·0 · EL CENSO DEL TUBO — qué sabe hacer la ingesta antes de suprimirla
⚙️ ESTE DOCUMENTO SE GENERA
Salida de scripts/ingesta/c0-censo-del-tubo.ts. No lo edites: los cambios se
pierden. El inventario y los veredictos se declaran en ese script (versionados y
revisables); el uso se mide contra la base en cada corrida.
⛔ El tipo Veredicto no admite «pendiente de mirar»: cada capacidad sale con
destino, o el censo no compila. Ése es el gate de C·0.
14 capacidades · 4 CUBRE · 7 POSPONE · 3 ABANDONA
1 · El inventario, con destino
✅ CUBRE (4)
capacidad
dónde vive
fase
por qué
Lectura completa de una tabla (full_scan)
base-polling-worker.ts:577
C·5
Es exactamente la copia snapshot que C·5 entrega: leer el origen entero y materializar el destino.
Streaming por lotes con techo de RAM
writeDatasetStreaming · fetchers v7
C·5
El INSERT por lotes de C·5 es el mismo patrón: la RAM la acota el lote, no la tabla. Sin esto una tabla grande no cabe.
Modo REPLACE (upsert + limpiar lo que sobra)
base-polling-worker.ts:1419
C·5
Una copia repetida tiene que ser idempotente. Sin REPLACE, ejecutar dos veces duplica.
Esquema y tipos derivados del origen
DatasetWriter · datasets.schema“
C·5
El destino nace con el esquema del origen; sin esto no hay createTable posible.
⏭️ POSPONE (7)
capacidad
dónde vive
fase
por qué
Elección AUTOMÁTICA de estrategia (timestamp › sequence › full_scan)
base-polling-worker.ts:458-577
incremental
Sólo tiene sentido cuando hay incremental: elegir cursor para una copia completa no decide nada. §7 del approach deja el sitio (la lectura admite condición).
Estrategias incrementales timestamp y sequence (cursor)
base-polling-worker.ts:565-574
incremental
Es el corazón del CDC. Ni Snowflake ni Databricks lo modelan como sentencia — va en su propio approach, no colgado de la copia.
Modo UPSERT (añade y actualiza, no borra)
base-polling-worker.ts:19-20
incremental
Su par natural es MERGE. §7 del approach exige que la escritura PUEDA ser MERGE aunque C·5 siempre haga append.
Checkpoint y reanudación a mitad de sync
base-polling-worker.ts:667-701
incremental
C·5 es todo-o-nada con compensación, que es más simple y más seguro para empezar. §7 pide dejar rastro reanudable aunque nadie lo lea todavía.
Fan-out por rangos de PK (N particiones en paralelo)
⚠️ Es una optimización de VOLUMEN, no una capacidad funcional — pero es la que hace viable una tabla de 500M filas. Posponer no es olvidar: si el volumen aparece antes que el CDC, sube de prioridad.
Programación (un job por sync cuando la credencial toca)
scheduler · getSyncFilesByCredential“
los dos modos
Es el segundo disparador del pilar ③. La sentencia va primero; el planificador ejecuta lo mismo y por eso puede esperar.
Descubrimiento de claves ajenas del origen
ForeignKey · datasets.foreign_keys“
incremental
No participa en copiar filas: alimenta la UI y el grafo. Se pospone porque su pérdida es visible y reversible, no silenciosa.
⛔ ABANDONA (3)
capacidad
dónde vive
fase
por qué
Estrategia hash
base-polling-worker.ts:166 (tipo)
—
⭐ Declarada en el tipo y sin implementación que la elija: decidirEstrategia sólo devuelve timestamp/sequence/full_scan. Es vocabulario muerto, y arrastrarlo sería copiar una capacidad que nunca existió.
Estrategia cdc (log de replicación)
base-polling-worker.ts:166 (tipo)
—
⚠️ Mismo caso: está en el tipo y nadie la produce. El CDC de verdad se diseñará desde cero contra el estándar (Openflow/Lakeflow hacen snapshot + CDC), no heredando un enum vacío.
Escritura por warehouse-writer (Railway) con warehouse por inquilino
iceberg-native-write.ts · WAREHOUSE_WRITER_URL
—
⛔ Es LA CAUSA de que la ingesta esté rota: pide a Lakekeeper un warehouse por inquilino que dejó de existir con el modelo pool (migración 20261274). Es justo el tubo que C·6 suprime.
2 · El uso REAL, medido
7 syncs activos · 6 datasets en error
Syncs por workspace
workspace
syncs
node-development-2
5
node-development
2
Estrategia declarada en la configuración
estrategia
syncs
(automática)
7
⭐ Una estrategia que nadie declara la decide el worker solo. Eso significa que el
camino nuevo no hereda una configuración: hereda una DECISIÓN, y esa decisión hay
que volver a tomarla explícitamente cuando llegue el incremental.
De dónde vienen los datasets que existen
servicio
datasets
último
postgresql
55
2026-08-16
sql_editor.create_table
18
2026-08-16
transform_path
15
2026-06-18
pipeline_output
13
2026-05-20
postgres
7
2026-05-06
media_set
5
2026-07-06
manual
5
2026-06-15
unstructured_dataset
4
2026-07-06
drive
3
2026-03-06
upload
2
2026-05-06
f2_canary
2
2026-08-06
view
1
2026-07-11
3 · Lo que este censo obliga
Nada de lo marcado CUBRE puede quedarse fuera de C·5 — si al cerrarlo alguna
no está, C·5 no está listo, por muy verde que salga la copia.
Lo POSPONE no es opcional: es deuda con nombre. El approach §7 obliga a dejar
el sitio (condición en la lectura, MERGE posible, rastro reanudable) para que
añadirlas no sea reescribir la copia.
Lo ABANDONA se abandona a propósito y por escrito, que es lo contrario de
perderse. Dos de las tres eran vocabulario muerto: estaban en el tipo y nadie las
producía.