fix(ci-versioning): report both unverified reasons, always - #19
Merged
Conversation
…the two warnings reading as one axis Two warnings both opened with "N failure(s)" — one the unverified total, the other the count attributed by namespace — with nothing saying which axis either measured. On BHoM/BHoM run 33849699768 that was read as "0 classified by resolution, 145 by attribution". The artefact says 114 UnresolvableTypeAbsent and 31 NoMethodEvent. Correct numbers, wrong conclusion, purely from presentation. Three changes, no behaviour change to classification or attribution: 1. New "Unverified basis:" line, printed unconditionally next to "Attribution basis:", splitting the unverified bucket into unresolvable (a type the record needs is absent from the closure) and unattributable (ownership inferred from a namespace prefix). Extracted as UnverifiedBasis so the arithmetic is testable. Unresolvable is counted by path; unattributable by subtraction from the unverified total, so the two always sum to it and a path added later cannot silently vanish from the report. 2. The namespace-fallback warning no longer leads with a finding count. It is a statement about the attribution basis of findings that may have been classified for a different reason, and phrasing it as "N failure(s)" is what made it read as a classification total. It now says so explicitly and reports how many of those were separately unverifiable. 3. The job summary's two breakdown rows print even when zero, and both bases are surfaced in the table. A silent zero cannot be told from a number nobody measured, which is the trap the attribution-basis line already had. Verified end to end against the local closure: "Unverified basis: 66 unresolvable ..., 32 unattributable ...", matching Classification: UnresolvableTypeAbsent=66, NoMethodEvent=32. Suite 135 passed. Verified by mutation: deriving unattributable by path instead of by subtraction fails UnverifiedBasis_AnUnknownUnverifiedPath_IsNotSilentlyDropped and nothing else. Pester 12 passed, including a contiguity check that nothing branches between the total and its two components; asserted by contiguity rather than by absence of any 'if', because #17 legitimately uses elseif ($unverified -gt 0) further down. Refs BHoM/internal-tickets#31, BHoM/internal-tickets#32
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.
Why
Two warnings both opened with
N failure(s)and neither said which axis it measured:The first is the unverified total; the second is the count whose ownership was inferred. Read together they say "all 145 were attribution problems, so resolution classified nothing" — i.e. that #18 was inert. The artefact for that run says otherwise:
UnresolvableTypeAbsentNoMethodEventCorrect numbers, wrong conclusion, entirely from presentation. No classification or attribution behaviour changes here.
What
1. New
Unverified basis:line, printed unconditionally besideAttribution basis::Extracted as
UnverifiedBasisso the arithmetic is testable. Unresolvable is counted by path; unattributable by subtraction from the unverified total, so the two always sum to it and a path added later cannot silently vanish — it lands in unattributable and shows up as a number nobody expected, rather than in neither.2. The namespace-fallback warning no longer leads with a finding count. It is a statement about the attribution basis of findings that may have been classified for a different reason, and phrasing it as
N failure(s)is what made it read as a classification total:3. The job summary's breakdown rows print even when zero, and both bases appear in the table. A silent zero cannot be told from a number nobody measured — the same trap the attribution-basis line already had, and the one #32's methodological note is about.
Verification
End to end against the local closure:
Suite 135 passed. Verified by mutation: deriving unattributable by path instead of by subtraction fails
UnverifiedBasis_AnUnknownUnverifiedPath_IsNotSilentlyDroppedand nothing else.Pester 12 passed, including a check that nothing branches between the total and its two components. That is asserted by contiguity rather than by the absence of any
if, because #17 legitimately useselseif ($unverified -gt 0)further down for the findings-table prose — the broader assertion failed on that and was tightened.Refs BHoM/internal-tickets#31, BHoM/internal-tickets#32