Skip to content

Commit e8f0006

Browse files
authored
Merge branch 'main' into main
2 parents ef6d869 + 3ef7b8f commit e8f0006

641 files changed

Lines changed: 45781 additions & 13395 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.ai/linear-ticket-refs.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
2+
<!-- SPDX-License-Identifier: Apache-2.0 -->
3+
4+
# Linear Ticket References in Source Code
5+
6+
Source code in this repository must not carry references to internal Linear
7+
tickets (`DIS-XXXX`, `DYN-XXXX`, or any `<PROJECT>-NNNN` Linear ID). Linear is
8+
NVIDIA-internal, so those IDs are unresolvable for external contributors and
9+
public users.
10+
11+
## What to do when one is flagged
12+
13+
1. **Look for an existing GitHub issue** that already tracks the same work —
14+
the GitHub issue search on the repo's *Issues* tab is usually enough.
15+
2. **If none exists, file a new GitHub issue** with a public-friendly summary.
16+
Don't include the Linear URL or ID in the public issue body; assign it to
17+
yourself when you file it.
18+
3. **Replace the Linear ref in the source** with the GitHub issue number
19+
(`GH-NNNN` in identifiers and code comments, or `#NNNN` where prose allows).
20+
4. **Carry both refs in the PR description** (`Closes #NNNN`, plus a short
21+
note that an internal Linear ticket also exists) and cross-link the GitHub
22+
issue back on the Linear ticket so they stay connected.
23+
24+
## Scope
25+
26+
Applies to the working tree — anything that ships to `main`. Does **not** apply
27+
to commit-message bodies, branch names, or PR titles/descriptions.
28+
29+
Markdown documentation (`*.md`) may reference Linear tickets for internal
30+
context, but prefer to also include the matching GitHub link when one exists.

.coderabbit.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ reviews:
3333
instructions: "Review against .ai/pytest-guidelines.md"
3434
- path: "**/launch/**/*.sh"
3535
instructions: "Review against .ai/bash-launch-guidelines.md"
36+
- path: "**/*.{py,rs,go,ts,tsx,js,mjs,cjs,sh,yaml,yml,toml}"
37+
instructions: "Flag internal Linear ticket references (e.g. DIS-XXXX, DYN-XXXX, OPS-XXXX, DEP-XXXX, or any <PROJECT>-NNNN ID) in the added lines; see .ai/linear-ticket-refs.md for what to recommend."
3638
knowledge_base:
3739
code_guidelines:
3840
filePatterns:

.coveragerc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[paths]
2+
dynamo =
3+
components/src/dynamo
4+
/workspace/components/src/dynamo
5+
$GITHUB_WORKSPACE/components/src/dynamo
6+
dynamo_bindings =
7+
lib/bindings/python/src/dynamo
8+
/workspace/lib/bindings/python/src/dynamo
9+
$GITHUB_WORKSPACE/lib/bindings/python/src/dynamo
10+
[run]
11+
parallel = True

.github/FILTERS.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ When you open a PR, CI checks which files changed and runs only relevant jobs:
1212
| `operator` | Kubernetes operator tests |
1313
| `deploy` | Deploy-specific tests |
1414
| `vllm` / `sglang` / `trtllm` | Backend-specific tests |
15+
| `benchmarks` | Dynamo runtime pipeline (runs `tests/benchmarks/**` pytest suite) |
1516
| `docs` | Nothing (classification only) |
1617
| `examples` | Nothing (classification only) |
1718
| `ignore` | Nothing (classification only) |
@@ -52,18 +53,15 @@ Example: `lib/**/*.rs` matches all Rust files under `lib/`.
5253

5354
## Adding a New Filter Group
5455

55-
If you create a new filter in `filters.yaml`, you must also update the workflows:
56+
If you create a new filter in `filters.yaml`, you must also update the shared
57+
changed-files action so the coverage check knows about it:
5658

57-
1. Add the filter to `filters.yaml`
58-
2. Update **both** workflow files to include the new filter in the uncovered files check:
59-
- `.github/workflows/container-validation-backends.yml`
60-
- `.github/workflows/container-validation-dynamo.yml`
61-
62-
In each workflow, find the `COVERED_FILES` line and add your new filter:
63-
64-
```bash
65-
COVERED_FILES=$(echo "... ${{ steps.filter.outputs.YOURFILTER_all_modified_files }} ..." | ...)
66-
```
59+
1. Add the filter to `filters.yaml`.
60+
2. Edit `.github/actions/changed-files/action.yml`:
61+
- Expose the new filter as an output (see the existing `core`, `planner`,
62+
`vllm`, `sglang`, `trtllm`, etc. entries at the top of the file).
63+
- Add its `*_all_modified_files` to the `COVERED_FILES` line in the
64+
"Check for uncovered files" step.
6765

6866
If you skip this step, CI will fail with "uncovered files" even though your filter exists.
6967

.github/actions/bootstrap-buildkit/action.yml

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ inputs:
5959
description: 'Skip the bootstrap step (only create the builder)'
6060
required: false
6161
default: 'false'
62-
fresh_builder:
63-
description: 'Force creation of a new K8s builder even if one already exists. Used by the create-fresh-builder preliminary job.'
62+
suppress_fallback_warning:
63+
description: 'Suppress the fallback pod warning when intentionally using the Kubernetes driver'
6464
required: false
6565
default: 'false'
6666

@@ -87,46 +87,41 @@ runs:
8787
if: inputs.buildkit_worker_addresses == ''
8888
shell: bash
8989
run: |
90-
if [[ "${{ inputs.fresh_builder }}" != "true" ]] && docker buildx inspect ${{ inputs.builder_name }} > /dev/null 2>&1; then
91-
echo "✅ Builder '${{ inputs.builder_name }}' already exists. Skipping creation."
92-
else
93-
if [[ "${{ inputs.fresh_builder }}" == "true" ]] && docker buildx inspect ${{ inputs.builder_name }} > /dev/null 2>&1; then
94-
echo "🔄 Forcing fresh K8s builder: removing existing '${{ inputs.builder_name }}'."
95-
docker buildx rm ${{ inputs.builder_name }} || true
96-
fi
97-
echo "🔨 Creating K8s builder '${{ inputs.builder_name }}'."
98-
docker buildx create --use --name ${{ inputs.builder_name }} --driver kubernetes --platform=linux/amd64 \
99-
'--driver-opt=requests.ephemeral-storage=${{ inputs.ephemeral_storage }}' \
100-
'--driver-opt=namespace=${{ inputs.namespace }}' \
101-
'--driver-opt=loadbalance=sticky' \
102-
'--driver-opt=replicas=${{ inputs.replicas }}' \
103-
'--driver-opt=requests.cpu=${{ inputs.requests_cpu }}' \
104-
'--driver-opt=requests.memory=${{ inputs.requests_memory }}' \
105-
'--driver-opt=limits.memory=${{ inputs.limits_memory }}' \
106-
'--driver-opt="nodeselector=kubernetes.io/arch=amd64,role=dynamo-builder-fallback"' \
107-
'--driver-opt="tolerations=${{ inputs.tolerations }}"'
90+
# If the builder already exists, these commands will just set the right configurations to use it
91+
echo "🔨 Creating K8s builder '${{ inputs.builder_name }}'."
92+
docker buildx create --use --name ${{ inputs.builder_name }} --driver kubernetes --platform=linux/amd64 \
93+
'--driver-opt=requests.ephemeral-storage=${{ inputs.ephemeral_storage }}' \
94+
'--driver-opt=namespace=${{ inputs.namespace }}' \
95+
'--driver-opt=loadbalance=sticky' \
96+
'--driver-opt=replicas=${{ inputs.replicas }}' \
97+
'--driver-opt=requests.cpu=${{ inputs.requests_cpu }}' \
98+
'--driver-opt=requests.memory=${{ inputs.requests_memory }}' \
99+
'--driver-opt=limits.memory=${{ inputs.limits_memory }}' \
100+
'--driver-opt="nodeselector=kubernetes.io/arch=amd64,role=dynamo-builder-fallback"' \
101+
'--driver-opt="tolerations=${{ inputs.tolerations }}"'
102+
103+
docker buildx create --append --name ${{ inputs.builder_name }} --driver kubernetes --platform=linux/arm64 \
104+
'--driver-opt=requests.ephemeral-storage=${{ inputs.ephemeral_storage }}' \
105+
'--driver-opt=namespace=${{ inputs.namespace }}' \
106+
'--driver-opt=loadbalance=sticky' \
107+
'--driver-opt=replicas=${{ inputs.replicas }}' \
108+
'--driver-opt=requests.cpu=${{ inputs.requests_cpu }}' \
109+
'--driver-opt=requests.memory=${{ inputs.requests_memory }}' \
110+
'--driver-opt=limits.memory=${{ inputs.limits_memory }}' \
111+
'--driver-opt="nodeselector=kubernetes.io/arch=arm64,role=dynamo-builder-fallback"' \
112+
'--driver-opt="tolerations=${{ inputs.tolerations }}"'
108113
109-
docker buildx create --append --name ${{ inputs.builder_name }} --driver kubernetes --platform=linux/arm64 \
110-
'--driver-opt=requests.ephemeral-storage=${{ inputs.ephemeral_storage }}' \
111-
'--driver-opt=namespace=${{ inputs.namespace }}' \
112-
'--driver-opt=loadbalance=sticky' \
113-
'--driver-opt=replicas=${{ inputs.replicas }}' \
114-
'--driver-opt=requests.cpu=${{ inputs.requests_cpu }}' \
115-
'--driver-opt=requests.memory=${{ inputs.requests_memory }}' \
116-
'--driver-opt=limits.memory=${{ inputs.limits_memory }}' \
117-
'--driver-opt="nodeselector=kubernetes.io/arch=arm64,role=dynamo-builder-fallback"' \
118-
'--driver-opt="tolerations=${{ inputs.tolerations }}"'
119-
fi
120114
sleep 3 # Give the builders some time to be ready
121115
122-
if [[ "${{ inputs.skip_bootstrap }}" != "true" && "${{ inputs.fresh_builder }}" != "true" ]]; then
123-
echo "::warning::Build is using fallback pod. Please alert the ops team."
116+
if [[ "${{ inputs.suppress_fallback_warning }}" != "true" ]]; then
117+
echo "::warning::Build is using fallback pod"
124118
echo "## ⚠️ Fallback Build Warning" >> $GITHUB_STEP_SUMMARY
125-
echo "This build is running on a **fallback pod**. Please alert the ops team." >> $GITHUB_STEP_SUMMARY
119+
echo "This build is using the **fallback pod** because the preferred remote builders are unavailable. Expected during nightly runs and outside business hours." >> $GITHUB_STEP_SUMMARY
126120
echo "" >> $GITHUB_STEP_SUMMARY
127121
fi
128122
129123
124+
130125
- name: Bootstrap buildkit
131126
if: inputs.skip_bootstrap != 'true'
132127
shell: bash

0 commit comments

Comments
 (0)