Pin json below 3 to unblock CI - #655
Merged
Merged
Conversation
json 3.0.0, released 2026-09-07, makes every option a keyword argument and removes JSON::PRETTY_STATE_PROTOTYPE and JSON.pretty_unparse. The Gemfile declares json without a constraint and Gemfile.lock is not tracked, so CI now resolves 3.0.0 and Puppet::Util::Json fails on every JSON.parse call, taking about 1590 specs with it. Constrain it below 3 until Puppet::Util::Json is ported to the new API. The constraint also gives Dependabot something to bump, so the port gets a PR to land against. Part of OpenVoxProject#654 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Michael Harp <mike@mikeharp.com>
bastelfreak
approved these changes
Sep 7, 2026
bastelfreak
enabled auto-merge
September 7, 2026 17:07
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
Part of #654.
json 3.0.0, released 2026-09-07, makes every option a keyword argument and removes
JSON::PRETTY_STATE_PROTOTYPEandJSON.pretty_unparse. TheGemfiledeclaresjsonwithout a constraint andGemfile.lockis not tracked, so every CI run since then resolves 3.0.0 andPuppet::Util::Jsonraises on everyJSON.parsecall. The ruby 3.4 job on #653 had 1590 spec failures from this.This pins
jsonbelow 3 in the:packaginggroup, which is the only place it is declared. It is not a gemspec runtime dependency, so this changes nothing for installed agents; they keep using the json bundled with their Ruby.The constraint also gives Dependabot something to propose bumping. It couldn't open a PR for an unconstrained gem with no lockfile, which is why this wasn't caught.
Porting
Puppet::Util::Jsonto the json 3 API is tracked in #654 and should follow, since a future Ruby release will ship json 3 as its default gem.Verification
bundle checkresolves with the pin. The local lockfile already had json 2.20.0, so nothing else moves.Assisted by Claude.