Repository navigation
ci: retain PR smoke test output - #800
Conversation
Exercise the real workflow and collector removal, field and position mutations. Preserve exact four-or-five-step admission and producer failure checks.
Retain JUnit and LastTest output after both normal x86 smoke producers, including failure paths, for three days under distinct job/run/attempt names.
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
Ships the pinned always-run "Retain PR smoke test output" upload step in the build and build-debug jobs of gke-pr.yml, so ctest-junit.xml and LastTest.log are kept for 3 days even when the smoke tests fail. Missing files only warn, so jobs that die before producing output don't fail on the upload. Adds a shipped-workflow check in the tests that requires both jobs to end with exactly this collector as the fifth step. The existing field-mutation and collector-position tests now start from the shipped workflow and also assert this check trips. Admission itself is unchanged and still accepts either four or five steps.
No blocking issues surfaced.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 841 functions depend on the 785 functions this change touches.
Health — grade A; 2 existing hotspot(s) in the area this change touches (pre-existing, not introduced here):
main_admission_data_findings()— 7 callers, 3 callees (medium)legacy_release_workflow()— 6 callers, 3 callees (medium)
Verification — 841 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: 809 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) — 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/gke-pr.yml) → running the full suite for safety (a code graph can't see config/fixture/data deps)
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.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Release and Debug pull request smoke jobs now retain their original CTest JUnit report and LastTest log on success or failure. Artifacts use separate job, run and attempt names and are retained for three days; missing output produces a warning.
Validation: the final tests against the original workflow ran eight tests with exactly three expected missing-collector failures. The candidate passed all eight tests and the workflow contract check, with unchanged source hashes.
Hosted preflight must pass on the pushed head. Because this pull_request_target workflow runs from the base branch, uploaded output will be confirmed on the first eligible normal pull request after merge. Hosted artifact availability, runtime output and scientific parity remain unverified.
🤖 Generated with Claude Code