Skip to content

feat: complete all remaining issues — caching, composition, templating, observability, notifications, streaming, registry, SCD2, enrichment, architecture#100

Merged
rafafrdz merged 11 commits into
masterfrom
feature/lote6-all-remaining
Mar 25, 2026
Merged

feat: complete all remaining issues — caching, composition, templating, observability, notifications, streaming, registry, SCD2, enrichment, architecture#100
rafafrdz merged 11 commits into
masterfrom
feature/lote6-all-remaining

Conversation

@rafafrdz

Copy link
Copy Markdown
Member

Summary

Closes all remaining open issues:

Closes #89, #66, #62, #68, #87, #54, #63, #64, #52, #88, #55, #46, #47, #48

Test plan

  • sbt clean compile passes
  • CI green

rafafrdz added 11 commits March 25, 2026 01:33
Add CachePolicy and PipelineConfig case classes to the ETL model,
allowing YAML pipelines to specify cache settings such as
autoCacheThreshold and defaultStorageLevel. Include example YAML.
Introduce Observability module providing timed execution wrapper that
captures pipeline metrics (duration, status, errors) with structured
log output and JSON formatting support.
Introduce Composer object in the API module for multi-pipeline
orchestration, allowing multiple ETL definitions to be parsed
and composed together. Include example YAML documentation.
Introduce Template case class to the ETL model, allowing YAML
pipelines to define reusable template modules with parameterized
values that can be referenced across pipelines. Include example YAML.
Add StreamingInput and StreamingOutput types to the serializer model
with Circe encoders/decoders, and extend ETL case class with optional
streaming fields. Include example YAML configuration.
Document the migration path covering deprecated API removals,
Scala compatibility, and Teckel's abstraction layer benefits.
Introduce Registry object for registering custom readers,
transformers, and writers at runtime. Include example YAML.
)

Introduce NotificationConfig and NotificationTarget model types in the
serializer, and a Notifier module in the API supporting log, webhook,
and file notification channels.
The .left.map() on Either produced a type that could not be
inferred as Throwable. Use direct pattern matching instead.
SCD Type 2 (#88): Adds slowly changing dimension tracking with
key columns, track columns, and start/end date management.

API Enrichment (#55): Adds HTTP lookup transformation for
enriching records from external APIs with configurable method,
headers, key column and response column.

Both transformations are wired through the full stack: model,
serializer operations/transformation, Rewrite, Debug semantic,
DryRun plan, and DocGen documentation.
- IR layer: intermediate representation for decoupling frontend
  from backend, with optimization passes
- Multi-backend: abstract Backend trait for Spark, DataFusion,
  and Comet execution engines
- REST API: HTTP endpoints for pipeline CRUD, execution,
  monitoring, and WebSocket status updates
@rafafrdz rafafrdz merged commit cef69ac into master Mar 25, 2026
2 of 5 checks passed
@rafafrdz rafafrdz deleted the feature/lote6-all-remaining branch March 25, 2026 00:56
@github-actions github-actions Bot added documentation Improvements or additions to documentation feature New feature or request labels Mar 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add explicit DataFrame caching/persistence control in YAML

1 participant