Skip to content

fix(ci): retain native dependencies in per-interpreter caches - #105

Merged
stefan-jansen merged 2 commits into
mainfrom
fix/ci-interpreter-dependency-cache
Oct 18, 2026
Merged

stefan-jansen merged 2 commits into
mainfrom
fix/ci-interpreter-dependency-cache

Conversation

@stefan-jansen

@stefan-jansen stefan-jansen commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Refs #56. Retain native dependencies in per-interpreter caches and document the optional store build prerequisites. Current head def316703106819a48ddd5f0ff37b88e51dce0f5, tested synthetic 7d4a0b9da5ff850eb8073ebcc1929649c827196f, tree 36ca8778f60d3ba0885fed98351c1fe292e85d99. No runtime, dependency, test, permission, schedule, timeout or artifact-verification change.

Reproduction through the real workflow

The final 3.15 full-wheel job at main f24a0c5fdfd50f10b32da7a7d5748580de8f38ea restores a cache whose key contains the runner's pre-matrix Python 3.12.10. It then builds DuckDB 1.5.6 from 03:37:46 to 04:16:52 UTC, runs all 4,695 tests successfully, and reports that it will not save the cache because the original 3.12 key was a hit. The newly compiled 3.15 dependency is never retained under its own interpreter key.

The earlier PR93 Windows 3.15 native job shows the same key/hit/no-save sequence and another DuckDB build from 02:49:08 to 03:25:48 UTC. This is repeated behavior from actual qualification jobs, not an inferred source-text regression.

Repair and checks

Give both existing matrix jobs the supported setup-uv cache-suffix: python-${{ matrix.python-version }} input. The pinned action already includes platform, architecture and dependency hashes in its key. This separates interpreter payloads without changing installation commands. The fresh project-wheel installation, actual imported origin/bytes, complete twelve-cell suites, native cold-call protocol and all other gates remain required.

At cache commit c350667c75fb6ac5b3897a04ecc7446dd0d6d305, Actionlint, all-file hooks and 41 existing artifact/CI invocation cases pass in 12.52s. Final doc commit def3167 adds only 15 installation-guide lines. A fresh actual source installation on Python 3.15.0 passes the literal core, TA and store commands without replacing the development package; TA-Lib 0.8.2 and DuckDB 1.5.6 imports and the README workflow pass. The optional store really compiles DuckDB when no wheel is available. Strict MkDocs 2.15s, rendered heading/commands/links, real upstream HTTP 200 and all-file hooks pass. The preserved 0.1.6 quick start remains linked.

Cold seed c350667 completes all native cells, including actual final 3.15.0 on all three systems, and saves the compiled dependencies in the correct interpreter caches. Eleven full-wheel cells each pass all 4,695 tests. The unfinished Windows full-suite attempt is superseded by the final meaningful doc revision, not counted as a pass; its complete partial log is retained.

Actual warm reuse is verified at final def3167 on the same pull ref with identical cache producer and dependency hashes. All three final-3.15 native jobs restore their interpreter cache and install locked DuckDB 1.5.6 without rebuilding it. Windows installs the complete dependency environment in 13s, then verifies the fresh dev31+7d4 wheel's real site-packages origin and all 200 package files. Every platform passes ten 53-case fresh MACD processes, two 3-case public-order processes and twelve empty-cache cold-call cases. These are real workflow results, not a source-string assertion or a controlled cross-VM benchmark. The final head's full suites and all other configured gates still must finish before merging.

This follow-up is necessary because PR93 was already merged before its fresh-main logs exposed persistent cache loss. It reuses the compatibility record rather than creating replacement issues or a policy-only PR. The old main native job automatically hit its 90-minute limit during dependency installation, before any stress test ran. The actual annotation and log are retained; the owner did not cancel or rerun it. All twelve old-main full suites passed, but that whole head is not qualified. Cache persistence does not eliminate the initial cold build, so this PR must still pass cold qualification as well as actual warm reuse. Release/archive decisions remain separate.

AI assistance: Codex inspected logs and the pinned action input, authored the two workflow lines and matching installation guidance, reviewed scope, executed source-install/rendering checks and inspected the actual hosted cold/warm results. No independent human review is claimed.

Copilot AI balanced review requested due to automatic review settings October 18, 2026 04:42

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stefan-jansen
stefan-jansen merged commit c69e7ba into main Oct 18, 2026
49 checks passed
@stefan-jansen
stefan-jansen deleted the fix/ci-interpreter-dependency-cache branch October 18, 2026 05:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants