Skip to content

ci: retain PR smoke test output - #800

Merged
luisleo526 merged 3 commits into
mainfrom
ci/retain-pr-smoke-output
Nov 12, 2026
Merged

luisleo526 merged 3 commits into
mainfrom
ci/retain-pr-smoke-output

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

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

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.

@graphify-labs graphify-labs Bot 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.

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-safety
  • benchmarks/tests/test_check_provenance.py — full-run-safety
  • benchmarks/tests/test_compare.py — full-run-safety
  • benchmarks/tests/test_public_names.py — full-run-safety
  • benchmarks/tests/test_run_all.py — full-run-safety
  • benchmarks/tests/test_run_strategy_feeds.py — full-run-safety
  • docker/pineforge_sink_finalize_test.py — full-run-safety
  • docker/pineforge_sink_replay_rq_test.py — full-run-safety
  • docker/pineforge_sink_replay_test.py — full-run-safety
  • docker/pineforge_sink_to_json_test.py — full-run-safety
  • docker/quota_columns_test.py — full-run-safety
  • docker/quota_convert_test.py — full-run-safety
  • docker/quota_finalize_test.py — full-run-safety
  • docker/replay_rq_engine_test.py — full-run-safety
  • docker/run_json_artifact_window_test.py — full-run-safety
  • docker/run_json_bin_test.py — full-run-safety
  • docker/run_json_bounded_transport_test.py — full-run-safety
  • docker/run_json_bulk_equity_fuzz_test.py — full-run-safety
  • docker/run_json_bulk_equity_test.py — full-run-safety
  • docker/run_json_codes_test.py — full-run-safety
  • docker/run_json_converter_metadata_test.py — full-run-safety
  • docker/run_json_converter_session_test.py — full-run-safety
  • docker/run_json_diagnostics_test.py — full-run-safety
  • docker/run_json_equity_scan_test.py — full-run-safety
  • docker/run_json_fused_test.py — full-run-safety
  • docker/run_json_harnesses_test.py — full-run-safety
  • docker/run_json_metrics_only_test.py — full-run-safety
  • docker/run_json_misc2_test.py — full-run-safety
  • docker/run_json_misc_test.py — full-run-safety
  • docker/run_json_pfbar_test.py — full-run-safety
  • docker/run_json_provenance_test.py — full-run-safety
  • docker/run_json_quota_supervisor_test.py — full-run-safety
  • docker/run_json_replay_test.py — full-run-safety
  • docker/run_json_selected_sink_test.py — full-run-safety
  • docker/run_json_sink_lexical_test.py — full-run-safety
  • docker/run_json_sink_summary_test.py — full-run-safety
  • docker/run_json_sink_test.py — full-run-safety
  • docker/run_json_sink_vectors_test.py — full-run-safety
  • docker/run_json_spool_work_test.py — full-run-safety
  • docker/run_json_stringio_test.py — full-run-safety
  • docker/run_json_symbol_feeds_test.py — full-run-safety
  • docker/run_json_syminfo_test.py — full-run-safety
  • docker/run_json_trade_scan_test.py — full-run-safety
  • docker/run_json_window_budget_test.py — full-run-safety
  • docker/run_json_wrapper_work_test.py — full-run-safety
  • include/pineforge/native_run_spec.hpp — full-run-safety
  • scripts/derive_corpus_feeds_self_test.py — full-run-safety
  • scripts/fingerprint_self_test.py — full-run-safety
  • scripts/run_corpus_self_test.py — full-run-safety
  • scripts/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.

@luisleo526
luisleo526 merged commit 9f8309f into main Nov 12, 2026
17 checks passed
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.

1 participant