offline_trainig

@startuml
skinparam shadowing false
skinparam componentStyle rectangle
title Offline Training Pipeline with AlgoX2 Integration

top to bottom direction

rectangle "Producers" as P
rectangle "X2 Gateway" as GW
rectangle "X2 Sequencer" as SQ
rectangle "X2 Storage" as ST
rectangle "X2 Materializer\n(Iceberg Writer)" as MAT
database "S3 / MinIO\nIceberg Tables" as S3
rectangle "Tracto Workflow" as WF
rectangle "Spark / SPYT Job" as SP

P -down-> GW : Events
GW -down-> SQ : Append
SQ -down-> ST : Commit Journal
ST -down-> MAT : Notify (new data/window)
MAT -down-> S3 : Write Iceberg snapshot/manifest
MAT -down-> WF : Emit control record / webhook (dt=READY)
WF -down-> SP : Launch training job (params: table path, dt)
SP -down-> S3 : Read Iceberg snapshot
SP -down-> SP : Train/eval → Model artifacts

@enduml