Skip to content

ROSAENG-61040 | refactor: remove 10 underutilized third-party dependencies#3411

Closed
markirish wants to merge 1 commit into
openshift:masterfrom
markirish:ROSAENG-61040-review-dependencies
Closed

ROSAENG-61040 | refactor: remove 10 underutilized third-party dependencies#3411
markirish wants to merge 1 commit into
openshift:masterfrom
markirish:ROSAENG-61040-review-dependencies

Conversation

@markirish

@markirish markirish commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

PR Summary

10 third-party dependencies are removed from the code base and replaced with either extended standard library package functionality, well-supported third-party packages already used elsewhere (e.g. k8s.io/apimachinery/pkg/util/validation), or custom implementation.

Detailed Description of the Issue

Our ROSA CLI project currently imports several third-party libraries that are only utilized in a single file (e.g., exclusively within a test file or for a single validation function). Relying on entire external dependencies for isolated use cases unnecessarily increases our security attack surface, complicates dependency management, and bloats the project.

This PR audits our current dependencies and eliminate those that are underutilized. If a library is only used for a simple utility—like a validation function—it was extracted or rewritten directly in our codebase to remove the external dependency entirely.

Dependencies removed are:

  • dchest/validator: single-call domain validation, replaced with existing k8s.io/apimachinery validator
  • dustin/go-humanize: byte formatting only, replaced with ~15-line readableBytes helper
  • nathan-fiscaletti/consolesize-go: terminal size only, replaced with golang.org/x/term.GetSize
  • alessio/shellescape: shell quoting only, replaced with ~10-line ShellQuote helper
  • pkg/errors: 3 Wrapf calls, replaced with fmt.Errorf %w wrapping
  • PuerkitoBio/goquery: HTML parsing only, replaced with golang.org/x/net/html tokenizer
  • c0b/go-ordered-json: abandoned ordered map lib, replaced with internal/ordered package
  • go-logr/logr: dead code (CapaLogger never called), removed entirely
  • gopkg.in/yaml.v2: 5 files using Marshal/Unmarshal only, migrated to yaml.v3
  • google/uuid: dead code (IsValidUUID never called), removed entirely"

Related Issues and PRs

Type of Change

  • feat - adds a new user-facing capability.
  • fix - resolves an incorrect behavior or bug.
  • docs - updates documentation only.
  • style - formatting or naming changes with no logic impact.
  • refactor - code restructuring with no behavior change.
  • test - adds or updates tests only.
  • chore - maintenance work (tooling, housekeeping, non-product code).
  • build - changes build system, packaging, or dependencies for build output.
  • ci - changes CI pipelines, jobs, or automation workflows.
  • perf - improves performance without changing intended behavior.

Previous Behavior

Default CLI behavior

Behavior After This Change

Default CLI behavior, slightly stricter domain check

How to Test (Step-by-Step)

Preconditions

Test Steps

  1. run make test

Expected Results

all tests should pass

Proof of the Fix

All tests pass

Breaking Changes

  • No breaking changes
  • Yes, this PR introduces a breaking change (describe impact and migration plan below)

Developer Verification Checklist

  • Commit subject/title follows [JIRA-TICKET] | [TYPE]: <MESSAGE>.
  • PR description clearly explains both what changed and why.
  • Relevant Jira/GitHub issues and related PRs are linked.
  • [ x make install-hooks has been run in this clone.
  • Tests were added/updated where appropriate.
  • I manually tested the change.
  • make test passes.
  • make lint passes.
  • make rosa passes.
  • Documentation or repo-local agent guidance was added/updated where appropriate.
  • Any risk, limitation, or follow-up work is documented.

Summary by CodeRabbit

  • Bug Fixes

    • Improved Google hosted-domain validation with case normalization and stricter DNS-compliant checks.
    • More reliable mirror version detection, including updated “latest” handling.
    • Terminal gate listings now size output using the active terminal width with a safe fallback.
    • Safer shell argument quoting and improved, dependency-free download progress formatting.
  • New Features

    • Ordered JSON output now consistently preserves key insertion order (including for nested objects) and keeps redaction behavior aligned.
  • Refactor / Tests

    • Simplified logging and updated YAML handling to newer parsing behavior.
    • Expanded coverage for ordered JSON behavior and mirror version parsing.

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 23, 2026
@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: markirish
Once this PR has been reviewed and has the lgtm label, please assign gdbranco for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@markirish, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 10 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 14e5a4aa-541a-482d-b7e1-a5828c33c674

📥 Commits

Reviewing files that changed from the base of the PR and between 8ffe71a and 6f65241.

⛔ Files ignored due to path filters (70)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/PuerkitoBio/goquery/.gitattributes is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/array.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/expand.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/filter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/iteration.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/manipulation.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/property.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/query.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/traversal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/type.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/utilities.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/parser.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/pseudo_classes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/selector.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/serialize.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/specificity.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/domain.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/email.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/README.markdown is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/big.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/bigbytes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/bytes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/comma.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/commaf.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/ftoa.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/humanize.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/number.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/ordinals.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/si.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/times.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/consolesize_unix.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/consolesize_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/.gitlab-ci.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/ordered.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/LICENSE.libyaml is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/NOTICE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/apic.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/decode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/emitterc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/encode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/parserc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/readerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/resolve.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/scannerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/sorter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/writerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yaml.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yamlh.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yamlprivateh.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (28)
  • cmd/create/idp/google.go
  • cmd/create/idp/validators_test.go
  • cmd/list/gates/cmd.go
  • cmd/upgrade/machinepool/cmd.go
  • go.mod
  • internal/ordered/ordered.go
  • internal/ordered/ordered_test.go
  • pkg/aws/client.go
  • pkg/aws/client_test.go
  • pkg/aws/cloudformation_test.go
  • pkg/aws/idps_test.go
  • pkg/aws/logging.go
  • pkg/aws/policies_test.go
  • pkg/aws/sts_test.go
  • pkg/clusterregistryconfig/flags.go
  • pkg/helper/download/download.go
  • pkg/helper/download/readable_bytes_test.go
  • pkg/helper/helpers.go
  • pkg/helper/helpers_test.go
  • pkg/logging/round_tripper.go
  • pkg/output/output.go
  • pkg/test/arg_generator.go
  • pkg/test/arg_verifier.go
  • pkg/test/structure_verifier.go
  • pkg/version/retriever.go
  • pkg/version/retriever_test.go
  • tests/e2e/hcp_tuning_config_test.go
  • tests/utils/exec/rosacli/ocm_resource_service.go
📝 Walkthrough

Walkthrough

The pull request adds an internal ordered JSON map and switches its consumers from an external implementation. AWS logging is simplified to logrus-only usage. Mirror version extraction moves from goquery to streaming HTML tokenization. Command validation, terminal sizing, and error wrapping are updated. Shell quoting and download byte formatting become internal helpers, YAML imports move to yaml.v3, and module requirements are adjusted.

Suggested reviewers: amandahla

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise, specific, and accurately summarizes the main refactor of removing underutilized third-party dependencies.
Description check ✅ Passed The PR description follows the template well and includes the summary, issue context, related issue, type, testing, proof, and checklist.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PASS: The added OrderedMap Ginkgo specs use fixed string titles only; no fmt.Sprintf or runtime values appear in changed test names.
Test Structure And Quality ✅ Passed The touched tests are single-purpose, use BeforeEach/AfterEach for setup/cleanup, and include no new indefinite waits or resource leaks.
Microshift Test Compatibility ✅ Passed PASS: The only e2e file change is a YAML import swap in an existing Describe/It suite; no new Ginkgo tests or MicroShift-unsafe APIs/features were added.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PASS — The only changed e2e file is an import swap; its existing tuning-config tests make no multi-node/HA assumptions or SNO-sensitive setup.
Topology-Aware Scheduling Compatibility ✅ Passed Touched files are CLI/helper/dependency refactors only; no manifests/controllers or topology/scheduling constructs were found.
Ote Binary Stdout Contract ✅ Passed No changed main/init/TestMain/suite setup writes to stdout; stdout use is limited to normal command output or helper runtime code.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The only e2e change is a yaml.v3 import swap; no new Ginkgo specs or IPv4/external-network assumptions were added.
No-Weak-Crypto ✅ Passed No weak-crypto or secret-comparison code was added; the touched files only change validation, JSON ordering, parsing, quoting, and logging.
Container-Privileges ✅ Passed No changed file is a container/K8s manifest, and the touched files contain no privileged settings or allowPrivilegeEscalation flags.
No-Sensitive-Data-In-Logs ✅ Passed No new sensitive-data logging was added; touched log paths only rewire dependencies or continue to redact Authorization and configured form/JSON fields.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (6)
internal/ordered/ordered.go (1)

10-10: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the exported ordered-map API.

Add Go doc comments for KVPair, OrderedMap, NewOrderedMap, and the exported methods.

As per coding guidelines, “Use exported symbol doc comments when new public types or functions are introduced.”

Also applies to: 15-15, 20-20, 26-26, 33-33, 45-45, 68-68

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/ordered/ordered.go` at line 10, Add Go doc comments to the exported
ordered-map symbols KVPair, OrderedMap, NewOrderedMap, and every exported method
in internal/ordered/ordered.go. Ensure each comment starts with the
corresponding symbol name and briefly describes its purpose, without changing
implementation behavior.

Source: Coding guidelines

cmd/list/gates/cmd.go (1)

188-191: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the fallback width into a named constant.

80 is a behavior-defining default; name it instead of leaving a magic number in the terminal-sizing path.

As per coding guidelines, avoid magic numbers when the value matters to behavior or readability.

Proposed fix
+const defaultTerminalWidth = 80
+
...
-		cols = 80
+		cols = defaultTerminalWidth
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/list/gates/cmd.go` around lines 188 - 191, Define a named constant for
the default terminal width used in the terminal-sizing path, then replace the
literal 80 in the cols fallback within term.GetSize handling with that constant.
Preserve the existing behavior when size detection fails or returns a
non-positive width.

Source: Coding guidelines

cmd/create/idp/google.go (1)

138-139: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add regression coverage for the validator change.

The supplied cmd/create/idp/validators_test.go context only covers example.com and "not a domain", while this change alters normalization and DNS validation rules. Add focused Ginkgo/Gomega cases for uppercase input, length limits, hyphens, underscores, trailing dots, and the intended value casing passed to HostedDomain.

As per coding guidelines, behavior changes require focused automated tests using Ginkgo v2 and Gomega.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/create/idp/google.go` around lines 138 - 139, Add focused Ginkgo
v2/Gomega regression cases in the existing validator tests for the hosted-domain
validation flow around isValidHostedDomain: cover uppercase normalization,
maximum and over-limit lengths, valid and invalid hyphen placement, underscore
rejection, trailing-dot rejection, and verify HostedDomain receives the intended
normalized casing. Reuse the existing test setup and assertions without changing
unrelated validation behavior.

Source: Coding guidelines

pkg/helper/helpers.go (2)

269-269: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the new exported function.

Add a Go doc comment describing that ShellQuote returns a POSIX-shell-escaped single argument.

As per coding guidelines, new exported functions require doc comments.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/helper/helpers.go` at line 269, Document the exported ShellQuote function
with a Go doc comment beginning with “ShellQuote” and describing that it returns
a POSIX-shell-escaped single argument.

Source: Coding guidelines


266-277: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Add focused tests for the shell-quoting contract.

Cover empty strings, safe values, shell metacharacters, whitespace, and embedded single quotes to prevent regressions in this security-sensitive replacement.

Based on coding guidelines and path instructions, changed behavior should have focused Ginkgo v2/Gomega coverage.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/helper/helpers.go` around lines 266 - 277, Add focused Ginkgo v2/Gomega
coverage for ShellQuote, covering empty strings, safe unquoted values, shell
metacharacters, whitespace, and embedded single quotes with exact expected
outputs. Place the tests alongside the existing helper tests and preserve the
current quoting contract.

Sources: Coding guidelines, Path instructions

pkg/helper/download/download.go (1)

153-171: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add regression tests for readableBytes.

The custom formatter replaces humanize.Bytes and changes user-facing rounding behavior. Cover 0/999/1000 bytes, values near 10 units, unit boundaries, and math.MaxUint64 to preserve output compatibility and catch edge cases.

As per coding guidelines and path instructions, behavior changes require focused Ginkgo v2/Gomega tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/helper/download/download.go` around lines 153 - 171, Add focused Ginkgo
v2/Gomega regression tests for readableBytes covering 0, 999, and 1000 bytes;
values just below, at, and above 10 units; each unit boundary; and
math.MaxUint64. Assert the exact formatted strings to preserve the existing
humanize.Bytes-compatible rounding behavior and expose overflow or suffix-index
edge cases.

Sources: Coding guidelines, Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/ordered/ordered.go`:
- Around line 116-117: Update the decoding logic in the ordered map around
om.keys and om.values to call om.Set(key, value) instead of appending the key
and assigning the value directly. Preserve the existing key order while ensuring
duplicate JSON members replace the prior value without creating duplicate
positions.
- Around line 68-70: Update OrderedMap.UnmarshalJSON to reset keys and allocate
a fresh values map before decoding, ensuring zero-value receivers cannot panic
and reused receivers discard keys absent from the new JSON document. Add
regression tests covering unmarshalling into a zero-value OrderedMap and reusing
an already populated receiver.

In `@pkg/version/retriever.go`:
- Around line 101-110: Update the parseVersionLinksFromHTML error return in the
version retrieval flow to wrap the original error with %w instead of %v,
preserving errors.Is/errors.As behavior while retaining the existing context
message.
- Around line 152-162: Update hasClass to treat the class attribute as a
space-separated token list and return true when any token equals the requested
class, preserving false for non-matching attributes. Add a retriever_test.go
fixture row such as class="file odd" to verify multi-class rows are included.

---

Nitpick comments:
In `@cmd/create/idp/google.go`:
- Around line 138-139: Add focused Ginkgo v2/Gomega regression cases in the
existing validator tests for the hosted-domain validation flow around
isValidHostedDomain: cover uppercase normalization, maximum and over-limit
lengths, valid and invalid hyphen placement, underscore rejection, trailing-dot
rejection, and verify HostedDomain receives the intended normalized casing.
Reuse the existing test setup and assertions without changing unrelated
validation behavior.

In `@cmd/list/gates/cmd.go`:
- Around line 188-191: Define a named constant for the default terminal width
used in the terminal-sizing path, then replace the literal 80 in the cols
fallback within term.GetSize handling with that constant. Preserve the existing
behavior when size detection fails or returns a non-positive width.

In `@internal/ordered/ordered.go`:
- Line 10: Add Go doc comments to the exported ordered-map symbols KVPair,
OrderedMap, NewOrderedMap, and every exported method in
internal/ordered/ordered.go. Ensure each comment starts with the corresponding
symbol name and briefly describes its purpose, without changing implementation
behavior.

In `@pkg/helper/download/download.go`:
- Around line 153-171: Add focused Ginkgo v2/Gomega regression tests for
readableBytes covering 0, 999, and 1000 bytes; values just below, at, and above
10 units; each unit boundary; and math.MaxUint64. Assert the exact formatted
strings to preserve the existing humanize.Bytes-compatible rounding behavior and
expose overflow or suffix-index edge cases.

In `@pkg/helper/helpers.go`:
- Line 269: Document the exported ShellQuote function with a Go doc comment
beginning with “ShellQuote” and describing that it returns a POSIX-shell-escaped
single argument.
- Around line 266-277: Add focused Ginkgo v2/Gomega coverage for ShellQuote,
covering empty strings, safe unquoted values, shell metacharacters, whitespace,
and embedded single quotes with exact expected outputs. Place the tests
alongside the existing helper tests and preserve the current quoting contract.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: b10a090b-7007-4d61-9648-99df9ff6e955

📥 Commits

Reviewing files that changed from the base of the PR and between 71fe022 and 286b64a.

⛔ Files ignored due to path filters (70)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/PuerkitoBio/goquery/.gitattributes is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/array.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/expand.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/filter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/iteration.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/manipulation.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/property.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/query.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/traversal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/type.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/utilities.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/parser.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/pseudo_classes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/selector.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/serialize.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/specificity.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/domain.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/email.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/README.markdown is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/big.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/bigbytes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/bytes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/comma.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/commaf.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/ftoa.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/humanize.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/number.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/ordinals.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/si.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/times.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/consolesize_unix.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/consolesize_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/.gitlab-ci.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/ordered.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/LICENSE.libyaml is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/NOTICE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/apic.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/decode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/emitterc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/encode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/parserc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/readerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/resolve.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/scannerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/sorter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/writerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yaml.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yamlh.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yamlprivateh.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (25)
  • cmd/create/idp/google.go
  • cmd/list/gates/cmd.go
  • cmd/upgrade/machinepool/cmd.go
  • go.mod
  • internal/ordered/ordered.go
  • internal/ordered/ordered_test.go
  • pkg/aws/client.go
  • pkg/aws/client_test.go
  • pkg/aws/cloudformation_test.go
  • pkg/aws/idps_test.go
  • pkg/aws/logging.go
  • pkg/aws/policies_test.go
  • pkg/aws/sts_test.go
  • pkg/clusterregistryconfig/flags.go
  • pkg/helper/download/download.go
  • pkg/helper/helpers.go
  • pkg/logging/round_tripper.go
  • pkg/output/output.go
  • pkg/test/arg_generator.go
  • pkg/test/arg_verifier.go
  • pkg/test/structure_verifier.go
  • pkg/version/retriever.go
  • pkg/version/retriever_test.go
  • tests/e2e/hcp_tuning_config_test.go
  • tests/utils/exec/rosacli/ocm_resource_service.go

Comment thread internal/ordered/ordered.go
Comment thread internal/ordered/ordered.go Outdated
Comment thread pkg/version/retriever.go
Comment thread pkg/version/retriever.go
@markirish
markirish force-pushed the ROSAENG-61040-review-dependencies branch from 286b64a to 8ffe71a Compare July 23, 2026 14:08

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/ordered/ordered_test.go`:
- Around line 126-139: Strengthen the test “unmarshals arrays as []interface{}”
by asserting each decoded array element preserves the expected json.Number
values 1, 2, and 3, in addition to checking the slice type and length. Keep the
existing unmarshalling and iteration setup unchanged.

In `@pkg/helper/download/download.go`:
- Around line 166-171: Update readableBytes to round the scaled val before
evaluating the val < 10 precision branch, so values such as readableBytes(9999)
select the rounded 10 kB output. Preserve the existing suffix selection and
formatting paths for other values.

In `@pkg/helper/helpers.go`:
- Line 269: Add a Go doc comment immediately before the exported ShellQuote
function, beginning with “ShellQuote” and describing its purpose.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 1a6f5025-e2e4-43ae-91e6-c0ebf29d6182

📥 Commits

Reviewing files that changed from the base of the PR and between 286b64a and 8ffe71a.

⛔ Files ignored due to path filters (70)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/PuerkitoBio/goquery/.gitattributes is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/.gitignore is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/array.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/expand.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/filter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/iteration.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/manipulation.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/property.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/query.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/traversal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/type.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/PuerkitoBio/goquery/utilities.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/parser.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/pseudo_classes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/selector.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/serialize.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/andybalholm/cascadia/specificity.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/domain.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dchest/validator/email.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/README.markdown is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/big.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/bigbytes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/bytes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/comma.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/commaf.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/ftoa.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/humanize.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/number.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/ordinals.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/si.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/dustin/go-humanize/times.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/consolesize_unix.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/nathan-fiscaletti/consolesize-go/consolesize_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/.gitlab-ci.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gitlab.com/c0b/go-ordered-json/ordered.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/.travis.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/LICENSE.libyaml is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/NOTICE is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/apic.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/decode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/emitterc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/encode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/parserc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/readerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/resolve.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/scannerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/sorter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/writerc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yaml.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yamlh.go is excluded by !vendor/**, !**/vendor/**
  • vendor/gopkg.in/yaml.v2/yamlprivateh.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (25)
  • cmd/create/idp/google.go
  • cmd/list/gates/cmd.go
  • cmd/upgrade/machinepool/cmd.go
  • go.mod
  • internal/ordered/ordered.go
  • internal/ordered/ordered_test.go
  • pkg/aws/client.go
  • pkg/aws/client_test.go
  • pkg/aws/cloudformation_test.go
  • pkg/aws/idps_test.go
  • pkg/aws/logging.go
  • pkg/aws/policies_test.go
  • pkg/aws/sts_test.go
  • pkg/clusterregistryconfig/flags.go
  • pkg/helper/download/download.go
  • pkg/helper/helpers.go
  • pkg/logging/round_tripper.go
  • pkg/output/output.go
  • pkg/test/arg_generator.go
  • pkg/test/arg_verifier.go
  • pkg/test/structure_verifier.go
  • pkg/version/retriever.go
  • pkg/version/retriever_test.go
  • tests/e2e/hcp_tuning_config_test.go
  • tests/utils/exec/rosacli/ocm_resource_service.go
🚧 Files skipped from review as they are similar to previous changes (21)
  • pkg/test/arg_generator.go
  • pkg/aws/policies_test.go
  • pkg/test/arg_verifier.go
  • pkg/aws/sts_test.go
  • pkg/aws/cloudformation_test.go
  • pkg/aws/idps_test.go
  • tests/e2e/hcp_tuning_config_test.go
  • pkg/logging/round_tripper.go
  • pkg/output/output.go
  • pkg/test/structure_verifier.go
  • cmd/create/idp/google.go
  • pkg/aws/client_test.go
  • pkg/aws/logging.go
  • internal/ordered/ordered.go
  • pkg/version/retriever.go
  • tests/utils/exec/rosacli/ocm_resource_service.go
  • pkg/clusterregistryconfig/flags.go
  • cmd/list/gates/cmd.go
  • cmd/upgrade/machinepool/cmd.go
  • pkg/aws/client.go
  • go.mod

Comment thread internal/ordered/ordered_test.go
Comment thread pkg/helper/download/download.go
Comment thread pkg/helper/helpers.go
…ncies

  - dchest/validator: single-call domain validation, replaced with existing k8s.io/apimachinery validator
  - dustin/go-humanize: byte formatting only, replaced with ~15-line readableBytes helper
  - nathan-fiscaletti/consolesize-go: terminal size only, replaced with golang.org/x/term.GetSize
  - alessio/shellescape: shell quoting only, replaced with ~10-line ShellQuote helper
  - pkg/errors: 3 Wrapf calls, replaced with fmt.Errorf %w wrapping
  - PuerkitoBio/goquery: HTML parsing only, replaced with golang.org/x/net/html tokenizer
  - c0b/go-ordered-json: abandoned ordered map lib, replaced with internal/ordered package
  - go-logr/logr: dead code (CapaLogger never called), removed entirely
  - gopkg.in/yaml.v2: 5 files using Marshal/Unmarshal only, migrated to yaml.v3
  - google/uuid: dead code (IsValidUUID never called), removed entirely
@markirish
markirish force-pushed the ROSAENG-61040-review-dependencies branch from 8ffe71a to 6f65241 Compare July 23, 2026 14:37
@markirish

Copy link
Copy Markdown
Contributor Author

Closing this PR in favor of individual PRs for each library, which will be easier to review and reason about later

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant