Tracking issue for the v0.1.0 milestone.
Goal: Correctness fixes, CI foundation, tests, docs synced with code.
This is the "get the house in order" release — fix known correctness bugs in the downloader/ETL, establish a CI pipeline, add a baseline test suite, and bring the docs back in sync with the code.
Ordered in rough working sequence. Issues within a phase can be done in parallel; later phases generally benefit from earlier ones being done first.
Phase 1 — Build foundation
These unblock verification of every other fix (reproducible builds + CI to run against).
Phase 2 — Stop the bleeding (pipeline-breaking bugs)
Bugs that stall the pipeline, lose data, or leave state stuck. Do these before the subtler correctness work.
Phase 3 — HTTP client robustness
Short, mechanical fixes on the ERCOT client surface.
Phase 4 — Ingest correctness
Now that the pipeline stays up, correct what it writes.
Phase 5 — Tests and docs
Lock in the above with coverage and bring docs back in sync.
Auto-closes when every linked issue is closed. Progress is tracked by GitHub via the task list above.
Tracking issue for the v0.1.0 milestone.
Goal: Correctness fixes, CI foundation, tests, docs synced with code.
This is the "get the house in order" release — fix known correctness bugs in the downloader/ETL, establish a CI pipeline, add a baseline test suite, and bring the docs back in sync with the code.
Ordered in rough working sequence. Issues within a phase can be done in parallel; later phases generally benefit from earlier ones being done first.
Phase 1 — Build foundation
These unblock verification of every other fix (reproducible builds + CI to run against).
Cargo.lockis gitignored for a binary workspaceuuidfeature from sqlx dependencyPhase 2 — Stop the bleeding (pipeline-breaking bugs)
Bugs that stall the pipeline, lose data, or leave state stuck. Do these before the subtler correctness work.
mark_failednever sets status to failed in the downloaderpipeline_runstable population — table exists in schema but is never written tolocal_pathexists before opening the filepublish_datein ERCOT filename silently drops the documentPhase 3 — HTTP client robustness
Short, mechanical fixes on the ERCOT client surface.
error_for_statuscheck on ERCOT HTTP responsesPhase 4 — Ingest correctness
Now that the pipeline stays up, correct what it writes.
first_seen_atsemantics are unclear and may behave incorrectly on re-activationUpsertStatsinserted and unchanged fields are always zeroPhase 5 — Tests and docs
Lock in the above with coverage and bring docs back in sync.
CLAUDE.mdwith actual codebaseAuto-closes when every linked issue is closed. Progress is tracked by GitHub via the task list above.