ci(inferno): prune omit entries that suppress nothing, and report new ones - #498
Merged
Conversation
aacruzgon
force-pushed
the
ci/492-inferno-omit-list-audit
branch
from
August 4, 2026 23:31
23793a3 to
4afe502
Compare
aacruzgon
changed the base branch from
main
to
fix/494-postgres-date-negative-offset
August 4, 2026 23:31
aacruzgon
force-pushed
the
ci/492-inferno-omit-list-audit
branch
from
August 5, 2026 02:11
4afe502 to
73f7b5c
Compare
aacruzgon
force-pushed
the
ci/492-inferno-omit-list-audit
branch
from
August 5, 2026 17:41
73f7b5c to
c22a848
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
aacruzgon
force-pushed
the
ci/492-inferno-omit-list-audit
branch
from
August 6, 2026 17:56
c22a848 to
a677743
Compare
… ones `OMITTED_TESTS` drops test ids from the US Core failure count. An entry that suppresses nothing is worse than no entry: it is a test that would go red on a real regression and be swallowed instead. 20 of the 69 entries were in that state (#492). Removed — verified passing on both sqlite (the audit in #492) and postgres (six local suite runs after #490/#494): - the 12 `data_absent_reason` entries. The stated reason — "test data does not include DAR extensions/code systems" — no longer holds; both tests pass in all six suites. These were blocked on #490 because they failed on postgres until the bare-id reference fix landed. - the 3 `practitioner_address_test` entries, passing in v6.1.0, v7.0.0 and v8.0.0, the only suites they were emitted for. Scoped rather than removed — 5 ids emitted for suites that do not contain them, so they never could have matched: - `us_core_profile_support` / `us_core_instantiate` are absent from the v3.1.1 suite; now emitted from v4.0.0 on. - the `simple_observation` group only exists from v6.1.0; now emitted from there on. These came from the unconditional block, which assumed every suite has the full capability-statement set and a `simple_observation` group. Adds a "Report omissions that suppressed nothing" step so the list gets pruned as things get fixed instead of accreting. It reports two shapes per run — ids that ran without failing, and ids not in the suite at all — as job-summary sections plus `::warning::` annotations. Deliberately a warning, not a gate. Failing on a stale omission would make a *fixed* test turn CI red, which is the incentive that grew this list. It also cannot gate safely: the list is shared across all five backend legs, and an id passing on one backend may still be suppressing a real failure on another, so pruning needs agreement across the matrix that a per-job gate cannot see. Tests: the audit jq was run against all six suites' result JSON from local postgres runs. Zero ABSENT entries remain, confirming the scoping is complete; feeding the five removed ids back in reports all five as ABSENT while leaving a genuinely-present id unreported, confirming the detector fires rather than being silently empty. It surfaces 18 further stale candidates among the 49 live omissions this PR does not touch — postgres-only data, so they need cross-backend confirmation before pruning, which is exactly what the new step is for. Workflow YAML parses. Refs #492
aacruzgon
force-pushed
the
ci/492-inferno-omit-list-audit
branch
from
August 7, 2026 14:48
a677743 to
4b75792
Compare
smunini
approved these changes
Aug 7, 2026
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.
Summary
OMITTED_TESTSdrops test ids from the US Core failure count. An entry that suppresses nothing is worse than no entry at all: it is a test that would go red on a real regression and be silently swallowed instead. #492 found 20 of the 69 entries in that state.This prunes those 20 and adds a step that reports new ones every run, so the list shrinks as things get fixed rather than accreting.
Refs #492.
Changes
Removed — verified passing on two backends
data_absent_reason_extension+_code_system, all six suitespractitioner_address_testin v6.1.0 / v7.0.0 / v8.0.0The
data_absent_reasonentries were the ones blocked on #490 — they failed on Postgres until the bare-id reference fix. Their stated reason ("test data does not include DAR extensions/code systems") no longer holds.Scoped rather than removed — 5 ids the suite never contained
These came from the unconditional block, which assumed every suite has the full capability-statement set and a
simple_observationgroup:us_core_profile_supportus_core_instantiatesimple_observation_validation_testDeleting them would have removed live omissions in the suites where they do fail, which is why #492 called for scoping.
Added — "Report omissions that suppressed nothing"
Reports two shapes per run, as job-summary sections plus
::warning::annotations:Deliberately a warning, not a gate. Two reasons, both in the step's comment:
Testing
A workflow change can't be proved by a unit test, so this was validated by extracting the actual
run:blocks from the YAML and executing them underbash -eagainst the six suites' real result JSON (the runs behind the numbers in #492). Not a transcription of the logic — the shipped bash, with${{ matrix.suite_id }}substituted and$GITHUB_ENV/$GITHUB_STEP_SUMMARYpointed at temp files, exactly as Actions wires them.OMITTED_TESTSround-trips through$GITHUB_ENVand parses as valid JSON in every suite (3 / 5 / 7 / 9 / 11 / 14 entries for v3.1.1 → v8.0.0).ABSENTentries remain in any suite — the scoping is complete.ABSENT, while a genuinely-present id in the same list is correctly not reported. A detector that silently returns nothing looks identical to a clean run, so this was worth pinning.results.json(an early-run failure, reachable viaif: always()) prints a notice and exits 0; a list where every omitted id genuinely failed writes the:white_check_mark:summary and exits 0. Neither fails the job.actionlintdelta againstmainis clean: no new warnings or errors. It adds 4SC2086(the>> $GITHUB_STEP_SUMMARYform used by all 50 pre-existing instances in this file) and 4SC2001(sed 's/^/- /'prefixing multi-line output, which parameter expansion cannot do). Both are info/style and consistent with the file.It already found 18 more
Running the new audit against the six suites surfaces 18 further stale candidates among the 49 live omissions this PR does not touch:
Mostly
service_request,observation_pregnancyintent/pregnancystatus,smokingstatus,specimenandobservation_adi_documentationvalidation tests. Not pruned here — that is Postgres-only data, and per the reasoning above an id passing on Postgres may still be suppressing a real failure on MongoDB or Elasticsearch. Surfacing them across the matrix is precisely what the new step is for; the next full nightly will say which are safe.Notes
jqrather thanecho "$RESULTS" | jq. The results carry\ninsideresult_message, and anechothat interprets escapes expands them mid-string and makes the JSON unparseable. Bash's builtinechodoes not do this, so the existing steps are fine on GitHub runners — but the filename form removes the footgun entirely, and I hit it locally under zsh while testing.Check test resultsstill fails only onfail/error, and still excludes omitted ids. ci(inferno): the US Core gate ignoresskip— postgres passed 25 of 544 tests and reported success for six weeks #491 covers theskip-blindness separately.