All checks were successful
CI / lint (push) Successful in 28s
CI / notebooks-smoke (push) Successful in 1m24s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / mc (push) Has been skipped
Infra CI / notebooks (push) Successful in 45s
Infra CI / zotero (push) Successful in 13s
Infra CI / docs (push) Successful in 1m11s
Infra CI / api (push) Successful in 1m1s
Infra CI / mc (push) Successful in 13s
Deploy / report (push) Successful in 12s
CI / test (push) Successful in 13m12s
#508: conf.connect.duckdb_batch() — short-lived RW connection with exponential-backoff retry on the single-writer lock; on exhaustion raises naming the holder PIDs/commands via lsof ('close the notebook tab or stop that PID') instead of a raw IOException. Wired into ingest_opps.py and ingest_asp.py. Connection-hygiene doc at docs/docs/duckdb-concurrency.md. #509: ingest_opps.py --year no longer wipes other years. The load step now merges: existing other-year rows are read back and unioned with the new frames before the rebuild (pandas concat also unions columns, so CMS format drift stays handled). skin_sub_addendum_b is derived from the merged addendum_b table instead of this run's frames. Validated against the real store: --year 2026 run preserved identical per-year counts for 2014-2025 across apc_weight (9 years), addendum_b and skin_sub_addendum_b (13 years) while rebuilding 2026.
530 B
530 B