feat(bin): add base-head test suite comparison - #2405
Open
coreldh wants to merge 5 commits into
Open
Conversation
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Publish Suite R2 only as exactly one upstream PR. Make the base/head suite partition runner sound while preserving isolation, checkout guard, and per-side inventories: rerun first-only candidate failures so flakes are not findings; classify outcome transitions with a regressed bucket including timeout-to-failure; independently reconcile git-tree enumeration so accounted can refuse; report compared coverage honestly; distinguish genuine fixed-to-passed from deleted/skipped erosion; record in-flight scripts as running/in flight; convert pre-flight errors to exit 2; clean up and write partial partition state on SIGINT/SIGTERM. Preserve the red-before-green firing cases for flaky failure, timeout-to-failure regression, enumeration mismatch, and deleted/skipped erosion. Do not include Routing R2, do not merge, and stop after the PR step completes before approving CI.
What Changed
fm-test-run.sh --compare-commitsto run bounded, isolated base/head test inventories and emit per-side plus partition JSON evidence.Risk Assessment
Testing
Confirmed target commit 26d0eac with a clean worktree, ran the focused comparison-runner cases only, and retained end-to-end CLI/JSON artifacts showing each required red-before-green behavior plus SIGTERM recovery; all exercised checks behaved as required.
Evidence: Focused comparison-test transcript
Evidence: End-to-end CLI transcript: flake, regression, erosion, enumeration
Evidence: Persisted partition JSON from CLI scenario
Evidence: SIGTERM partial-state and cleanup evidence
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed (2) ✅
bin/fm-test-run.sh:1542- Required criterion: “record in-flight scripts as running/in flight.” A SIGINT/SIGTERM during a retry confirmation reaches this spawned process without updating any inventory row; the signal handler then writes the original terminal outcome (for examplefailedortimed_out) and a partition with no confirmation observation. Preserve a running/in-flight confirmation state before waiting, so partial artifacts accurately identify the interrupted script.🔧 Fix: Preserve running confirmation state on interruption
1 error still open:
bin/fm-test-run.sh:1647- Required criterion: “rerun first-only candidate failures so flakes are not findings.” The classifier treats any changed retry outcome as a flake. Thus an initial head failure followed by a timeout or runner error on retry is removed fromregressedand can exit 0, although no passing retry established a flake. Keep such inconclusive retries refusing (or add a distinct refusing bucket); reserveflaky_transitionsfor a reproduced candidate that becomes passing.🔧 Fix: Refuse inconclusive candidate retries
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
FM_TEST_RUN_ONLY=test_compare_commits_partitions_and_bounds_every_script bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_accounts_for_script_lost_after_discovery bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_rechecks_a_first_only_failure bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_refuses_an_inconclusive_retry bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_reports_timeout_to_failure_as_regressed bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_never_calls_deleted_or_skipped_tests_fixed bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_refuses_an_independent_enumeration_mismatch bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_headline_exposes_measured_coverage bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_preflight_errors_exit_two_without_tracebacks bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_signal_records_inflight_and_cleans_clones bash tests/fm-test-run.test.shFM_TEST_RUN_ONLY=test_compare_commits_signal_records_inflight_confirmation bash tests/fm-test-run.test.shManual isolated--compare-commitsfixtures retained CLI and JSON evidence for flake confirmation, timeout-to-failure regression, deletion/skipped erosion, enumeration refusal, and SIGTERM partial state/clone cleanup.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.