Pin GOPAL 2.0.0, and repair what the bump exposed - #87
Merged
Conversation
The submodule was 17 commits behind and had not moved since before the declarations migration, so two separate breakages surfaced together. From GOPAL 2.0.0, the alias table is one-to-one. Three tests asserted the old contract: at least 20 aliases, a named legacy spelling present, and a legacy spelling resolving to the policy that computes the metric. All three now assert the opposite, because a gap report that still resolved a retired spelling would mark a requirement as met while the value never reaches a rule. From the earlier declarations migration, test_parsed_fields_match_what_the_policy_reads matched only `input.a.b`. Every declaration read is now `declarations.resolve(input, ["a", "b"])`, so read_paths came back empty and the loop over it asserted nothing. The test had been passing without checking anything. It reads both forms now, and refuses to run on an empty set either side. Verified against both pins: 45 passed on 1.x, 4 failed on 2.0.0, and 216 pass after these fixes.
Prinevo
approved these changes
Aug 29, 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.
Bumps
aicertify/opa_policiesfrom9950848(v1.3.0-58) to0482ec9(v2.0.0).
The pin was 17 commits behind and had not moved since before GOPAL's
declarations migration, so bumping it surfaced two unrelated breakages at once.
Verified against both pins, which is the only way to tell them apart:
From GOPAL 2.0.0: the alias table is one-to-one
Three tests asserted the old contract — at least 20 aliases, a named legacy
spelling present, and a legacy spelling resolving to the policy that computes
the metric. They now assert the opposite. A gap report that still resolved a
retired spelling would mark a requirement as met while the value never
reaches a rule, which is the same failure mode the gap report exists to catch.
test_aliases_are_parsed_not_just_the_keyskeeps its original purpose. Theparser once returned every canonical name with an empty alias list, and an
empty list looks like a working parser from outside. Now that the table is
one-to-one, an entry parsed as empty and an entry parsed as itself are
indistinguishable by count, so it asserts both that no entry is empty and that
the total equals the number of metrics.
From the earlier declarations migration: a test that checked nothing
test_parsed_fields_match_what_the_policy_readsbuilt its expected set withEvery declaration read in GOPAL is now
declarations.resolve(input, ["a", "b"]), so that regex matched nothing,read_pathswas empty, and theforloop over it asserted nothing at all. Thetest had been green while checking nothing since the migration landed.
It now recognises both read forms and refuses to run on an empty set on either
side, so the same silent-vacuum cannot recur.
Not changed
summary.toxicity_valuesstill written; report generation reads it. It is nolonger a GOPAL input.