Skip to content

refactor(validator): move v1 schema from pkg/api/validator/v1 to pkg/validator/v1#1117

Merged
mchmarny merged 2 commits into
mainfrom
refactor/move-validator-v1-to-pkg-validator
May 30, 2026
Merged

refactor(validator): move v1 schema from pkg/api/validator/v1 to pkg/validator/v1#1117
mchmarny merged 2 commits into
mainfrom
refactor/move-validator-v1-to-pkg-validator

Conversation

@mchmarny

Copy link
Copy Markdown
Member

Summary

Move the validator-catalog wire schema from pkg/api/validator/v1 to pkg/validator/v1. Symmetric with the pkg/client/v1 facade location established by #1111 — both are now pkg/<domain>/v1/.

Motivation / Context

The validator-catalog schema lived under pkg/api/ but pkg/api/ is documented in docs/integrator/public-api.md as Internal HTTP-handler code:

pkg/api | Internal | Server-side REST handlers (server-internal; consumers use the HTTP API, not the Go types).

The v1 schema isn't HTTP-specific — it's the YAML wire format the validator package consumes (and that external CTRF / validator-catalog integrators may import). Burying it inside an Internal HTTP-handlers package mislabels its actual stability tier and forces sibling-into-internal imports from pkg/validator/catalogpkg/api/validator/v1.

After the move:

  • pkg/api/ is consistently HTTP-handler-only (matches its documented purpose)
  • The schema lives next to its primary consumer (pkg/validator)
  • The naming pattern pkg/<domain>/v1/ is consistent: pkg/client/v1, pkg/validator/v1

Fixes: N/A
Related: #1076 (epic, now closed by #1113), #1111 (pkg/client/v1 move precedent)

Type of Change

  • Bug fix
  • New feature
  • Breaking change (import path for external Go importers of the v1 schema)
  • Documentation update (none yet — public-api.md doesn't list pkg/api/validator/v1 explicitly; consider follow-up)
  • Refactoring (no functional changes)
  • Build/CI/tooling

Component(s) Affected

  • CLI (cmd/aicr, pkg/cli) — import path update in pkg/cli/validate.go
  • API server (cmd/aicrd, pkg/api, pkg/server) — schema moved out; pkg/api is now HTTP-only
  • Recipe engine
  • Bundlers
  • Collectors / snapshotter
  • Validator (pkg/validator) — schema relocated under this package
  • Core libraries
  • Docs/examples
  • Other

Implementation Notes

git mv on all 14 files (history preserved):

pkg/api/validator/v1/*.go    → pkg/validator/v1/*.go
pkg/api/validator/v1/README.md → pkg/validator/v1/README.md

Package name unchanged (still v1); only the import path changes. 13 in-tree imports updated mechanically across pkg/cli, pkg/client/v1, pkg/validator/*, and validators/*. gofmt re-runs reordered import groups in those files.

pkg/api/validator/ directory removed (now empty).

Behavior

No runtime behavior change. Pure rename + import path update.

Testing

go test -race ./pkg/validator/... ./pkg/client/v1/... ./pkg/cli/... ./pkg/api/... ./validators/...
# all pass
make lint  # 0 issues

Risk Assessment

  • Low — Pure rename. Package contents and exported API unchanged. In-tree call sites updated by mechanical sed.
  • Medium
  • High

Rollout notes: External Go importers that reached into pkg/api/validator/v1 (despite its Internal tier label in public-api.md) must update:

- import v1 "github.com/NVIDIA/aicr/pkg/api/validator/v1"
+ import v1 "github.com/NVIDIA/aicr/pkg/validator/v1"

No symbol changes — a sed-style rewrite is sufficient. Release notes for the next minor should call this out alongside the pkg/aicrpkg/client/v1 move from #1111.

Checklist

  • Tests pass locally (go test -race ./pkg/validator/... ./pkg/cli/... ./pkg/api/... ./pkg/client/v1/... ./validators/...)
  • Linter passes (make lint)
  • I did not skip/disable tests to make CI green
  • No new functionality (move only); existing tests cover behavior
  • Doc impact: pkg/api/validator/v1 is not explicitly listed in docs/integrator/public-api.md's package matrix (only pkg/api is); no doc edit required by this PR
  • Changes follow existing patterns in the codebase (mirrors feat(aicr): wrap facade alias types as facade-owned structs #1111)
  • Commits are cryptographically signed (git commit -S)

…validator/v1

The validator-catalog wire schema lived under pkg/api/ but pkg/api/ is
documented in docs/integrator/public-api.md as Internal HTTP-handler
code ("Server-side REST handlers (server-internal; consumers use the
HTTP API, not the Go types)"). The v1 schema isn't HTTP-specific — it's
the YAML wire format the validator package consumes — so its location
mis-labels its actual stability tier and forces sibling-into-internal
imports from pkg/validator/catalog → pkg/api/validator/v1.

Move pkg/api/validator/v1/ → pkg/validator/v1/ via git mv (history
preserved on all 14 files). Package name unchanged (still `v1`); only
import path changes. Symmetric with the pkg/client/v1 facade location
established by #1111 — both are now pkg/<domain>/v1/.

External Go importers reaching into pkg/api/validator/v1 (despite the
Internal label in public-api.md) need to update:

  - import v1 "github.com/NVIDIA/aicr/pkg/api/validator/v1"
  + import v1 "github.com/NVIDIA/aicr/pkg/validator/v1"

In-tree imports (13 files across pkg/cli, pkg/client/v1, pkg/validator,
validators/) updated mechanically.

No code changes; pure rename + import path update. Build, lint, and
tests clean on all affected packages.
@github-actions github-actions Bot added size/XL and removed size/S labels May 30, 2026
@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor

Coverage Report ✅

Metric Value
Coverage 76.6%
Threshold 75%
Status Pass
Coverage Badge
![Coverage](https://img.shields.io/badge/coverage-76.6%25-green)

No Go source files changed in this PR.

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 7675ff29-14c2-4403-b5e6-2bc30f15f5d4

📥 Commits

Reviewing files that changed from the base of the PR and between 5a10fcf and aa2a840.

⛔ Files ignored due to path filters (265)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/go-openapi/analysis/.gitignore is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/CONTRIBUTORS.md is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/README.md is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/analyzer.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/flatten.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/flatten_name.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/flatten_options.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/mixin.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/analysis/options.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/.codecov.yml is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/.golangci.yml is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/CONTRIBUTORS.md is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/README.md is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/bytestream.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client/httptrace.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client/httptrace_tls.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client/internal/request/request.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client/opentelemetry.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client/runtime.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client/tls.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client_operation.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/client_response.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/csv.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/file.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/form.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/interfaces.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/context.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/context_skipauth_disabled.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/context_skipauth_enabled.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/denco/router.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/denco/server.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/parameter.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/request.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/router.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/seam.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/middleware/validation.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/security/authenticator.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/server-middleware/mediatype/mediatype.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/server-middleware/negotiate/header/header.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/server-middleware/negotiate/negotiate.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/text.go is excluded by !vendor/**
  • vendor/github.com/go-openapi/runtime/yamlpc/yaml.go is excluded by !vendor/**
  • vendor/github.com/google/go-containerregistry/pkg/name/registry.go is excluded by !vendor/**
  • vendor/github.com/jedisct1/go-minisign/minisign.go is excluded by !vendor/**
  • vendor/github.com/jedisct1/go-minisign/sign.go is excluded by !vendor/**
  • vendor/github.com/mattn/go-colorable/colorable_windows.go is excluded by !vendor/**
  • vendor/github.com/prometheus/common/expfmt/openmetrics_create.go is excluded by !vendor/**
  • vendor/github.com/prometheus/common/model/metric.go is excluded by !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/client/rekor_client.go is excluded by !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/create_log_entry_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/create_log_entry_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/entries_client.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/get_log_entry_by_index_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/get_log_entry_by_index_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/get_log_entry_by_uuid_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/get_log_entry_by_uuid_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/search_log_query_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/entries/search_log_query_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/index/index_client.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/index/search_index_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/index/search_index_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/pubkey/get_public_key_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/pubkey/get_public_key_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/pubkey/pubkey_client.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/rekor_client.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/tlog/get_log_info_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/tlog/get_log_info_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/tlog/get_log_proof_parameters.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/tlog/get_log_proof_responses.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/client/tlog/tlog_client.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/alpine.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/alpine_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/alpine_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/consistency_proof.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/cose.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/cose_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/cose_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/dsse.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/dsse_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/dsse_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/error.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/hashedrekord.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/hashedrekord_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/hashedrekord_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/helm.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/helm_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/helm_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/inactive_shard_log_info.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/inclusion_proof.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/intoto.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/intoto_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/intoto_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/intoto_v002_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/jar.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/jar_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/jar_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/log_entry.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/log_info.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/proposed_entry.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rekord.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rekord_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rekord_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rfc3161.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rfc3161_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rfc3161_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rpm.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rpm_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/rpm_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/search_index.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/search_log_query.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/tuf.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/tuf_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/generated/models/tuf_v001_schema.go is excluded by !**/generated/**, !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/types/dsse/dsse.go is excluded by !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/types/entries.go is excluded by !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/types/hashedrekord/hashedrekord.go is excluded by !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/types/intoto/intoto.go is excluded by !vendor/**
  • vendor/github.com/sigstore/rekor/pkg/types/types.go is excluded by !vendor/**
  • vendor/github.com/sigstore/sigstore/pkg/cryptoutils/privatekey.go is excluded by !vendor/**
  • vendor/github.com/sigstore/timestamp-authority/v2/pkg/verification/verify.go is excluded by !vendor/**
  • vendor/github.com/sigstore/timestamp-authority/v2/pkg/verification/verify_request.go is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/.gitignore is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/LICENSE is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/README is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/README.md is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/cipher.go is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/cipher_3des.go is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/cipher_aes.go is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/kdf_pbkdf2.go is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/kdf_scrypt.go is excluded by !vendor/**
  • vendor/github.com/youmark/pkcs8/pkcs8.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/.golangci.yml is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/AGENTS.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/CHANGELOG.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/CLAUDE.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/CONTRIBUTING.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/Makefile is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/encoder.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/hash.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/key.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/kv.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/set.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/type_string.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/value.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/baggage/baggage.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/dependencies.Dockerfile is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/asyncint64.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/config.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/doc.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/instrument.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/syncfloat64.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/metric/syncint64.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/propagation/baggage.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.40.0/README.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/MIGRATION.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/README.md is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/attribute_group.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/doc.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/error_type.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/exception.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.41.0/schema.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/trace/auto.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/trace/config.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/trace/internal/telemetry/span.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/version.go is excluded by !vendor/**
  • vendor/go.opentelemetry.io/otel/versions.yaml is excluded by !vendor/**
  • vendor/golang.org/x/crypto/blake2b/go125.go is excluded by !vendor/**
  • vendor/golang.org/x/crypto/ssh/certs.go is excluded by !vendor/**
  • vendor/golang.org/x/crypto/ssh/channel.go is excluded by !vendor/**
  • vendor/golang.org/x/crypto/ssh/cipher.go is excluded by !vendor/**
  • vendor/golang.org/x/crypto/ssh/keys.go is excluded by !vendor/**
  • vendor/golang.org/x/crypto/ssh/mux.go is excluded by !vendor/**
  • vendor/golang.org/x/crypto/ssh/server.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/server_common.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/server_wrap.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/transport_common.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched_common.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_loong64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_riscv64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/mkerrors.sh is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/readv_unix.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_darwin.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_openbsd.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_386.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_arm.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_386.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_386.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/types_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/zsyscall_windows.go is excluded by !vendor/**
  • vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/checked.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/eval.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/explain.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/syntax.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/value.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/alias.go is excluded by !vendor/**
  • vendor/modules.txt is excluded by !vendor/**
📒 Files selected for processing (1)
  • go.mod

📝 Walkthrough

Walkthrough

This PR repoints many imports from github.com/NVIDIA/aicr/pkg/api/validator/v1 to github.com/NVIDIA/aicr/pkg/validator/v1 across core validator packages (pkg/validator/validator.go, pkg/validator/phases.go), subsystems (pkg/validator/catalog, pkg/validator/job), client/CLI facades (pkg/client/v1/aicr.go, pkg/cli/validate.go), validator implementations and tests (validators/* and pkg/validator/* tests), and updates go.mod with multiple indirect dependency version bumps. The catalog re-exports and validators.Context exported field now resolve to types in the relocated package.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • NVIDIA/aicr#1085: Related to validator v1 dependency rewiring affecting the same call sites in pkg/validator/validator.go and pkg/validator/job/deployer.go.

Suggested labels

area/api, size/M

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'refactor(validator): move v1 schema from pkg/api/validator/v1 to pkg/validator/v1' clearly and concisely summarizes the primary change—relocating the validator schema package to a new import path.
Description check ✅ Passed The description thoroughly explains the motivation (organizational alignment with package structure), context (pkg/api is HTTP-internal, schema isn't HTTP-specific), implementation approach (git mv with import updates), testing, and rollout notes for external importers.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/move-validator-v1-to-pkg-validator

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

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
pkg/validator/catalog/catalog.go (1)

32-32: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix stale package reference in the re-export comment.

The comment still points to pkg/api/validator/v1; it should reference pkg/validator/v1 to match the current aliases.

As per coding guidelines Ensure code comments are accurate and helpful.

🤖 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/validator/catalog/catalog.go` at line 32, The comment above the
re-exports in catalog.go incorrectly references pkg/api/validator/v1; update
that comment to reference the current package alias pkg/validator/v1 so it
accurately documents the re-exported types (search for the comment line starting
with "Re-exported types" in pkg/validator/catalog/catalog.go and replace the old
package path with pkg/validator/v1).
pkg/validator/phases.go (1)

19-23: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update stale re-export comments to the new package path.

These comments still reference pkg/api/validator/v1, but the re-export source is now pkg/validator/v1. Keeping the comment aligned avoids migration confusion.

As per coding guidelines Ensure code comments are accurate and helpful.

🤖 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/validator/phases.go` around lines 19 - 23, Update the stale comment above
the re-exports so it references the correct package path (pkg/validator/v1)
instead of pkg/api/validator/v1; specifically adjust the comment lines that
precede the re-exported type declaration "type Phase = v1.Phase" and the
constants block starting with "const (" so the comments accurately describe the
source of these re-exports.
🤖 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.

Outside diff comments:
In `@pkg/validator/catalog/catalog.go`:
- Line 32: The comment above the re-exports in catalog.go incorrectly references
pkg/api/validator/v1; update that comment to reference the current package alias
pkg/validator/v1 so it accurately documents the re-exported types (search for
the comment line starting with "Re-exported types" in
pkg/validator/catalog/catalog.go and replace the old package path with
pkg/validator/v1).

In `@pkg/validator/phases.go`:
- Around line 19-23: Update the stale comment above the re-exports so it
references the correct package path (pkg/validator/v1) instead of
pkg/api/validator/v1; specifically adjust the comment lines that precede the
re-exported type declaration "type Phase = v1.Phase" and the constants block
starting with "const (" so the comments accurately describe the source of these
re-exports.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: e526056a-b3c3-44b4-8b87-f8b4ef5294f5

📥 Commits

Reviewing files that changed from the base of the PR and between 5c63c10 and 5a10fcf.

📒 Files selected for processing (28)
  • pkg/cli/validate.go
  • pkg/client/v1/aicr.go
  • pkg/validator/catalog/catalog.go
  • pkg/validator/catalog/catalog_test.go
  • pkg/validator/job/deployer.go
  • pkg/validator/job/deployer_test.go
  • pkg/validator/phases.go
  • pkg/validator/v1/README.md
  • pkg/validator/v1/affinity.go
  • pkg/validator/v1/affinity_test.go
  • pkg/validator/v1/catalog.go
  • pkg/validator/v1/catalog_test.go
  • pkg/validator/v1/conversion_test.go
  • pkg/validator/v1/dependency_affinity.go
  • pkg/validator/v1/dependency_affinity_test.go
  • pkg/validator/v1/doc.go
  • pkg/validator/v1/job_plan.go
  • pkg/validator/v1/job_plan_internal.go
  • pkg/validator/v1/job_plan_test.go
  • pkg/validator/v1/validation_input.go
  • pkg/validator/v1/validation_input_test.go
  • pkg/validator/validator.go
  • pkg/validator/validator_test.go
  • validators/conformance/robust_controller_check_test.go
  • validators/context.go
  • validators/deployment/expected_resources_test.go
  • validators/performance/inference_perf_constraint.go
  • validators/performance/inference_perf_test.go

@mchmarny mchmarny merged commit 1aea583 into main May 30, 2026
26 of 29 checks passed
@mchmarny mchmarny deleted the refactor/move-validator-v1-to-pkg-validator branch May 30, 2026 00:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant