This release makes large TORCH extractions survivable by re-attaching to in-flight jobs across process death and long runtimes, adds a --force gate so re-running an already-completed step is now explicit rather than silent, guards import steps against mismatched input types, fixes nested AETHER_* environment overrides, and lands a large internal refactor that unifies pipeline steps behind a single Step seam and centralizes the job directory layout — plus the usual dependency refresh (TORCH v1.0.0-beta.5, Blaze 1.10, fhir-pseudonymizer 2.29).
What's Changed
Breaking Changes
- Re-running a completed step now requires
--force—aether job run --step <X>on an already-completed step previously reset and re-ran it silently and unconditionally. It now fails fast with a clear error (step 'dimp' already completed; pass --force to re-run), records the block in persisted job state, and requires an explicit--forceto re-run. Migration: add--forceto any workflow that intentionally re-runs completed steps. #523
Features
- Re-attach to in-flight TORCH extractions + liveness timeout — Large extractions (100k+ patients) now survive aether process death and runtimes longer than
extraction_timeout. The TORCHjobIdand status URL are persisted before the long poll, socontinuere-attaches to the running extraction instead of re-submitting the CRTDL and orphaning the original job. #474 - Guard import steps against mismatched input types — The import method is chosen by step name and each handles only a subset of
InputTypes; a mismatch on the RunLoop /pipeline continueresume path now fails with a clear error instead of a confusing downstream one. #522
Bug Fixes
- Wire nested
AETHER_*environment overrides — Nested config values can now be overridden viaAETHER_*environment variables. #445 - Gate flattening step on a completed import —
StepFlatteninghad noStepPrerequisitesentry, so it was never gated on import completion (unlike dimp/validation/wait/send); it now requires a completed import. #517 - Remove redundant error output on step failure — Drops duplicate error printing when a pipeline step fails. #469
Internal & CI
- Unify pipeline steps behind one
Stepseam #506, and unify per-step wrappers behindpipeline.RunStep#520 - Centralize job directory layout — on
StepContext#518 and in state #451 - Deepen the FHIR-over-HTTP client and add client seams #493
- Single Bundle/resource accessor module #449
- Remove dead transition seam #487
- Correct e2e-test CWD and refactor Makefile targets #447
- Disable external terminology server in E2E validation tests #475
- Bump mii-fhir-validator E2E image to 0.0.1-alpha.7 #476, and track it in Renovate #477
- Add
/aether/stable/alias for versionless README links #511 - Fix dead documentation links in README #489
Dependency Updates
- AWS SDK for Go v2 #448, #452, #463, #492, #519
- Go modules — progressbar #494, klauspost/compress #500, go toolchain 1.26.5 #526
- TORCH →
v1.0.0-beta.5#456, #486 - Blaze → v1.10.1 #450, #464, #499
- fhir-pseudonymizer → v2.29.0 #462, #498, #508
- PostgreSQL 18.4 digests #454, #457, #480, #525
- SeaweedFS → v4.38 #455, #461, #496, #512
- nginx-unprivileged digests #460, #465, #482, #510
- Debian bookworm-slim digests #453, #479
- Vue → v3.5.39 #458, #485
- Vite → v8.1.3 #497, #502, #505, #507
- esbuild → v0.28.1 #459
- GitHub Actions #466, #468, #478, #481, #483, #490, #491, #495, #503, #521
- Lock file maintenance #501, #509