Skip to content

feat(topology): migrate metadata keys to topograph.run - #465

Merged
dmitsh merged 1 commit into
mainfrom
ds-domain
Aug 13, 2026
Merged

feat(topology): migrate metadata keys to topograph.run#465
dmitsh merged 1 commit into
mainfrom
ds-domain

Conversation

@dmitsh

@dmitsh dmitsh commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Replace Topograph-owned Kubernetes label and annotation domains with
topograph.run across engines, tests, demos, and documentation.

Signed-off-by: Dmitry Shmulevich <17212177+dmitsh@users.noreply.github.com>
@dmitsh
dmitsh requested a review from ravisoundar as a code owner August 13, 2026 00:26
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • Documentation

    • Updated deployment, provider, engine, and topology documentation with the current topograph.run labels and annotations.
    • Refreshed examples and verification commands for NFD, Slinky, KWOK, DRA, InfiniBand, and Lambda interactions.
  • Improvements

    • Standardized node, region, cluster, and ConfigMap metadata under the topograph.run domain.
    • Updated the Helm chart’s maintainer information and related demo configuration.
    • Improved consistency between documented examples and runtime metadata behavior.

Walkthrough

Topograph-owned Kubernetes labels and annotations migrate to the topograph.run domain. Go constants, NFD metadata, tests, examples, provider documentation, and release documentation are updated.

Changes

Metadata domain migration

Layer / File(s) Summary
Metadata contract and tests
pkg/topology/topology.go, pkg/engines/nfd/objects.go, pkg/topology/graph_test.go, pkg/engines/graph/engine_test.go, internal/kwok/nodes_test.go
Exported topology and NFD metadata keys use topograph.run. Tests use local label keys and updated annotation names.
Consumer references
demos/test-nfd/demo.sh, docs/design/*, docs/engines/*, docs/modeling.md, docs/providers/*, docs/reference/*
Examples and documentation use the updated topograph.run metadata keys.
Release metadata
CHANGELOG.md, charts/topograph/Chart.yaml
The changelog records the domain migration and removed items. The chart maintainer URL uses https://topograph.run.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score: 🟠 High · up to 934b0

This change migrates Topograph metadata keys, but upgrades may leave existing NFD objects with the old keys that are no longer cleaned up, allowing stale topology information to remain active. Merge should be blocked until cleanup supports both domains or explicitly removes pre-migration objects.

Suggested reviewers: ravisoundar

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the migration of Topograph metadata keys to the topograph.run domain.
Description check ✅ Passed The description directly describes the metadata-domain migration across the files and components changed.
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.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ds-domain

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

@greptile-apps

greptile-apps Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR migrates Topograph-owned Kubernetes labels and annotations from topograph.nvidia.com to topograph.run across shared constants, NFD resources, tests, demos, and documentation.

  • Updates node identity, accelerator, ConfigMap, and NFD ownership metadata keys.
  • Refreshes examples, diagnostics, tests, and chart metadata for the new domain.
  • Also removes an unrelated exported GPU-product constant and an existing changelog migration notice.

Confidence Score: 3/5

This PR should not merge until NFD can clean up legacy managed resources and the unintended exported Go API removal is restored or explicitly handled.

The new NFD ownership selectors cannot discover obsolete resources created under the previous domain, and removing KeyNvidiaGPUProduct causes downstream packages that reference the exported constant to stop compiling.

Files Needing Attention: pkg/engines/nfd/objects.go, pkg/topology/topology.go, CHANGELOG.md

Important Files Changed

Filename Overview
pkg/topology/topology.go Migrates shared metadata constants correctly but also removes an unrelated exported GPU-product constant, breaking downstream compilation.
pkg/engines/nfd/objects.go Migrates generated NFD metadata but does not retain a legacy selector for cleaning obsolete pre-upgrade resources.
CHANGELOG.md Documents the domain migration but removes still-applicable API-removal guidance and omits the newly removed GPU-product constant.
internal/kwok/nodes_test.go Updates the expected shared instance annotation to the new domain.
pkg/engines/graph/engine_test.go Replaces the removed exported GPU-product constant with a local example key.
docs/reference/node-labels.md Updates the documented node and ConfigMap annotation keys consistently.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Producers[Broker, providers, and KWOK] -->|topograph.run node annotations| Nodes[(Kubernetes Nodes)]
  Nodes --> Consumers[Engines and accelerator discovery]
  NFD[NFD engine] -->|topograph.run ownership labels| Objects[(NodeFeature resources)]
  Cleanup[NFD cleanup] -->|new-domain selector| Objects
  Legacy[(Pre-upgrade NFD resources)] -. old-domain labels not selected .-> Cleanup
Loading

Reviews (1): Last reviewed commit: "feat(topology): migrate metadata keys to..." | Re-trigger Greptile

Comment on lines 49 to +51
labelManagedBy = "app.kubernetes.io/managed-by"
labelEngine = "topograph.nvidia.com/engine"
labelResource = "topograph.nvidia.com/resource"
labelGroupType = "topograph.nvidia.com/group-type"
labelEngine = "topograph.run/engine"
labelResource = "topograph.run/resource"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Legacy NFD objects escape cleanup

When upgrading a cluster with existing NFD resources, cleanup selects only objects carrying the new topograph.run ownership labels. Obsolete resources that retain topograph.nvidia.com labels are excluded from cleanup and continue publishing stale node features or topology groups.

Knowledge Base Used: Engines: Topology Generation

Comment thread pkg/topology/topology.go
Comment on lines +35 to +37
KeyNodeInstance = "topograph.run/instance"
KeyNodeRegion = "topograph.run/region"
KeyGpuClusterID = "topograph.run/cluster-id"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Unrelated exported constant is removed

When a downstream Go package references topology.KeyNvidiaGPUProduct, upgrading to this revision fails compilation because the exported constant has been removed. The key is NVIDIA-owned rather than Topograph-owned, so this removal is unrelated to the metadata-domain migration and has no documented replacement.

Knowledge Base Used: Topology Model

Comment thread CHANGELOG.md
@@ -71,7 +72,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

### Removed

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Clique removal guidance is dropped

This deletes the unreleased breaking-change notice for topology.KeyNvidiaGPUClique even though the constant remains removed. Consumers reviewing the release notes consequently lose the applicable migration guidance to configure accelerator discovery through provider.params.accelerator.kubernetesLabel.key.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@codecov

codecov Bot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.13%. Comparing base (8468abe) to head (934b06e).
⚠️ Report is 55 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #465      +/-   ##
==========================================
+ Coverage   72.15%   77.13%   +4.97%     
==========================================
  Files          89       99      +10     
  Lines        5689     7212    +1523     
==========================================
+ Hits         4105     5563    +1458     
+ Misses       1382     1359      -23     
- Partials      202      290      +88     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@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: 2

🤖 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/kwok/nodes_test.go`:
- Line 113: Expand the migration assertions in the affected test around the
manifest checks: retain the positive assertion for topograph.run/instance, add a
negative assertion that topograph.nvidia.com/instance is absent, and assert the
renamed topograph.run/region key using the fixture’s expected value.

In `@pkg/engines/nfd/objects.go`:
- Around line 50-59: Update cleanupResource to discover and delete stale
NodeFeature and NodeFeatureGroup objects using both the current topograph.run
ownership labels and legacy topograph.nvidia.com ownership labels during
migration. Preserve existing cleanup behavior for new labels, and add regression
coverage for a stale object carrying only the legacy ownership labels.
🪄 Autofix

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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: c0bc3f10-3459-4266-ab20-2e0e982b1d36

📥 Commits

Reviewing files that changed from the base of the PR and between 35e7156 and 934b06e.

📒 Files selected for processing (17)
  • CHANGELOG.md
  • charts/topograph/Chart.yaml
  • demos/test-nfd/demo.sh
  • docs/design/nfd-engine-sdd.md
  • docs/engines/graph.md
  • docs/engines/nfd.md
  • docs/engines/slinky.md
  • docs/modeling.md
  • docs/providers/dra.md
  • docs/providers/infiniband.md
  • docs/providers/lambdai.md
  • docs/reference/node-labels.md
  • internal/kwok/nodes_test.go
  • pkg/engines/graph/engine_test.go
  • pkg/engines/nfd/objects.go
  • pkg/topology/graph_test.go
  • pkg/topology/topology.go
📜 Review details
⏰ Context from checks skipped due to timeout. (9)
  • GitHub Check: oci-sim / slinky
  • GitHub Check: check
  • GitHub Check: govulncheck
  • GitHub Check: build
  • GitHub Check: test
  • GitHub Check: k8s / gcp-sim
  • GitHub Check: k8s / aws-sim
  • GitHub Check: k8s / test
  • GitHub Check: Greptile Review
🧰 Additional context used
📓 Path-based instructions (11)
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: Do not publicly disclose suspected security vulnerabilities; report them privately through NVIDIA PSIRT using the channels documented in SECURITY.md.
Every commit must include a Signed-off-by: trailer for DCO compliance.
Use Conventional Commits with an allowed type such as feat, fix, docs, chore, refactor, test, build, or ci.
Before pushing, run make qualify; all CI checks, including Go build/test/lint, Codecov, and DCO, must be green before merge.
Changes to provider, engine, chart, API, configuration schema, labels, annotations, or user-facing behavior must include the corresponding documentation updates described in the documentation impact table.

Files:

  • demos/test-nfd/demo.sh
  • docs/engines/graph.md
  • internal/kwok/nodes_test.go
  • docs/design/nfd-engine-sdd.md
  • docs/providers/dra.md
  • docs/engines/slinky.md
  • docs/reference/node-labels.md
  • docs/providers/lambdai.md
  • pkg/topology/topology.go
  • docs/engines/nfd.md
  • pkg/topology/graph_test.go
  • docs/modeling.md
  • docs/providers/infiniband.md
  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
  • charts/topograph/Chart.yaml
  • CHANGELOG.md
docs/engines/**/*.md

📄 CodeRabbit inference engine (AGENTS.md)

New, changed, or removed engines require updates to the corresponding engine documentation.

Files:

  • docs/engines/graph.md
  • docs/engines/slinky.md
  • docs/engines/nfd.md
**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

**/*.go: Run go fmt ./...; Go formatting is authoritative and code should not be hand-formatted.
Every new Go file must include the NVIDIA copyright header followed by the matching Apache 2.0 boilerplate.

Files:

  • internal/kwok/nodes_test.go
  • pkg/topology/topology.go
  • pkg/topology/graph_test.go
  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
**/*_test.go

📄 CodeRabbit inference engine (AGENTS.md)

New or changed public behavior and new code paths should be covered by tests.

Files:

  • internal/kwok/nodes_test.go
  • pkg/topology/graph_test.go
  • pkg/engines/graph/engine_test.go

⚙️ CodeRabbit configuration file

**/*_test.go: Flag missing negative, cancellation, concurrency, malformed-input,
boundary, and regression cases. Check that assertions would fail if
the behavior under test were broken.

Files:

  • internal/kwok/nodes_test.go
  • pkg/topology/graph_test.go
  • pkg/engines/graph/engine_test.go
{cmd,pkg,internal}/**/*.go

⚙️ CodeRabbit configuration file

{cmd,pkg,internal}/**/*.go: Focus on correctness, robustness, and failure paths:

  • Check error handling and propagation, including whether callers
    receive enough context to diagnose failures.
  • Verify context propagation, cancellation, timeouts, resource cleanup,
    and goroutine lifecycle.
  • Look for races, deadlocks, unsafe shared state, leaks, and partial
    updates that can leave state inconsistent.
  • Check nil, empty, malformed, duplicate, boundary, and partial inputs.
  • Verify deterministic and idempotent behavior where operations may be
    retried or repeated.
  • Preserve public contracts and the architectural boundaries documented
    in AGENTS.md.
  • Flag behavior changes that lack meaningful regression coverage.

Files:

  • internal/kwok/nodes_test.go
  • pkg/topology/topology.go
  • pkg/topology/graph_test.go
  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
docs/providers/**/*.md

📄 CodeRabbit inference engine (AGENTS.md)

Provider additions or changes require the corresponding provider documentation, including prerequisites, credentials, parameters, operation, and verification.

Files:

  • docs/providers/dra.md
  • docs/providers/lambdai.md
  • docs/providers/infiniband.md
pkg/topology/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

Do not change Graph, the Vertex tree, or topology constants casually; changes require discussion because every provider and engine depends on them.

Files:

  • pkg/topology/topology.go
  • pkg/topology/graph_test.go
pkg/engines/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

Engines only translate the canonical topology and must not discover or read the physical fabric.

Files:

  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
charts/topograph/**/*.yaml

📄 CodeRabbit inference engine (AGENTS.md)

Do not enable both ingress.enabled and gatewayAPI.enabled in one Helm release; the routing resources are mutually exclusive.

Files:

  • charts/topograph/Chart.yaml
charts/topograph/**

⚙️ CodeRabbit configuration file

charts/topograph/**: - Check RBAC least privilege and Kubernetes API compatibility.

  • ingress.enabled and gatewayAPI.enabled must remain mutually exclusive.
  • HTTPRoute must contain only portable Gateway API v1 fields.
  • Flag changes where values, schema, templates, NOTES, tests,
    snapshots, documentation, or changelog become inconsistent.

Files:

  • charts/topograph/Chart.yaml
CHANGELOG.md

📄 CodeRabbit inference engine (AGENTS.md)

Record applicable user-facing features, fixes, breaking changes, or Helm migrations under [Unreleased].

Files:

  • CHANGELOG.md
🧠 Learnings (12)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/engines/k8s/**/*.go : Do not invent Kubernetes label keys in provider code; use canonical graph values and the configured closest-first `fabricLabels` and fixed accelerator sub-domain key.
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to charts/topograph/tests/**/*.{yaml,yml} : Run Helm chart tests when changing `charts/topograph/`; review snapshot changes before committing updates.
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to **/* : Changes to provider, engine, chart, API, configuration schema, labels, annotations, or user-facing behavior must include the corresponding documentation updates described in the documentation impact table.
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/topology/**/*.go : Do not change `Graph`, the `Vertex` tree, or topology constants casually; changes require discussion because every provider and engine depends on them.
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/providers/**/*.go : When using `ClusterTopology`, populate fabric tiers closest-first, preserve optional accelerator domain and sub-domain fields, and call `ToGraph`.
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to docs/engines/**/*.md : New, changed, or removed engines require updates to the corresponding engine documentation.

Applied to files:

  • docs/engines/graph.md
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/engines/k8s/**/*.go : Do not invent Kubernetes label keys in provider code; use canonical graph values and the configured closest-first `fabricLabels` and fixed accelerator sub-domain key.

Applied to files:

  • docs/design/nfd-engine-sdd.md
  • docs/reference/node-labels.md
  • docs/providers/lambdai.md
  • pkg/topology/topology.go
  • docs/engines/nfd.md
  • pkg/topology/graph_test.go
  • docs/providers/infiniband.md
  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
  • CHANGELOG.md
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to **/* : Changes to provider, engine, chart, API, configuration schema, labels, annotations, or user-facing behavior must include the corresponding documentation updates described in the documentation impact table.

Applied to files:

  • docs/engines/slinky.md
  • docs/reference/node-labels.md
  • docs/providers/lambdai.md
  • docs/engines/nfd.md
  • docs/providers/infiniband.md
  • charts/topograph/Chart.yaml
  • CHANGELOG.md
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/topology/**/*.go : Do not change `Graph`, the `Vertex` tree, or topology constants casually; changes require discussion because every provider and engine depends on them.

Applied to files:

  • docs/reference/node-labels.md
  • pkg/topology/topology.go
  • pkg/topology/graph_test.go
  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
  • charts/topograph/Chart.yaml
  • CHANGELOG.md
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/providers/**/*.go : When using `ClusterTopology`, populate fabric tiers closest-first, preserve optional accelerator domain and sub-domain fields, and call `ToGraph`.

Applied to files:

  • pkg/topology/topology.go
  • docs/providers/infiniband.md
  • pkg/engines/nfd/objects.go
  • CHANGELOG.md
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/providers/**/*.go : Providers discover topology and return the canonical `topology.Graph`; they must not emit scheduler-specific output.

Applied to files:

  • pkg/topology/topology.go
  • docs/providers/infiniband.md
  • pkg/engines/graph/engine_test.go
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/providers/**/*.go : Providers must return a `*topology.Graph` and `*httperr.Error`; plain `error` is not acceptable at the provider interface boundary.

Applied to files:

  • pkg/topology/topology.go
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/engines/**/*.go : Engines only translate the canonical topology and must not discover or read the physical fabric.

Applied to files:

  • pkg/engines/nfd/objects.go
  • pkg/engines/graph/engine_test.go
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to pkg/providers/*/provider.go : A provider must expose `func NamedLoader() (string, providers.Loader)` and be registered in `pkg/registry/registry.go`.

Applied to files:

  • pkg/engines/graph/engine_test.go
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to charts/topograph/tests/**/*.{yaml,yml} : Run Helm chart tests when changing `charts/topograph/`; review snapshot changes before committing updates.

Applied to files:

  • charts/topograph/Chart.yaml
  • CHANGELOG.md
📚 Learning: 2026-08-08T10:57:01.397Z
Learnt from: CR
Repo: NVIDIA/topograph PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-08T10:57:01.397Z
Learning: Applies to CHANGELOG.md : Record applicable user-facing features, fixes, breaking changes, or Helm migrations under `[Unreleased]`.

Applied to files:

  • CHANGELOG.md
🔇 Additional comments (15)
CHANGELOG.md (1)

31-31: LGTM!

Also applies to: 48-48, 59-65, 74-75

charts/topograph/Chart.yaml (1)

15-15: 📐 Maintainability & Code Quality

Run the required chart validation before merge.

Because charts/topograph/Chart.yaml changed, run the Helm chart tests and make qualify. Review any chart snapshots produced by the test run.

As per coding guidelines: “Before pushing, run make qualify; all CI checks, including Go build/test/lint, Codecov, and DCO, must be green before merge.”

Based on learnings: “Run Helm chart tests when changing charts/topograph/; review snapshot changes before committing updates.”

Sources: Coding guidelines, Learnings

pkg/topology/topology.go (1)

35-37: LGTM!

Also applies to: 46-51

demos/test-nfd/demo.sh (1)

30-30: LGTM!

docs/design/nfd-engine-sdd.md (1)

93-96: LGTM!

docs/engines/nfd.md (1)

124-124: LGTM!

Also applies to: 150-154

docs/engines/slinky.md (1)

166-171: LGTM!

Also applies to: 187-192

docs/modeling.md (1)

60-66: LGTM!

pkg/topology/graph_test.go (1)

14-14: LGTM!

Also applies to: 186-186, 202-202

pkg/engines/graph/engine_test.go (1)

19-19: LGTM!

Also applies to: 111-111, 123-123

docs/providers/dra.md (1)

114-117: LGTM!

docs/providers/infiniband.md (1)

94-101: LGTM!

Also applies to: 132-132

docs/providers/lambdai.md (1)

239-240: LGTM!

docs/reference/node-labels.md (1)

154-167: LGTM!

docs/engines/graph.md (1)

24-24: LGTM!

require.Contains(t, manifest, "kind: List")
require.Contains(t, manifest, "name: i21")
require.Contains(t, manifest, "topograph.nvidia.com/instance: i-I21")
require.Contains(t, manifest, "topograph.run/instance: i-I21")

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Add negative migration coverage.

require.Contains proves that the new instance key appears, but it also passes if the old key is emitted. Add an assertion that the manifest does not contain topograph.nvidia.com/instance. Also cover the renamed topograph.run/region key with the fixture's expected value.

As per path instructions, changed tests must cover regression cases for metadata migrations.

Proposed test addition
 	require.Contains(t, manifest, "topograph.run/instance: i-I21")
+	require.NotContains(t, manifest, "topograph.nvidia.com/instance")
🤖 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/kwok/nodes_test.go` at line 113, Expand the migration assertions in
the affected test around the manifest checks: retain the positive assertion for
topograph.run/instance, add a negative assertion that
topograph.nvidia.com/instance is absent, and assert the renamed
topograph.run/region key using the fixture’s expected value.

Source: Path instructions

Comment on lines +50 to +59
labelEngine = "topograph.run/engine"
labelResource = "topograph.run/resource"
labelGroupType = "topograph.run/group-type"

managedByTopograph = "topograph"
resourceNodeFeature = "nodefeature"
resourceNodeFeatureGroup = "nodefeaturegroup"
annotationNodeName = "topograph.nvidia.com/node-name"
annotationTopologyLabelKey = "topograph.nvidia.com/label-key"
annotationTopologyValue = "topograph.nvidia.com/label-value"
annotationNodeName = "topograph.run/node-name"
annotationTopologyLabelKey = "topograph.run/label-key"
annotationTopologyValue = "topograph.run/label-value"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Preserve cleanup of pre-migration NFD objects.

After an upgrade, existing NodeFeature and NodeFeatureGroup objects can still carry topograph.nvidia.com/... ownership labels. cleanupResource at Lines 347-350 selects only the new topograph.run/... labels. An old object that is no longer desired is therefore not listed or deleted, so stale NFD topology can remain active.

Support both label domains during the migration window, or add an explicit migration cleanup for the old domain. Add a regression test for a stale object with the old ownership labels.

As per path instructions, pkg Go changes must preserve public contracts and flag behavior changes that lack meaningful regression 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/engines/nfd/objects.go` around lines 50 - 59, Update cleanupResource to
discover and delete stale NodeFeature and NodeFeatureGroup objects using both
the current topograph.run ownership labels and legacy topograph.nvidia.com
ownership labels during migration. Preserve existing cleanup behavior for new
labels, and add regression coverage for a stale object carrying only the legacy
ownership labels.

Source: Path instructions

@dmitsh
dmitsh merged commit 7b88779 into main Aug 13, 2026
15 checks passed
@dmitsh
dmitsh deleted the ds-domain branch August 13, 2026 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant