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
@Beandefinitions - YAML rules loaded automatically from
classpath:migration/viapulsaride.migration.rules - Spring Batch job creation is fully automatic — one step per table, FK-aware ordering
- Monitoring dashboard promoted to first-class feature at
/pulsaridewith WebSocket live feed - Spring Actuator health indicator —
/actuator/health/pulsarideper-table L1 status - CDC mode via Debezium connector now configurable from
application.yml
Removed
ptCLI — 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) - DeferralEngine —
depends_onYAML directive: auto-defer FK-blocked rows intoPULSARIDE_DEFERRED, replay on parent write depends_oninMigrationConfig:table,key,via,on_missing(DEFER / FAIL / SKIP)- Post-write hooks in
JdbcRowWriterandCdcMergeWriter— 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 existspt migrate deferred list / replayCLI commandspt diagnoseCheck 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_onusage docs inusage.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 resetwith--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 hintspt test-transformCLI — JSONL fixture unit testingpt migrate run --remigrate-all— full re-scan with auto-preflight guardpt diagnoseCheck 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 batch —
JdbcDlqSink, retry strategies (immediate, exponential backoff, fixed delay, no-retry),DlqSkipListener - DLQ for CDC/events — route failed merge events to DLQ with structured
DlqEvent - Micrometer metrics —
MicrometerMigrationMetricsoptional integration - CredentialResolver —
PT_SRC_PASS/PT_TGT_PASSenv var resolution RunRegistrystable API hardened —recordRun(),getLastRun(), idempotency guard, 14-test integration suiteRepairSuggestion— contextual CLI hint per DLQ event type- Iceberg / Delta Lake sinks — retained as
[EXPERIMENTAL]stubs (throwUnsupportedOperationException)
1.1.0 — April 2026
H3.1 migration runtime maturity.
Added
- Partition-aware resume —
MIGRATION_PARTITION_STATUStable,PartitionStatusRepository,ScaleFullLoadExecutor.resume() - Real Kafka CDC consumer —
ScaleCdcExecutorwith Debezium envelope parsing, overlap buffering, live-mode replay - Cutover readiness gate —
CutoverReadinessGate: validates CDC lag drain + count match before signalling GO pt migrate resume— partition-aware resume with--show-partitionspt migrate cutover— cutover readiness check with score gaugeDebeziumEventParser— parse Debezium JSON envelopes into typedCdcEvent
1.0.1 — April 2026
H1 patch — docs aligned, experimental features gated, DQ failures surfaced.
Added
DqFailurerecord — structured per-field DQ rejection with reason and row snapshotCombinedValidationReport— unified L1 + L2 + DQ report with JSON outputdocs/support-matrix.md— production-ready / experimental / out-of-scope tabledocs/RELEASE_CHECKLIST.md— pre-release verification checklist
Fixed
- CLI version string corrected (
PtCli.java) ScaleCdcExecutor,IcebergRowWriter,DeltaLakeRowWriter— emit[EXPERIMENTAL]warn log or throwUnsupportedOperationException- Dialect detection:
source: oraclenow correctly applies Oracle quoting throughout
0.4.0 — April 2026
H2 — Expand ingestion beyond direct JDBC.
Added
- CSV ingestion —
CsvItemReader,CsvRowReader: header mapping, delimiter/quote options, DQ validations - Event adapter API —
EventEnvelope,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
QueryBuilderwith 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
PulsarideItemProcessorintegration - 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.