Repository navigation
ci: pass Eigen3_DIR with its PATH type to the release configure - #794
luisleo526 wants to merge 1 commit into
Conversation
The release prebuilt jobs configure with -DEigen3_DIR=/usr/share/eigen3/cmake and then require the cache line Eigen3_DIR:PATH=/usr/share/eigen3/cmake. Without a type on the command line, CMake keeps the entry as Eigen3_DIR:UNINITIALIZED=..., so the check fails right after a successful configure on both slices (the 1.11.0 release dry run stopped there). Pass -DEigen3_DIR:PATH=/usr/share/eigen3/cmake in release.yml and scripts/build_prebuilt_bookworm.sh. The check itself is unchanged. The release step contracts in scripts/ci_preflight.py, the workflow fixtures, their sha256 pins and the tests that name the configure line follow. Reproduced with CMake 3.28.3 and the exact configure command: untyped gives Eigen3_DIR:UNINITIALIZED and the grep fails; typed gives Eigen3_DIR:PATH and the grep passes. Co-Authored-By: Claude Opus 5.5 <[email protected]>
There was a problem hiding this comment.
Graphify reviewed this change.
No issues found by static checks — no coupling regressions or blocking issues in the code graph. That is not the same as safe to merge: see what was not checked.
Not checked: tests were not run; no formal proof of the changed code.
Graphify review — findings
Changes the Eigen configure flag to -DEigen3_DIR:PATH=/usr/share/eigen3/cmake everywhere it's passed, so the cache entry is explicitly typed as a path. This covers the release workflow's legacy prebuilt steps, build_prebuilt_bookworm.sh's inside_build, and the matching templates in ci_preflight.py, so the preflight keeps accepting what the workflow actually runs. The fixture YAMLs are updated to match, which changes their hashes. The pinned SHA-256s in release_upload_context_proof.py and the split/legacy fixture assertions in test_ci_preflight.py are refreshed, and the tests that tamper with the flag now expect the typed form.
No blocking issues surfaced.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 1125 functions depend on the 1028 functions this change touches.
Health — grade C; 10 existing hotspot(s) in the area this change touches (pre-existing, not introduced here):
ci_workflow_findings()— 89 callers, 25 callees (high)gke_admit_workflow_findings()— 18 callers, 14 callees (high)check_commands()— 22 callers, 5 callees (high)native_workflow_findings()— 9 callers, 12 callees (high)_job_values()— 33 callers, 3 callees (high)release_prebuilt_workflow_findings()— 8 callers, 10 callees (high)admit_rule_findings()— 8 callers, 9 callees (high)_job_block()— 20 callers, 3 callees (high)- …and 2 more
Verification — 1125 functions in the blast radius were not formally verified this run (proofs are advisory here).
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 1092 function(s) in the blast radius were not formally verified this run
Test selection
Test selection
1400 of 1400 test file(s) selected (100%) via static blast radius.
Escalated to a full run for safety (
noncode-change,uncovered-code) — the selection is not trustworthy on its own (see below). CI should run the whole suite.
benchmarks/tests/test_aggregate.py— full-run-safetybenchmarks/tests/test_check_provenance.py— full-run-safetybenchmarks/tests/test_compare.py— full-run-safetybenchmarks/tests/test_public_names.py— full-run-safetybenchmarks/tests/test_run_all.py— full-run-safetybenchmarks/tests/test_run_strategy_feeds.py— full-run-safetydocker/pineforge_sink_finalize_test.py— full-run-safetydocker/pineforge_sink_replay_rq_test.py— full-run-safetydocker/pineforge_sink_replay_test.py— full-run-safetydocker/pineforge_sink_to_json_test.py— full-run-safetydocker/quota_columns_test.py— full-run-safetydocker/quota_convert_test.py— full-run-safetydocker/quota_finalize_test.py— full-run-safetydocker/replay_rq_engine_test.py— full-run-safetydocker/run_json_artifact_window_test.py— full-run-safetydocker/run_json_bin_test.py— full-run-safetydocker/run_json_bounded_transport_test.py— full-run-safetydocker/run_json_bulk_equity_fuzz_test.py— full-run-safetydocker/run_json_bulk_equity_test.py— full-run-safetydocker/run_json_codes_test.py— full-run-safetydocker/run_json_converter_metadata_test.py— full-run-safetydocker/run_json_converter_session_test.py— full-run-safetydocker/run_json_diagnostics_test.py— full-run-safetydocker/run_json_equity_scan_test.py— full-run-safetydocker/run_json_fused_test.py— full-run-safetydocker/run_json_harnesses_test.py— full-run-safetydocker/run_json_metrics_only_test.py— full-run-safetydocker/run_json_misc2_test.py— full-run-safetydocker/run_json_misc_test.py— full-run-safetydocker/run_json_pfbar_test.py— full-run-safetydocker/run_json_provenance_test.py— full-run-safetydocker/run_json_quota_supervisor_test.py— full-run-safetydocker/run_json_replay_test.py— full-run-safetydocker/run_json_selected_sink_test.py— full-run-safetydocker/run_json_sink_lexical_test.py— full-run-safetydocker/run_json_sink_summary_test.py— full-run-safetydocker/run_json_sink_test.py— full-run-safetydocker/run_json_sink_vectors_test.py— full-run-safetydocker/run_json_spool_work_test.py— full-run-safetydocker/run_json_stringio_test.py— full-run-safetydocker/run_json_symbol_feeds_test.py— full-run-safetydocker/run_json_syminfo_test.py— full-run-safetydocker/run_json_trade_scan_test.py— full-run-safetydocker/run_json_window_budget_test.py— full-run-safetydocker/run_json_wrapper_work_test.py— full-run-safetyinclude/pineforge/native_run_spec.hpp— full-run-safetyscripts/derive_corpus_feeds_self_test.py— full-run-safetyscripts/fingerprint_self_test.py— full-run-safetyscripts/run_corpus_self_test.py— full-run-safetyscripts/test_abi_receipt_skips.py— full-run-safety- … and 1350 more
non-code file(s) changed (
.github/workflows/release.yml,scripts/fixtures/ci_preflight/release_legacy.yml,scripts/fixtures/ci_preflight/release_split_hosted_2167.yml,scripts/fixtures/release_upload_context_2167.yml) → running the full suite for safety (a code graph can't see config/fixture/data deps)
changed code file(s) with no mapped test (
.github/workflows/release.yml,scripts/release_upload_context_proof.py) — a coverage gap or a missing link — running the full suite rather than only the selected tests
Selection is safe under the controlled-regression assumption; always-run tests + a periodic full run are the backstops. Advisory — it never changes the check verdict.
|
Superseded by #796, which carries this change on top of #795 (now on main) and also returns the release step contract to the typed form only. The branch is kept. 🤖 Generated with Claude Code |
Summary
The 1.11.0 release dry run stopped in both prebuilt jobs right after a successful configure, on the step's cache check:
The configure command passes
-DEigen3_DIR=/usr/share/eigen3/cmakewithout a type, so CMake keeps the entry asEigen3_DIR:UNINITIALIZED=/usr/share/eigen3/cmakeand the check never matches.Changes
.github/workflows/release.yml,scripts/build_prebuilt_bookworm.sh:-DEigen3_DIR:PATH=/usr/share/eigen3/cmake. The check itself is unchanged.scripts/ci_preflight.py: the release step contracts carry the typed form.scripts/fixtures/ci_preflight/release_legacy.yml,scripts/fixtures/ci_preflight/release_split_hosted_2167.yml,scripts/fixtures/release_upload_context_2167.yml: the same line; their sha256 pins inscripts/test_ci_preflight.pyandscripts/release_upload_context_proof.pyfollow.scripts/test_ci_preflight.py,scripts/test_build_prebuilt_bookworm.py: the strings that name the configure line.Verification
Reproduced with CMake 3.28.3 and the exact configure command:
-DEigen3_DIR=...: the cache holdsEigen3_DIR:UNINITIALIZED=/usr/share/eigen3/cmake, and the grep fails;-DEigen3_DIR:PATH=...: the cache holdsEigen3_DIR:PATH=/usr/share/eigen3/cmake, and the grep passes.🤖 Generated with Claude Code