Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 35 additions & 32 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,22 @@ require (
github.com/gosuri/uitable v0.0.4
github.com/hashicorp/go-multierror v1.1.1
github.com/manifoldco/promptui v0.9.0
// using latest commit from 'github.com/openshift/api branch release-4.19'
github.com/openshift/api v0.0.0-20260107143020-50517c6f4bfd
// using latest commit from 'github.com/openshift/api branch release-4.21'
github.com/openshift/api v0.0.0-20260304172252-b0658d22beea
github.com/operator-framework/api v0.34.0
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.22.0
github.com/prometheus/client_golang v1.23.2
github.com/prometheus/client_model v0.6.2
github.com/prometheus/common v0.65.0
github.com/prometheus/common v0.66.1
github.com/redhat-cop/operator-utils v1.3.8
github.com/spf13/cobra v1.9.1
github.com/stretchr/testify v1.11.0
k8s.io/api v0.33.4
k8s.io/apimachinery v0.33.4
k8s.io/client-go v0.33.4
k8s.io/kubectl v0.33.4
k8s.io/metrics v0.33.4
sigs.k8s.io/controller-runtime v0.21.0
github.com/stretchr/testify v1.11.1
k8s.io/api v0.34.1
k8s.io/apimachinery v0.34.1
k8s.io/client-go v0.34.1
k8s.io/kubectl v0.34.1
k8s.io/metrics v0.34.1
sigs.k8s.io/controller-runtime v0.22.1
)

require (
Expand All @@ -40,7 +40,7 @@ require (
require (
github.com/BurntSushi/toml v1.3.2 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect
github.com/beorn7/perks v1.0.1 // indirect
Expand All @@ -50,11 +50,11 @@ require (
github.com/cloudflare/circl v1.6.3 // indirect
github.com/deckarep/golang-set/v2 v2.7.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/emicklei/go-restful/v3 v3.11.2 // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
github.com/fsnotify/fsnotify v1.8.0 // indirect
github.com/fxamacker/cbor/v2 v2.8.0 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-errors/errors v1.4.2 // indirect
github.com/go-jose/go-jose/v3 v3.0.4 // indirect
github.com/go-logr/logr v1.4.3 // indirect
Expand All @@ -67,10 +67,9 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/go-github/v52 v52.0.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gosuri/uilive v0.0.4 // indirect
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect
Expand All @@ -94,10 +93,10 @@ require (
github.com/mitchellh/copystructure v1.0.0 // indirect
github.com/mitchellh/reflectwalk v1.0.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/openshift/library-go v0.0.0-20251110200504-2685cf1242fc // indirect
github.com/openshift/library-go v0.0.0-20260309173530-9ed71ac3148f // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/procfs v0.16.1 // indirect
Expand All @@ -107,13 +106,13 @@ require (
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.12.0 // indirect
github.com/spf13/cast v1.7.1 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/spf13/pflag v1.0.9 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.yaml.in/yaml/v2 v2.4.2 // indirect
go.yaml.in/yaml/v3 v3.0.3 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.45.0 // indirect
golang.org/x/net v0.47.0 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
Expand All @@ -123,22 +122,22 @@ require (
golang.org/x/text v0.31.0 // indirect
golang.org/x/time v0.12.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
google.golang.org/protobuf v1.36.8 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/h2non/gock.v1 v1.0.14 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apiextensions-apiserver v0.33.4 // indirect
k8s.io/cli-runtime v0.33.4 // indirect
k8s.io/apiextensions-apiserver v0.34.1 // indirect
k8s.io/cli-runtime v0.34.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20250610211856-8b98d1ed966a // indirect
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
sigs.k8s.io/kustomize/api v0.19.0 // indirect
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/kustomize/api v0.20.1 // indirect
sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect
sigs.k8s.io/yaml v1.6.0 // indirect
)

Expand All @@ -147,3 +146,7 @@ go 1.24.4
toolchain go1.24.13

tool github.com/playwright-community/playwright-go/cmd/playwright

replace github.com/codeready-toolchain/api => github.com/metlos/api v0.0.0-20260318102359-237e681a639a

replace github.com/codeready-toolchain/toolchain-common => github.com/metlos/toolchain-common v0.0.0-20260318113116-fbd4bba9beb1
Comment on lines +150 to +152
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check companion PR status and verify no breaking changes

echo "=== Checking companion PR status ==="
gh pr view 501 --repo codeready-toolchain/api --json state,mergeable,title
gh pr view 522 --repo codeready-toolchain/toolchain-common --json state,mergeable,title

echo -e "\n=== Checking if forked commits match companion PRs ==="
# Check if the commit hashes in replace directives match the companion PRs
gh pr view 501 --repo codeready-toolchain/api --json commits --jq '.commits[-1].oid' | grep -q "237e681a639a" && echo "api commit matches" || echo "api commit MISMATCH"
gh pr view 522 --repo codeready-toolchain/toolchain-common --json commits --jq '.commits[-1].oid' | grep -q "fbd4bba9beb1" && echo "toolchain-common commit matches" || echo "toolchain-common commit MISMATCH"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 635


🏁 Script executed:

# First, examine the go.mod file to confirm the replace directives
wc -l go.mod

Repository: codeready-toolchain/toolchain-e2e

Length of output: 87


🏁 Script executed:

# Look at the specific lines mentioned (150-152) and surrounding context
sed -n '140,160p' go.mod

Repository: codeready-toolchain/toolchain-e2e

Length of output: 535


🏁 Script executed:

# Search for any comments or documentation about these replace directives
rg -i "metlos|replace" go.mod -B 2 -A 2

Repository: codeready-toolchain/toolchain-e2e

Length of output: 376


🏁 Script executed:

# Check if there are any other replace directives in the file
grep "^replace " go.mod

Repository: codeready-toolchain/toolchain-e2e

Length of output: 308


🏁 Script executed:

# Search the codebase for any references to these forked packages or companion PRs
rg "metlos|companion.*pr|pending.*merge" -i --type-not=binary | head -20

Repository: codeready-toolchain/toolchain-e2e

Length of output: 107


🏁 Script executed:

# Check git log for changes to go.mod, specifically the replace directives
git log --oneline --all -S "metlos" -- go.mod | head -20

Repository: codeready-toolchain/toolchain-e2e

Length of output: 163


🏁 Script executed:

# Get the full commit that added these replace directives
git log -p -S "metlos" -- go.mod | head -100

Repository: codeready-toolchain/toolchain-e2e

Length of output: 59


🏁 Script executed:

# Check if there's a PR description or commit message explaining this
git log --format="%H %s %b" -S "metlos" -- go.mod | head -50

Repository: codeready-toolchain/toolchain-e2e

Length of output: 176


🏁 Script executed:

# Try to get more recent git history with simpler command
git log --oneline -20 go.mod

Repository: codeready-toolchain/toolchain-e2e

Length of output: 142


🏁 Script executed:

# Check if there's a PR or branch context
git branch -a --contains HEAD | head -10

Repository: codeready-toolchain/toolchain-e2e

Length of output: 108


🏁 Script executed:

# Look for any README or documentation about replace directives or development setup
find . -maxdepth 2 -type f \( -name "README*" -o -name "CONTRIBUTING*" -o -name "*.md" \) -exec grep -l "replace\|fork\|metlos" {} \;

Repository: codeready-toolchain/toolchain-e2e

Length of output: 90


🏁 Script executed:

# Check for any .github or documentation about this
ls -la .github/ 2>/dev/null || echo "No .github directory"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 310


🏁 Script executed:

# Look for any CI/build configuration that might reference these
find . -maxdepth 2 -type f \( -name "*.yml" -o -name "*.yaml" \) -exec grep -l "metlos\|replace" {} \;

Repository: codeready-toolchain/toolchain-e2e

Length of output: 59


🏁 Script executed:

# Check the README for any context about replace directives or forks
cat README.adoc | grep -i -A 5 -B 5 "replace\|metlos\|fork\|dependency"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 4443


🏁 Script executed:

# Check if there's recent git history showing when replace directives were added
git log --all --format="%H %ai %s" go.mod | head -5

Repository: codeready-toolchain/toolchain-e2e

Length of output: 676


🏁 Script executed:

# Get the actual commit diff that introduced metlos
git show 2b578400b082dd05b509660877c2999ad9f4a212:go.mod 2>/dev/null | grep -A 2 -B 2 "metlos" || echo "Commit doesn't reference metlos"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 376


🏁 Script executed:

# Check if metlos forks are actually accessible/valid
python3 << 'EOF'
import subprocess
import json

# Try to check if the commit hashes exist in the metlos repos
commits = {
    "api": "237e681a639a",
    "toolchain-common": "fbd4bba9beb1"
}

for repo_name, commit in commits.items():
    repo_url = f"https://github.com/metlos/{repo_name}"
    try:
        result = subprocess.run(
            ["git", "ls-remote", repo_url, commit],
            capture_output=True,
            timeout=5,
            text=True
        )
        if result.returncode == 0 and result.stdout.strip():
            print(f"✓ {repo_name}: Commit {commit} exists and is accessible")
        else:
            print(f"✗ {repo_name}: Commit {commit} not found or repo not accessible")
    except Exception as e:
        print(f"✗ {repo_name}: Error checking - {e}")
EOF

Repository: codeready-toolchain/toolchain-e2e

Length of output: 209


🏁 Script executed:

# Double-check by trying to fetch the actual commits directly from metlos repos
git ls-remote https://github.com/metlos/api refs/heads/* refs/tags/* 2>&1 | grep -E "237e681a639a|HEAD" || echo "Repository or commits not found"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 145


🏁 Script executed:

# Check if these versions exist as tags or releases
curl -s https://api.github.com/repos/metlos/api/tags 2>&1 | head -20 || echo "Cannot reach GitHub API"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 356


🏁 Script executed:

# The first commit exists! Let's verify the second one
git ls-remote https://github.com/metlos/toolchain-common refs/heads/* refs/tags/* 2>&1 | grep -E "fbd4bba9beb1|HEAD" || echo "Checking second repo..."

Repository: codeready-toolchain/toolchain-e2e

Length of output: 145


🏁 Script executed:

# Check if these are in development branches by looking at the metlos repos
git ls-remote https://github.com/metlos/api 2>&1 | head -20

Repository: codeready-toolchain/toolchain-e2e

Length of output: 930


🏁 Script executed:

# Check metlos/toolchain-common as well
git ls-remote https://github.com/metlos/toolchain-common 2>&1 | head -20

Repository: codeready-toolchain/toolchain-e2e

Length of output: 1592


🏁 Script executed:

# Now let's check what the actual purpose is - look for any documentation or PR references
# that explain these forks are for development
find . -type f -name "*.md" -o -name "*.adoc" -o -name "*.txt" | xargs grep -l "upgrade-ocp\|metlos" 2>/dev/null | head -5

Repository: codeready-toolchain/toolchain-e2e

Length of output: 59


🏁 Script executed:

# Check the current branch and what it's tracking
git branch -vv

Repository: codeready-toolchain/toolchain-e2e

Length of output: 289


🏁 Script executed:

# Check if there's a PR description or branch name that explains this
git log --oneline -1

Repository: codeready-toolchain/toolchain-e2e

Length of output: 142


🏁 Script executed:

# See if there's any documentation about this specific upgrade work
find . -type f \( -name "*.md" -o -name "*.adoc" \) -exec grep -l "4.21\|OCP.*4" {} \;

Repository: codeready-toolchain/toolchain-e2e

Length of output: 96


🏁 Script executed:

# Check the setup/README.adoc for context about OCP 4.21
cat ./setup/README.adoc | grep -A 10 -B 10 "4.21\|upgrade\|OCP"

Repository: codeready-toolchain/toolchain-e2e

Length of output: 1029


🏁 Script executed:

# Look at the actual commit that's being reviewed
git show 2b57840 --stat

Repository: codeready-toolchain/toolchain-e2e

Length of output: 14309


🏁 Script executed:

# Get the commit message in full
git show 2b57840 --format=fuller

Repository: codeready-toolchain/toolchain-e2e

Length of output: 50393


Replace directives point to personal forks — must be resolved before merge.

The replace directives reference personal forks (github.com/metlos/api and github.com/metlos/toolchain-common) instead of the canonical codeready-toolchain repositories. These appear to be part of companion work on the upgrade-ocp-4.21 branch but cannot be merged as-is:

Options to resolve:

  1. Wait for companion PRs to merge to canonical repositories and update to point to official releases
  2. Remove the replace directives if the changes are no longer needed
  3. Update to point to official pre-release tags if available

Risks of merging with personal forks:

  • Bypasses official code review and release process
  • Commits could be force-pushed or deleted
  • Potential for incompatible API changes affecting types like UserSignup, MasterUserRecord, Space, and utilities from toolchain-common
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@go.mod` around lines 150 - 152, The go.mod contains replace directives
pointing to personal forks (github.com/metlos/api and
github.com/metlos/toolchain-common); remove or replace them with canonical
module paths and appropriate versions/tags before merging. Either (1) change the
replace lines to point at official codeready-toolchain modules with released or
official pre-release tags, (2) remove the replace directives entirely if those
forked changes are no longer required, or (3) keep them only temporarily and
update them to the canonical repositories once the companion PRs are merged;
ensure any types referenced (e.g., UserSignup, MasterUserRecord, Space, and
utilities used from toolchain-common) are compatible with the chosen canonical
versions.

Loading
Loading