Changelog

All notable changes to pulsaride-transform. Follows Semantic Versioning.

2.1.0 — April 2026

Spring Boot library release — declarative migration as a Spring dependency, not a CLI tool.

Changed

  • Repackaged as a Spring Boot auto-configured library — add one Maven dependency, zero @Bean definitions
  • YAML rules loaded automatically from classpath:migration/ via pulsaride.migration.rules
  • Spring Batch job creation is fully automatic — one step per table, FK-aware ordering
  • Monitoring dashboard promoted to first-class feature at /pulsaride with WebSocket live feed
  • Spring Actuator health indicator — /actuator/health/pulsaride per-table L1 status
  • CDC mode via Debezium connector now configurable from application.yml

Removed

  • pt CLI — superseded by Spring auto-configuration (see CLI Reference for migration path)

1.5.0 — April 2026

H3.3.1 config drift enforcement · H3.4 dependency-aware migration · H4.1 talkative monitoring · H4.2 run comparison. 541 tests passing.

Added

  • ConfigDiff — LOW / MEDIUM / HIGH risk classification per changed field (20 tests)
  • pt migrate run enforcement — LOW warns, MEDIUM blocks (bypass with --force), HIGH aborts with explanation (exit codes 3/4)
  • DeferralEnginedepends_on YAML directive: auto-defer FK-blocked rows into PULSARIDE_DEFERRED, replay on parent write
  • depends_on in MigrationConfig: table, key, via, on_missing (DEFER / FAIL / SKIP)
  • Post-write hooks in JdbcRowWriter and CdcMergeWriter — symmetric batch + CDC replay
  • Multi-table cascade — re-evaluate all deps after each replay
  • DeferralEngine.preload() — bulk-load known keys at step init to avoid deferral when parent already exists
  • pt migrate deferred list / replay CLI commands
  • pt diagnose Check 7 — deferred row counts per blocking table
  • 5-scenario E2E integration test (DependencyAwareMigrationE2ETest, H2 in-memory)
  • RunNarrativeBuilder — human-readable run summary
  • RootCauseAnalyzer — 10+ hint patterns (DQ reject spike, DLQ saturation, schema drift, etc.)
  • CutoverConfidenceView — READY / READY_WITH_WARNINGS / NOT_READY verdict with score detail
  • ValidationExplainer + FieldDriftReport — per-field DQ failure frequencies, drifted bucket ranking, top L2 diff fields
  • RunComparison — REGRESSED / IMPROVED / NEUTRAL / INSUFFICIENT_DATA (pure percentage threshold, 20 tests)
  • depends_on usage docs in usage.md

1.4.0 — April 2026

H3.2.1 safe reset · H3.2.2 config hash · H3.3 advanced validation.

Added

  • ResetGuard + ResetExecutor — env-gated pt migrate reset with --dry-run, --tables-only, --confirm (13 tests)
  • ConfigHasher — SHA-256 of canonical config JSON (8 tests)
  • RunConfigStore — JSONL-backed per-hash config snapshots (10 tests)
  • RunRecord.configHash — backward-compatible field
  • CutoverReadinessScore — 5-factor composite scorer (11 tests)
  • SchemaDriftMonitor — virtual-thread background schema check (7 tests)
  • BenchmarkRunner + BenchmarkReport — throughput measurement (7 tests)
  • CombinedValidationReport.suggestedActions — auto-repair hints
  • pt test-transform CLI — JSONL fixture unit testing
  • pt migrate run --remigrate-all — full re-scan with auto-preflight guard
  • pt diagnose Check 5 — config hash mismatch detection

1.3.0 — April 2026

H3.2 operational depth — same feature set as 1.2.0, released as 1.3.0.

Added

  • DLQ for batchJdbcDlqSink, retry strategies (immediate, exponential backoff, fixed delay, no-retry), DlqSkipListener
  • DLQ for CDC/events — route failed merge events to DLQ with structured DlqEvent
  • Micrometer metricsMicrometerMigrationMetrics optional integration
  • CredentialResolverPT_SRC_PASS / PT_TGT_PASS env var resolution
  • RunRegistry stable API hardened — recordRun(), getLastRun(), idempotency guard, 14-test integration suite
  • RepairSuggestion — contextual CLI hint per DLQ event type
  • Iceberg / Delta Lake sinks — retained as [EXPERIMENTAL] stubs (throw UnsupportedOperationException)

1.1.0 — April 2026

H3.1 migration runtime maturity.

Added

  • Partition-aware resumeMIGRATION_PARTITION_STATUS table, PartitionStatusRepository, ScaleFullLoadExecutor.resume()
  • Real Kafka CDC consumerScaleCdcExecutor with Debezium envelope parsing, overlap buffering, live-mode replay
  • Cutover readiness gateCutoverReadinessGate: validates CDC lag drain + count match before signalling GO
  • pt migrate resume — partition-aware resume with --show-partitions
  • pt migrate cutover — cutover readiness check with score gauge
  • DebeziumEventParser — parse Debezium JSON envelopes into typed CdcEvent

1.0.1 — April 2026

H1 patch — docs aligned, experimental features gated, DQ failures surfaced.

Added

  • DqFailure record — structured per-field DQ rejection with reason and row snapshot
  • CombinedValidationReport — unified L1 + L2 + DQ report with JSON output
  • docs/support-matrix.md — production-ready / experimental / out-of-scope table
  • docs/RELEASE_CHECKLIST.md — pre-release verification checklist

Fixed

  • CLI version string corrected (PtCli.java)
  • ScaleCdcExecutor, IcebergRowWriter, DeltaLakeRowWriter — emit [EXPERIMENTAL] warn log or throw UnsupportedOperationException
  • Dialect detection: source: oracle now correctly applies Oracle quoting throughout

0.4.0 — April 2026

H2 — Expand ingestion beyond direct JDBC.

Added

  • CSV ingestionCsvItemReader, CsvRowReader: header mapping, delimiter/quote options, DQ validations
  • Event adapter APIEventEnvelope, DebeziumEventNormalizer, PulsarideEventProcessor
  • SourceAdapter / SinkAdapter / DlqAdapter — pluggable source/sink abstraction

0.1.0 — 2026-03-30

First public release.

Added

  • Declarative YAML engine: sources, joins, fields, filter, target_table
  • Join-aware SQL generation via QueryBuilder with dialect-aware identifier quoting (SqlQuoter)
  • Rich filter DSL: AND/OR, comparison operators, IN, IS NULL, ISO date/time
  • Expression evaluator — positional placeholders (?1, ?2), functions: upper, lower, trim, normalize_text, coalesce, nullif, type casts, arithmetic, CASE
  • L1 validation — count comparison + client-side and Postgres DB-side bucketed checksums
  • L2 validation — deterministic sampling, bi-directional diff, structured JSON reports
  • Spring Batch PulsarideItemProcessor integration
  • Run registry (JSONL), idempotent replays, pipeline metrics
  • CLI: pt migrate run, pt validate counts, pt validate sample
  • Oracle and PostgreSQL dialect support

Subscribe to new releases via Maven Central.