Files
stack/tests/aco
kert 446f1b9398
All checks were successful
CI / lint (push) Successful in 34s
CI / notebooks-smoke (push) Successful in 1m28s
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 53s
Infra CI / zotero (push) Successful in 16s
Infra CI / docs (push) Successful in 1m18s
Infra CI / api (push) Successful in 51s
Infra CI / mc (push) Successful in 12s
Deploy / report (push) Successful in 13s
CI / test (push) Successful in 15m7s
Notebooks Integration / notebooks-integration (push) Successful in 7m37s
feat(lake): M4 — DuckLakeContext write path + OPPS lake pilot (closes #513)
aco.lake.DuckLakeContext: the concrete lake context for the M3
decision (#512). Subclasses DuckDBContext — load/save are inherited
untouched; only the connection wiring differs (ducklake+httpfs
extensions, S3 secret for RustFS, ATTACH the catalog, USE it as the
default database so schema.table refs resolve in the lake). Postgres
DSN for multi-writer prod, plain file path for dev/tests. Explicit
close() added to the context family (releases locks/attachments).

Pilot: dev/scripts/publish_opps_to_lake.py reads the OPPS tables from
the replica and writes them through Context.save(mode=replace). Run
against prod (postgres catalog db 'ducklake' + RustFS): addendum_b
219,665 rows in 2.6s, apc_weight 7,776, skin_sub_addendum_b 2,520 —
all read-back verified through Context.load.

Config: stack.toml [lake.ducklake] (catalog DSN sans password, data
path, s3 endpoint). CI: ducklake added to the duckdb extension
preinstall (same xdist install race class as #515). 6 new tests use a
file catalog + local data path — same code paths, no services needed.
2026-07-10 23:03:29 -04:00
..