diff --git a/e2e/conftest.py b/e2e/conftest.py index c3b928e6395..ab39544e5fb 100644 --- a/e2e/conftest.py +++ b/e2e/conftest.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E test fixtures that run against a real ``nemo services`` process. Usage:: diff --git a/e2e/files/test_files.py b/e2e/files/test_files.py index d351a37698f..1ab8fe2c644 100644 --- a/e2e/files/test_files.py +++ b/e2e/files/test_files.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for the files service. These tests verify basic file upload and download operations diff --git a/e2e/files/test_storage_backends.py b/e2e/files/test_storage_backends.py index b09ebc3da2f..45e7a7b92ac 100644 --- a/e2e/files/test_storage_backends.py +++ b/e2e/files/test_storage_backends.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for external storage backends (NGC, Hugging Face). These tests verify that the files service can create filesets backed by diff --git a/e2e/k8s/scripts/afterscript_collect_k8s_logs.sh b/e2e/k8s/scripts/afterscript_collect_k8s_logs.sh index be7375051f3..077d4b713c4 100755 --- a/e2e/k8s/scripts/afterscript_collect_k8s_logs.sh +++ b/e2e/k8s/scripts/afterscript_collect_k8s_logs.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # # Collect logs for failed pods in the current namespace. # diff --git a/e2e/k8s/scripts/collect_k8s_logs.sh b/e2e/k8s/scripts/collect_k8s_logs.sh index 073aed5224d..b6ed2e1bd5b 100755 --- a/e2e/k8s/scripts/collect_k8s_logs.sh +++ b/e2e/k8s/scripts/collect_k8s_logs.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Script: collect_k8s_logs.sh # Description: Collects Kubernetes pod logs and diagnostics, writing to files for archiving. # Safe to call even if the cluster is partially degraded — individual failures are ignored. diff --git a/e2e/k8s/scripts/create_rustfs_bucket.sh b/e2e/k8s/scripts/create_rustfs_bucket.sh index 1bb935935fd..8b0d22b5adb 100755 --- a/e2e/k8s/scripts/create_rustfs_bucket.sh +++ b/e2e/k8s/scripts/create_rustfs_bucket.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Create an E2E test bucket in RustFS # Expects NAMESPACE to be set (e.g. current kubectl context namespace). # Uses default credentials (rustfsadmin/rustfsadmin). diff --git a/e2e/k8s/scripts/install_helm_e2e.sh b/e2e/k8s/scripts/install_helm_e2e.sh index 6d4899c56be..91b4788d1f9 100755 --- a/e2e/k8s/scripts/install_helm_e2e.sh +++ b/e2e/k8s/scripts/install_helm_e2e.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # # Install NeMo Platform through Helm for local and CI Kubernetes E2E runs. # diff --git a/e2e/k8s/scripts/install_nmp_auth_e2e.sh b/e2e/k8s/scripts/install_nmp_auth_e2e.sh index fe25de79acf..4c374fa9883 100755 --- a/e2e/k8s/scripts/install_nmp_auth_e2e.sh +++ b/e2e/k8s/scripts/install_nmp_auth_e2e.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Install the auth-enabled local E2E harness on minikube. set -euo pipefail diff --git a/e2e/k8s/scripts/lib.sh b/e2e/k8s/scripts/lib.sh index 6df829398ce..37d454c7504 100644 --- a/e2e/k8s/scripts/lib.sh +++ b/e2e/k8s/scripts/lib.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Shared utilities for e2e K8s setup scripts. # --------------------------------------------------------------------------- diff --git a/e2e/k8s/scripts/local_build_and_upgrade.sh b/e2e/k8s/scripts/local_build_and_upgrade.sh index 9ab830c9913..1bd7bb989d5 100755 --- a/e2e/k8s/scripts/local_build_and_upgrade.sh +++ b/e2e/k8s/scripts/local_build_and_upgrade.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Build Docker images locally and deploy to minikube via Helm. # # This script handles the build step, then delegates the Helm install to diff --git a/e2e/k8s/scripts/prepull_kind_images.sh b/e2e/k8s/scripts/prepull_kind_images.sh index dc8b6cecbfc..8e46833d4a3 100755 --- a/e2e/k8s/scripts/prepull_kind_images.sh +++ b/e2e/k8s/scripts/prepull_kind_images.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Pull images directly into every kind node's containerd store. set -euo pipefail diff --git a/e2e/k8s/scripts/run_auth_e2e.sh b/e2e/k8s/scripts/run_auth_e2e.sh index 80f31f0257c..ead196ce824 100755 --- a/e2e/k8s/scripts/run_auth_e2e.sh +++ b/e2e/k8s/scripts/run_auth_e2e.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Run a fast auth-enabled smoke check, then the existing auth E2E suite. set -euo pipefail diff --git a/e2e/k8s/scripts/setup_local_kind_cpu.sh b/e2e/k8s/scripts/setup_local_kind_cpu.sh index 9300ec65ffc..4c82dce1a0d 100755 --- a/e2e/k8s/scripts/setup_local_kind_cpu.sh +++ b/e2e/k8s/scripts/setup_local_kind_cpu.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Script: setup_local_kind_cpu.sh # Description: Sets up a local kind cluster for CPU-only Kubernetes E2E tests. diff --git a/e2e/k8s/scripts/setup_local_minikube_cpu.sh b/e2e/k8s/scripts/setup_local_minikube_cpu.sh index 92ce8c04e59..3005742db62 100755 --- a/e2e/k8s/scripts/setup_local_minikube_cpu.sh +++ b/e2e/k8s/scripts/setup_local_minikube_cpu.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Script: setup_local_minikube_cpu.sh # Description: Sets up a local minikube cluster for CPU-only auth Helm/E2E validation. diff --git a/e2e/k8s/scripts/setup_local_minikube_gpu.sh b/e2e/k8s/scripts/setup_local_minikube_gpu.sh index e0fbfa601c0..740b5391502 100755 --- a/e2e/k8s/scripts/setup_local_minikube_gpu.sh +++ b/e2e/k8s/scripts/setup_local_minikube_gpu.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Script: setup_local_minikube_gpu.sh # Description: Sets up a local minikube cluster with GPU support for e2e testing # Usage: ./setup_local_minikube_gpu.sh diff --git a/e2e/k8s/scripts/wait_for_api.sh b/e2e/k8s/scripts/wait_for_api.sh index 74d60c44571..121f4bf3b03 100755 --- a/e2e/k8s/scripts/wait_for_api.sh +++ b/e2e/k8s/scripts/wait_for_api.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # # Wait for the platform API /cluster-info endpoint to respond. # Use after starting port-forward so tests don't run before the API is ready. diff --git a/e2e/k8s/scripts/wait_for_release_ready.sh b/e2e/k8s/scripts/wait_for_release_ready.sh index 6aa2dc8b3c5..3ad1f7116ee 100755 --- a/e2e/k8s/scripts/wait_for_release_ready.sh +++ b/e2e/k8s/scripts/wait_for_release_ready.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + # Wait for a Helm release to become ready, failing fast on image pull errors. set -euo pipefail diff --git a/e2e/test_data_designer.py b/e2e/test_data_designer.py index 2890b191833..0420ed2732d 100644 --- a/e2e/test_data_designer.py +++ b/e2e/test_data_designer.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + import tempfile import time from collections.abc import Generator diff --git a/e2e/test_entities.py b/e2e/test_entities.py index 09ef8b2341e..a79a09b0d63 100644 --- a/e2e/test_entities.py +++ b/e2e/test_entities.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for the entities API. These tests verify basic internal entity-store operations work correctly when diff --git a/e2e/test_inference.py b/e2e/test_inference.py index 8edcdd36a3e..f5910408380 100644 --- a/e2e/test_inference.py +++ b/e2e/test_inference.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for the Inference Gateway with mock provider mode. These tests verify that mock provider mode works through the real platform diff --git a/e2e/test_jobs.py b/e2e/test_jobs.py index 46c401d24c0..60ccdd1ddb8 100644 --- a/e2e/test_jobs.py +++ b/e2e/test_jobs.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for platform jobs. These tests submit jobs with CPUExecutionProviderSpec (container + command). diff --git a/e2e/test_nemo_agents.py b/e2e/test_nemo_agents.py index 1bbb1c43d5e..a8f8ddcbe4b 100644 --- a/e2e/test_nemo_agents.py +++ b/e2e/test_nemo_agents.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for the nemo-agents plugin. These tests cover the backend-agnostic API and SDK surface. diff --git a/e2e/test_nemo_agents_docker.py b/e2e/test_nemo_agents_docker.py index 92489cb6c9f..6cd2005c4fc 100644 --- a/e2e/test_nemo_agents_docker.py +++ b/e2e/test_nemo_agents_docker.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E test for docker-mode agent deployments. Unlike ``test_nemo_agents.py`` (backend-agnostic API/SDK surface, plus diff --git a/e2e/test_nemo_agents_k8s.py b/e2e/test_nemo_agents_k8s.py index 00b158edc8e..5db8aec079f 100644 --- a/e2e/test_nemo_agents_k8s.py +++ b/e2e/test_nemo_agents_k8s.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E test for Kubernetes-mode agent deployments. The Kubernetes counterpart to ``test_nemo_agents_docker.py``: it deploys an diff --git a/e2e/test_safe_synthesizer.py b/e2e/test_safe_synthesizer.py index ad563f5a7b3..5a7db77a7b1 100644 --- a/e2e/test_safe_synthesizer.py +++ b/e2e/test_safe_synthesizer.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E coverage for the Safe Synthesizer plugin. Smoke coverage runs in the local subprocess harness and verifies the API, diff --git a/e2e/test_secrets.py b/e2e/test_secrets.py index 7ec8f14909e..d8e3446d80c 100644 --- a/e2e/test_secrets.py +++ b/e2e/test_secrets.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for the secrets service. These tests verify basic secret creation and listing operations diff --git a/e2e/test_smoke.py b/e2e/test_smoke.py index 9cca433fc05..63dd7884cad 100644 --- a/e2e/test_smoke.py +++ b/e2e/test_smoke.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """Smoke tests that verify the platform is reachable and core APIs respond. These are intentionally minimal — they validate the e2e harness works and diff --git a/e2e/test_studio.py b/e2e/test_studio.py index f8a7576e0dd..60d6091d348 100644 --- a/e2e/test_studio.py +++ b/e2e/test_studio.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """E2E tests for the Studio UI service. These tests verify that the Studio static files are correctly served diff --git a/k8s/helm/helm-docs-template/nemo-helm-readme.md.gotmpl b/k8s/helm/helm-docs-template/nemo-helm-readme.md.gotmpl index 7b04f6ee977..26b594e10cc 100644 --- a/k8s/helm/helm-docs-template/nemo-helm-readme.md.gotmpl +++ b/k8s/helm/helm-docs-template/nemo-helm-readme.md.gotmpl @@ -1,3 +1,6 @@ +{{/* SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */}} +{{/* SPDX-License-Identifier: Apache-2.0 */}} + # {{ template "chart.description" . }} {{ template "chart.typeBadge" . }} diff --git a/script/copyright_fixer.py b/script/copyright_fixer.py index 6a0b0b71351..52a3e20ea60 100755 --- a/script/copyright_fixer.py +++ b/script/copyright_fixer.py @@ -39,14 +39,18 @@ ".go", ".hcl", ".html", + ".http", ".j2", ".jinja", ".js", ".jsx", + ".gotmpl", + ".mako", ".md", ".mdx", ".mjs", ".cjs", + ".py", ".rego", ".sh", ".toml", @@ -68,11 +72,14 @@ ".gitignore", ".helmignore", ".prettierignore", + "Brewfile", "Dockerfile", "Makefile", } ) +_HTML_FILENAMES = frozenset({"README"}) + _COPYRIGHT_IGNORE_FILE = ".copyrightignore" # Comment-style headers by file type @@ -121,6 +128,9 @@ _PROPRIETARY_LICENSE = "LicenseRef-NvidiaProprietary" _CORRECT_LICENSE = "Apache-2.0" +_PROPRIETARY_LICENSE_RE = re.compile( + rf"(?m)^(?:#|//|/\*| \*| + + Generic single-database configuration. ## Generating and running migrations diff --git a/services/core/entities/alembic/script.py.mako b/services/core/entities/alembic/script.py.mako index 11016301e74..76a4058f1ad 100644 --- a/services/core/entities/alembic/script.py.mako +++ b/services/core/entities/alembic/script.py.mako @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + """${message} Revision ID: ${up_revision} diff --git a/services/core/entities/src/nmp/core/entities/api/v2/entities/entities.http b/services/core/entities/src/nmp/core/entities/api/v2/entities/entities.http index a03fa98bad2..23f24515d45 100644 --- a/services/core/entities/src/nmp/core/entities/api/v2/entities/entities.http +++ b/services/core/entities/src/nmp/core/entities/api/v2/entities/entities.http @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + // Example HTTP calls for the /v2/entities API: @base_url = http://localhost:8080 diff --git a/services/core/entities/src/nmp/core/entities/api/v2/workspaces/workspaces.http b/services/core/entities/src/nmp/core/entities/api/v2/workspaces/workspaces.http index 3851d975b1a..31631a99b76 100644 --- a/services/core/entities/src/nmp/core/entities/api/v2/workspaces/workspaces.http +++ b/services/core/entities/src/nmp/core/entities/api/v2/workspaces/workspaces.http @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + // Example HTTP calls for the /v2/workspaces API: @base_url = http://localhost:8001