Repository: kubernetes-sigs/kueue

Issue:
ProvisionRequest: GA Requirements
I want to gather requirements on GA for ProvisiongRequests. The feature is beta in 0.5 and the graduation criteria in the KEP is vague.

Requirements: 

- [x] https://github.com/kubernetes-sigs/kueue/issues/2747
- [x] https://github.com/kubernetes-sigs/kueue/issues/3419


Discussion:
@kannon92: cc @elmiko @JoelSpeed @kannon92: cc @tenzen-y @k8s-triage-robot: The Kubernetes project currently lacks enough contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:
- After 90d of inactivity, `lifecycle/stale` is applied
- After 30d of inactivity since `lifecycle/stale` was applied, `lifecycle/rotten` is applied
- After 30d of inactivity since `lifecycle/rotten` was applied, the issue is closed

You can:
- Mark this issue as fresh with `/remove-lifecycle stale`
- Close this issue with `/close`
- Offer to help out with [Issue Triage][1]

Please send feedback to sig-contributor-experience at [kubernetes/community](https://github.com/kubernetes/community).

/lifecycle stale

[1]: https://www.kubernetes.dev/docs/guide/issue-triage/@tenzen-y: /remove-lifecycle stale@kannon92: @mimowo @tenzen-y 

Any reason why we can't graduate this to GA?@kannon92: > [@mimowo](https://github.com/mimowo) [@tenzen-y](https://github.com/tenzen-y)
> 
> Any reason why we can't graduate this to GA?

There is no blockers for graduation.

Solution patch:
diff --git a/.github/ISSUE_TEMPLATE/NEW_RELEASE.md b/.github/ISSUE_TEMPLATE/NEW_RELEASE.md
index 4edb95cde..66227ac11 100644
--- a/.github/ISSUE_TEMPLATE/NEW_RELEASE.md
+++ b/.github/ISSUE_TEMPLATE/NEW_RELEASE.md
@@ -23,7 +23,7 @@ Please do not remove items from the checklist
 - [ ] Update the release branch:
   - [ ] Update `RELEASE_BRANCH` and `RELEASE_VERSION` in `Makefile` and run `make prepare-release-branch`
   - [ ] Update the `CHANGELOG`
-  - [ ] Submit a pull request with the changes: <!-- example #211 #214 -->
+  - [ ] Submit a pull request with the changes: <!-- PREPARE_PULL --> <!-- example #211 #214 -->
 - [ ] An OWNER creates a signed tag running
      `git tag -s $VERSION`
       and inserts the changelog into the tag description.
diff --git a/CHANGELOG/CHANGELOG-0.12.md b/CHANGELOG/CHANGELOG-0.12.md
index 0223d522f..c49a78540 100644
--- a/CHANGELOG/CHANGELOG-0.12.md
+++ b/CHANGELOG/CHANGELOG-0.12.md
@@ -1,3 +1,20 @@
+## v0.12.7
+
+Changes since `v0.12.6`:
+
+## Changes by Kind
+
+### Bug or Regression
+
+- Fix support for PodGroup integration used by external controllers, which determine the
+  the target LocalQueue and the group size only later. In that case the hash would not be
+  computed resulting in downstream issues for ProvisioningRequest.
+
+  Now such an external controller can indicate the control over the PodGroup by adding
+  the `kueue.x-k8s.io/pod-suspending-parent` annotation, and later patch the Pods by setting
+  other metadata, like the kueue.x-k8s.io/queue-name label to initiate scheduling of the PodGroup. (#6463, @pawloch00)
+- TAS: fix the bug that Kueue is crashing when PodSet has size 0, eg. no workers in LeaderWorkerSet instance. (#6524, @mimowo)
+
 ## v0.12.6
 
 Changes since `v0.12.5`:
diff --git a/CHANGELOG/CHANGELOG-0.13.md b/CHANGELOG/CHANGELOG-0.13.md
index cd9ddebbd..be8ff2ba5 100644
--- a/CHANGELOG/CHANGELOG-0.13.md
+++ b/CHANGELOG/CHANGELOG-0.13.md
@@ -1,3 +1,22 @@
+## V0.13.2
+
+Changes since `v0.13.1`:
+
+## Changes by Kind
+
+### Bug or Regression
+
+- ElasticJobs: Fix the bug that scheduling of the Pending workloads was not triggered on scale-down of the running
+  elastic Job which could result in admitting one or more of the queued workloads. (#6407, @ichekrygin)
+- Fix support for PodGroup integration used by external controllers, which determine the
+  the target LocalQueue and the group size only later. In that case the hash would not be
+  computed resulting in downstream issues for ProvisioningRequest.
+
+  Now such an external controller can indicate the control over the PodGroup by adding
+  the `kueue.x-k8s.io/pod-suspending-parent` annotation, and later patch the Pods by setting
+  other metadata, like the kueue.x-k8s.io/queue-name label to initiate scheduling of the PodGroup. (#6461, @pawloch00)
+- TAS: fix the bug that Kueue is crashing when PodSet has size 0, eg. no workers in LeaderWorkerSet instance. (#6522, @mimowo)
+
 ## v0.13.1
 
 Changes since `v0.13.0`:
diff --git a/Makefile b/Makefile
index f7adba6e4..89d7c13d3 100644
--- a/Makefile
+++ b/Makefile
@@ -85,7 +85,7 @@ LD_FLAGS += -X '$(version_pkg).BuildDate=$(shell date -u +%Y-%m-%dT%H:%M:%SZ)'
 
 # Update these variables when preparing a new release or a release branch.
 # Then run `make prepare-release-branch`
-RELEASE_VERSION=v0.13.1
+RELEASE_VERSION=v0.13.2
 RELEASE_BRANCH=main
 # Application version for Helm and npm (strips leading 'v' from RELEASE_VERSION)
 APP_VERSION := $(shell echo $(RELEASE_VERSION) | cut -c2-)
diff --git a/README.md b/README.md
index 861d73a7a..1616864f3 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ Read the [overview](https://kueue.sigs.k8s.io/docs/overview/) and watch the Kueu
 To install the latest release of Kueue in your cluster, run the following command:
 
 ```shell
-kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.1/manifests.yaml
+kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.2/manifests.yaml
 ```
 
 The controller runs in the `kueue-system` namespace.
@@ -88,18 +88,6 @@ Learn more about:
 - Kueue [concepts](https://kueue.sigs.k8s.io/docs/concepts).
 - Common and advanced [tasks](https://kueue.sigs.k8s.io/docs/tasks).
 
-## Architecture
-
-<!-- TODO(#64) Remove links to google docs once the contents have been migrated to this repo -->
-
-Learn more about the architecture of Kueue with the following design docs:
-
-- [bit.ly/kueue-apis](https://bit.ly/kueue-apis) discusses the API proposal and a high
-  level description of how Kueue operates. Join the [mailing list](https://groups.google.com/a/kubernetes.io/g/wg-batch)
-to get document access.
-- [bit.ly/kueue-controller-design](https://bit.ly/kueue-controller-design)
-presents the detailed design of the controller.
-
 ## Roadmap
 
 High-level overview of the main priorities for 2025:
@@ -140,7 +128,8 @@ You can reach the maintainers of this project at:
 
 ### Graphic assets
 
-- [Logos](https://github.com/cncf/artwork/tree/main/projects/kueue)
+- [Kueue](https://github.com/cncf/artwork/tree/main/projects/kubernetes/sub-projects/kueue)
+- [KueueViz](https://github.com/cncf/artwork/tree/main/projects/kubernetes/sub-projects/kueueviz)
 
 ### Code of conduct
 
diff --git a/SECURITY-INSIGHTS.yaml b/SECURITY-INSIGHTS.yaml
index af713e4fe..94a084b99 100644
--- a/SECURITY-INSIGHTS.yaml
+++ b/SECURITY-INSIGHTS.yaml
@@ -1,11 +1,11 @@
 header:
   schema-version: 1.0.0
   expiration-date: '2024-09-28T01:00:00.000Z'
-  last-updated: '2025-08-01'
-  last-reviewed: '2025-08-01'
-  commit-hash: "81236abed536034d41156c5af20d614590f82935"
+  last-updated: '2025-08-11'
+  last-reviewed: '2025-08-11'
+  commit-hash: "2fb89c587565f18284775f0849f030c41b8a6980"
   project-url: 'https://github.com/kubernetes-sigs/kueue'
-  project-release: "0.13.1"
+  project-release: "0.13.2"
   changelog: 'https://github.com/kubernetes-sigs/kueue/tree/main/CHANGELOG'
   license: 'https://github.com/kubernetes-sigs/kueue/blob/main/LICENSE'
 project-lifecycle:
@@ -28,7 +28,7 @@ documentation:
   - 'https://kueue.sigs.k8s.io/docs/'
 distribution-points:
   - >-
-    https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.1/manifests.yaml
+    https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.2/manifests.yaml
 security-artifacts:
   threat-model:
     threat-model-created: false
@@ -62,5 +62,5 @@ dependencies:
   dependencies-lists:
     - 'https://github.com/kubernetes-sigs/kueue/blob/main/go.mod'
   sbom:
-    - sbom-file: https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.1/kueue-v0.13.1.spdx.json
+    - sbom-file: https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.2/kueue-v0.13.2.spdx.json
       sbom-format: SPDX
diff --git a/charts/kueue/Chart.yaml b/charts/kueue/Chart.yaml
index eb114896e..58bc89a9f 100644
--- a/charts/kueue/Chart.yaml
+++ b/charts/kueue/Chart.yaml
@@ -16,9 +16,9 @@ type: application
 # NOTE: Do not modify manually. In Kueue, the version and appVersion are
 # overridden to GIT_TAG when building the artifacts, including the helm charts,
 # via Makefile.
-version: 0.13.1
+version: 0.13.2
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
 # It is recommended to use it with quotes.
-appVersion: "v0.13.1"
+appVersion: "v0.13.2"
diff --git a/charts/kueue/README.md b/charts/kueue/README.md
index 61ae67288..fd99de5e3 100644
--- a/charts/kueue/README.md
+++ b/charts/kueue/README.md
@@ -1,6 +1,6 @@
 # kueue
 
-![Version: 0.13.1](https://img.shields.io/badge/Version-0.13.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.13.1](https://img.shields.io/badge/AppVersion-v0.13.1-informational?style=flat-square)
+![Version: 0.13.2](https://img.shields.io/badge/Version-0.13.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.13.2](https://img.shields.io/badge/AppVersion-v0.13.2-informational?style=flat-square)
 
 Kueue is a set of APIs and controller for job queueing. It is a job-level manager that decides when a job should be admitted to start (as in pods can be created) and when it should stop (as in active pods should be deleted).
 
@@ -28,7 +28,7 @@ $ helm install kueue kueue/ --create-namespace --namespace kueue-system
 Or use the charts pushed to `oci://registry.k8s.io/kueue/charts/kueue`:
 
 ```bash
-helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" --create-namespace --namespace=kueue-system
+helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.2" --create-namespace --namespace=kueue-system
 ```
 
 For more advanced parametrization of Kueue, we recommend using a local overrides file, passed via the `--values` flag. For example:
@@ -50,7 +50,7 @@ controllerManager:
 ```
 
 ```bash
-helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" \
+helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.2" \
   --create-namespace --namespace=kueue-system \
   --values overrides.yaml
 ```
@@ -58,7 +58,7 @@ helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" \
 You can also use the `--set` flag. For example, to enable a feature gate (e.g., `TopologyAwareScheduling`):
 
 ```bash
-helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" \
+helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.2" \
   --create-namespace --namespace=kueue-system \
   --set "controllerManager.featureGates[0].name=TopologyAwareScheduling" \
   --set "controllerManager.featureGates[0].enabled=true"
diff --git a/charts/kueue/README.md.gotmpl b/charts/kueue/README.md.gotmpl
index 55393cae1..53f012a68 100644
--- a/charts/kueue/README.md.gotmpl
+++ b/charts/kueue/README.md.gotmpl
@@ -30,7 +30,7 @@ $ helm install kueue kueue/ --create-namespace --namespace kueue-system
 Or use the charts pushed to `oci://registry.k8s.io/kueue/charts/kueue`:
 
 ```bash
-helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" --create-namespace --namespace=kueue-system
+helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.2" --create-namespace --namespace=kueue-system
 ```
 
 For more advanced parametrization of Kueue, we recommend using a local overrides file, passed via the `--values` flag. For example:
@@ -52,7 +52,7 @@ controllerManager:
 ```
 
 ```bash
-helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" \
+helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.2" \
   --create-namespace --namespace=kueue-system \
   --values overrides.yaml
 ```
@@ -60,7 +60,7 @@ helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" \
 You can also use the `--set` flag. For example, to enable a feature gate (e.g., `TopologyAwareScheduling`):
 
 ```bash
-helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.1" \
+helm install kueue oci://registry.k8s.io/kueue/charts/kueue --version="0.13.2" \
   --create-namespace --namespace=kueue-system \
   --set "controllerManager.featureGates[0].name=TopologyAwareScheduling" \
   --set "controllerManager.featureGates[0].enabled=true"
diff --git a/cmd/kueue/main.go b/cmd/kueue/main.go
index 9ace605f4..657f17a5d 100644
--- a/cmd/kueue/main.go
+++ b/cmd/kueue/main.go
@@ -289,12 +289,10 @@ func setupIndexes(ctx context.Context, mgr ctrl.Manager, cfg *configapi.Configur
 	}
 
 	// setup provision admission check controller indexes
-	if features.Enabled(features.ProvisioningACC) {
-		if err := provisioning.ServerSupportsProvisioningRequest(mgr); err != nil {
-			setupLog.Error(err, "Skipping admission check controller setup: Provisioning Requests not supported (Possible cause: missing or unsupported cluster-autoscaler)")
-		} else if err := provisioning.SetupIndexer(ctx, mgr.GetFieldIndexer()); err != nil {
-			return fmt.Errorf("could not setup provisioning indexer: %w", err)
-		}
+	if err := provisioning.ServerSupportsProvisioningRequest(mgr); err != nil {
+		setupLog.Error(err, "Skipping admission check controller setup: Provisioning Requests not supported (Possible cause: missing or unsupported cluster-autoscaler)")
+	} else if err := provisioning.SetupIndexer(ctx, mgr.GetFieldIndexer()); err != nil {
+		return fmt.Errorf("could not setup provisioning indexer: %w", err)
 	}
 
 	if features.Enabled(features.TopologyAwareScheduling) {
@@ -325,18 +323,16 @@ func setupControllers(ctx context.Context, mgr ctrl.Manager, cCache *cache.Cache
 	}
 
 	// setup provision admission check controller
-	if features.Enabled(features.ProvisioningACC) {
-		if err := provisioning.ServerSupportsProvisioningRequest(mgr); err != nil {
-			setupLog.Info("Skipping provisioning controller setup: Provisioning Requests not supported (Possible cause: missing or unsupported cluster-autoscaler)")
-		} else {
-			ctrl, err := provisioning.NewController(mgr.GetClient(), mgr.GetEventRecorderFor("kueue-provisioning-request-controller"))
-			if err != nil {
-				return fmt.Errorf("could not create the provisioning controller: %w", err)
-			}
+	if err := provisioning.ServerSupportsProvisioningRequest(mgr); err != nil {
+		setupLog.Info("Skipping provisioning controller setup: Provisioning Requests not supported (Possible cause: missing or unsupported cluster-autoscaler)")
+	} else {
+		ctrl, err := provisioning.NewController(mgr.GetClient(), mgr.GetEventRecorderFor("kueue-provisioning-request-controller"))
+		if err != nil {
+			return fmt.Errorf("could not create the provisioning controller: %w", err)
+		}
 
-			if err := ctrl.SetupWithManager(mgr); err != nil {
-				return fmt.Errorf("could not setup provisioning controller: %w", err)
-			}
+		if err := ctrl.SetupWithManager(mgr); err != nil {
+			return fmt.Errorf("could not setup provisioning controller: %w", err)
 		}
 	}
 
diff --git a/cmd/kueueviz/INSTALL.md b/cmd/kueueviz/INSTALL.md
index 51052f83b..1c41c6076 100644
--- a/cmd/kueueviz/INSTALL.md
+++ b/cmd/kueueviz/INSTALL.md
@@ -3,7 +3,7 @@
 KueueViz can be installed using `kubectl` with the following command:
 
 ```
-kubectl create -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.1/kueueviz.yaml
+kubectl create -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.13.2/kueueviz.yaml
 ```
 If you are using `kind` and that you don't have an `ingress` controller, you can use `port-forward` to 
 configure and run `KueueViz`:
@@ -23,7 +23,7 @@ by ensuring that `enableKueueViz` is set to `true`:
 
 ```
 helm upgrade --install kueue oci://registry.k8s.io/kueue/charts/kueue \
-  --version="0.13.1"
+  --version="0.13.2"
   --namespace kueue-system \
   --set enableKueueViz=true \
   --create-namespace
@@ -44,7 +44,7 @@ kind create cluster
 kind get kubeconfig > kubeconfig
 export KUBECONFIG=$PWD/kubeconfig
 helm install kueue oci://us-central1-docker.pkg.dev/k8s-staging-images/charts/kueue \
-            --version="0.13.1" --create-namespace --namespace=kueue-system
+            --version="0.13.2" --create-namespace --namespace=kueue-system
 ```
 
 ## Build
diff --git a/cmd/kueueviz/frontend/package-lock.json b/cmd/kueueviz/frontend/package-lock.json
index 68ea09b0b..277c44a36 100644
--- a/cmd/kueueviz/frontend/package-lock.json
+++ b/cmd/kueueviz/frontend/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "kueueviz-frontend",
-  "version": "0.13.1",
+  "version": "0.13.2",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "kueueviz-frontend",
-      "version": "0.13.1",
+      "version": "0.13.2",
       "license": "Apache 2.0",
       "dependencies": {
         "@emotion/react": "^11.14.0",
diff --git a/cmd/kueueviz/frontend/package.json b/cmd/kueueviz/frontend/package.json
index 723341e3e..da13657df 100644
--- a/cmd/kueueviz/frontend/package.json
+++ b/cmd/kueueviz/frontend/package.json
@@ -1,6 +1,6 @@
 {
   "name": "kueueviz-frontend",
-  "version": "0.13.1",
+  "version": "0.13.2",
   "private": true,
   "description": "Frontend dashboard for visualizing Kueue status",
   "main": "src/index.jsx",
diff --git a/go.mod b/go.mod
index 0e693ca93..145050fb7 100644
--- a/go.mod
+++ b/go.mod
@@ -37,7 +37,7 @@ require (
 	k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
 	sigs.k8s.io/controller-runtime v0.21.0
 	sigs.k8s.io/jobset v0.8.2
-	sigs.k8s.io/lws v0.6.2
+	sigs.k8s.io/lws v0.7.0
 	sigs.k8s.io/structured-merge-diff/v4 v4.7.0
 	sigs.k8s.io/yaml v1.6.0
 )
@@ -140,7 +140,7 @@ require (
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
-	k8s.io/apiextensions-apiserver v0.33.1 // indirect
+	k8s.io/apiextensions-apiserver v0.33.3 // indirect
 	k8s.io/code-generator v0.33.3 // indirect
 	k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f // indirect
 	k8s.io/kms v0.33.3 // indirect
diff --git a/go.sum b/go.sum
index 9781a71a0..31ccadbb8 100644
--- a/go.sum
+++ b/go.sum
@@ -349,8 +349,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 k8s.io/api v0.33.3 h1:SRd5t//hhkI1buzxb288fy2xvjubstenEKL9K51KBI8=
 k8s.io/api v0.33.3/go.mod h1:01Y/iLUjNBM3TAvypct7DIj0M0NIZc+PzAHCIo0CYGE=
-k8s.io/apiextensions-apiserver v0.33.1 h1:N7ccbSlRN6I2QBcXevB73PixX2dQNIW0ZRuguEE91zI=
-k8s.io/apiextensions-apiserver v0.33.1/go.mod h1:uNQ52z1A1Gu75QSa+pFK5bcXc4hq7lpOXbweZgi4dqA=
+k8s.io/apiextensions-apiserver v0.33.3 h1:qmOcAHN6DjfD0v9kxL5udB27SRP6SG/MTopmge3MwEs=
+k8s.io/apiextensions-apiserver v0.33.3/go.mod h1:oROuctgo27mUsyp9+Obahos6CWcMISSAPzQ77CAQGz8=
 k8s.io/apimachinery v0.33.3 h1:4ZSrmNa0c/ZpZJhAgRdcsFcZOw1PQU1bALVQ0B3I5LA=
 k8s.io/apimachinery v0.33.3/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
 k8s.io/apiserver v0.33.3 h1:Wv0hGc+QFdMJB4ZSiHrCgN3zL3QRatu56+rpccKC3J4=
@@ -397,8 +397,8 @@ sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ
 sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
 sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
 sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
-sigs.k8s.io/lws v0.6.2 h1:5ulPJDaLBI9zk6ayGO2Lfg9P/FBL3C1LsmHmJVqvHvo=
-sigs.k8s.io/lws v0.6.2/go.mod h1:7nbwcpHwdDticuWPTDe6Va5OpjasS0MoVeVD61N5Y0c=
+sigs.k8s.io/lws v0.7.0 h1:qWfzX8+UBak+Hq0+m/PuE3uO0mp/3dmm5q/h/7z31A8=
+sigs.k8s.io/lws v0.7.0/go.mod h1:WLg0CkyJTRQWMUOUam6qi9qRmcj3LAIWQUT81d4BGr4=
 sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
diff --git a/hack/e2e-kueueviz-local.sh b/hack/e2e-kueueviz-local.sh
index b26a30323..bce87a092 100755
--- a/hack/e2e-kueueviz-local.sh
+++ b/hack/e2e-kueueviz-local.sh
@@ -55,6 +55,19 @@ cd -
 
 cd "${ROOT_DIR}/test/e2e/kueueviz/"
 npm install
+
+if [ "$E2E_RUN_ONLY_ENV" = "true" ]; then
+  read -rp "Do you want to cleanup? [Y/n] " reply
+  if [[ "$reply" =~ ^[nN]$ ]]; then
+    trap - EXIT
+    echo "Skipping cleanup for backend, frontend, and kind cluster."
+    echo -e "\nBackend cleanup:\n  kill $BACKEND_PID"
+    echo -e "\nFrontend cleanup:\n  kill $FRONTEND_PID"
+    echo -e "\nKind cluster cleanup:\n  kind delete cluster --name $KIND_CLUSTER_NAME"
+  fi
+  exit 0
+fi
+
 # Run Cypress tests for kueueviz frontend
 npm run cypress:run
 cd -
diff --git a/hack/e2e-test.sh b/hack/e2e-test.sh
index 83dd8d7f4..b8e0b87ca 100755
--- a/hack/e2e-test.sh
+++ b/hack/e2e-test.sh
@@ -51,10 +51,16 @@ wait
 kind_load "$KIND_CLUSTER_NAME" ""
 kueue_deploy
 
-if [ "$E2E_RUN_ONLY_ENV" == 'true' ]; then
-  read -rp "Press Enter to cleanup."
-else
-  # shellcheck disable=SC2086
-  $GINKGO $GINKGO_ARGS --junit-report=junit.xml --json-report=e2e.json --output-dir="$ARTIFACTS" -v ./test/e2e/$E2E_TARGET_FOLDER/...
-  "$ROOT_DIR/bin/ginkgo-top" -i "$ARTIFACTS/e2e.json" > "$ARTIFACTS/e2e-top.yaml"
+if [ "$E2E_RUN_ONLY_ENV" = "true" ]; then
+  read -rp "Do you want to cleanup? [Y/n] " reply
+  if [[ "$reply" =~ ^[nN]$ ]]; then
+    trap - EXIT
+    echo "Skipping cleanup for kind cluster."
+    echo -e "\nKind cluster cleanup:\n  kind delete cluster --name $KIND_CLUSTER_NAME"
+  fi
+  exit 0
 fi
+
+# shellcheck disable=SC2086
+$GINKGO $GINKGO_ARGS --junit-report=junit.xml --json-report=e2e.json --output-dir="$ARTIFACTS" -v ./test/e2e/$E2E_TARGET_FOLDER/...
+"$ROOT_DIR/bin/ginkgo-top" -i "$ARTIFACTS/e2e.json" > "$ARTIFACTS/e2e-top.yaml"
diff --git a/hack/multikueue-e2e-test.sh b/hack/multikueue-e2e-test.sh
index 9fe4389d7..addd2efb9 100755
--- a/hack/multikueue-e2e-test.sh
+++ b/hack/multikueue-e2e-test.sh
@@ -93,10 +93,18 @@ wait # for libraries installation
 export KUBECONFIG="$MANAGER_KUBECONFIG:$WORKER1_KUBECONFIG:$WORKER2_KUBECONFIG"
 kueue_deploy
 
-if [ "$E2E_RUN_ONLY_ENV" == 'true' ]; then
-  read -rp "Press Enter to cleanup."
-else
-  # shellcheck disable=SC2086
-  $GINKGO $GINKGO_ARGS --junit-report=junit.xml --json-report=e2e.json --output-dir="$ARTIFACTS" -v ./test/e2e/multikueue/...
-  "$ROOT_DIR/bin/ginkgo-top" -i "$ARTIFACTS/e2e.json" > "$ARTIFACTS/e2e-top.yaml"
+if [ "$E2E_RUN_ONLY_ENV" = "true" ]; then
+  read -rp "Do you want to cleanup? [Y/n] " reply
+  if [[ "$reply" =~ ^[nN]$ ]]; then
+    trap - EXIT
+    echo "Skipping cleanup for kind clusters."
+    echo -e "\nManager kind cluster cleanup:\n  kind delete cluster --name $MANAGER_KIND_CLUSTER_NAME"
+    echo -e "\nWorker1 kind cluster cleanup:\n  kind delete cluster --name $WORKER1_KIND_CLUSTER_NAME"
+    echo -e "\nWorker2 kind cluster cleanup:\n  kind delete cluster --name $WORKER2_KIND_CLUSTER_NAME"
+  fi
+  exit 0
 fi
+
+# shellcheck disable=SC2086
+$GINKGO $GINKGO_ARGS --junit-report=junit.xml --json-report=e2e.json --output-dir="$ARTIFACTS" -v ./test/e2e/multikueue/...
+"$ROOT_DIR/bin/ginkgo-top" -i "$ARTIFACTS/e2e.json" > "$ARTIFACTS/e2e-top.yaml"
diff --git a/hack/releasing/prepare_pull.sh b/hack/releasing/prepare_pull.sh
index c608bdd76..1928d9a77 100755
--- a/hack/releasing/prepare_pull.sh
+++ b/hack/releasing/prepare_pull.sh
@@ -97,23 +97,27 @@ if ! git ls-remote --heads "$UPSTREAM_REMOTE" "${RELEASE_BRANCH}" | grep -q "${R
   exit 1
 fi
 
-RELEASE_ISSUE=$(gh issue list | grep "Release ${RELEASE_VERSION}" | awk '{print $1}' || true)
-if [ -z "$RELEASE_ISSUE" ]; then
+RELEASE_ISSUE_NAME="Release ${RELEASE_VERSION}"
+
+RELEASE_ISSUE_NUMBER=$(gh issue list --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}" | grep "${RELEASE_ISSUE_NAME}" | awk '{print $1}' || true)
+if [ -z "$RELEASE_ISSUE_NUMBER" ]; then
   echo "!!! No release issue found for version ${RELEASE_VERSION}. Please create 'Release ${RELEASE_VERSION}' issue first."
   exit 1
 fi
 
-RELEASE_ISSUE_BODY=$(gh issue view "${RELEASE_ISSUE}" -R kubernetes-sigs/kueue --json body || true)
-if [ -z "$RELEASE_ISSUE_BODY" ]; then
+RELEASE_ISSUE=$(gh issue view "${RELEASE_ISSUE_NUMBER}" --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}" --json body || true)
+if [ -z "$RELEASE_ISSUE" ]; then
   echo "!!! No release issue found for version ${RELEASE_VERSION}. Please create 'Release ${RELEASE_VERSION}' issue first."
   exit 1
 fi
 
+RELEASE_ISSUE_BODY=$(echo "${RELEASE_ISSUE}" | jq -r '.body')
+
 CHANGELOG_FILE="${REPO_ROOT}/CHANGELOG/CHANGELOG-${MAJOR_MINOR}.md"
 declare -r CHANGELOG_FILE
 
 # shellcheck disable=SC2016
-CHANGELOG=$(echo "${RELEASE_ISSUE_BODY}" | jq -r '.body' | sed -n '/^```markdown$/,/^```$/p' | sed '/^```markdown$/d;/^```$/d')
+CHANGELOG=$(echo "${RELEASE_ISSUE_BODY}" | sed -n '/^```markdown$/,/^```$/p' | sed '/^```markdown$/d;/^```$/d')
 if [ -z "$CHANGELOG" ]; then
   echo "!!! No changelog found. Please update issue and add changelog."
 fi
@@ -220,7 +224,7 @@ function make_pr() {
 $3.
 
 #### Which issue(s) this PR fixes:
-Part of \#${RELEASE_ISSUE}
+Part of #${RELEASE_ISSUE_NUMBER}
 
 #### Special notes for your reviewer:
 
@@ -270,6 +274,14 @@ declare -r PREPARE_RELEASE_PR_NAME
 prepare_local_branch "${RELEASE_BRANCH}" "${PREPARE_RELEASE_BRANCH_UNIQUE}" "${PREPARE_RELEASE_PR_NAME}"
 push_and_create_pr "${RELEASE_BRANCH}" "${PREPARE_RELEASE_BRANCH}" "${PREPARE_RELEASE_BRANCH_UNIQUE}" "${PREPARE_RELEASE_PR_NAME}"
 
+PREPARE_RELEASE_PR_NUMBER=$(gh pr list --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}" | grep "${PREPARE_RELEASE_PR_NAME}" | awk '{print $1}' || true)
+if [ -n "$PREPARE_RELEASE_PR_NUMBER" ]; then
+  NEW_RELEASE_ISSUE_BODY=${RELEASE_ISSUE_BODY//<!-- PREPARE_PULL -->/#${PREPARE_RELEASE_PR_NUMBER}}
+  gh issue edit "${RELEASE_ISSUE_NUMBER}" --body "${NEW_RELEASE_ISSUE_BODY}" --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}" || {
+    echo "!!! Failed to edit release issue \"${RELEASE_ISSUE_NAME}\": gh issue edit command failed."
+  }
+fi
+
 LATEST_RELEASE_VERSION=$(git tag -l | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -n 1)
 
 # Split into LATEST_MAJOR, LATEST_MINOR, LATEST_PATCH
diff --git a/hack/releasing/sync-notes.sh b/hack/releasing/sync-notes.sh
new file mode 100755
index 000000000..9a1ccb9ae
--- /dev/null
+++ b/hack/releasing/sync-notes.sh
@@ -0,0 +1,183 @@
+#!/usr/bin/env bash
+
+# Copyright 2025 The Kubernetes Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+REPO_ROOT="$(git rev-parse --show-toplevel)"
+declare -r REPO_ROOT
+cd "${REPO_ROOT}"
+
+UPSTREAM_REMOTE=${UPSTREAM_REMOTE:-upstream}
+MAIN_REPO_ORG=${MAIN_REPO_ORG:-$(git remote get-url "$UPSTREAM_REMOTE" | awk '{gsub(/http[s]:\/\/|git@/,"")}1' | awk -F'[@:./]' 'NR==1{print $3}')}
+MAIN_REPO_NAME=${MAIN_REPO_NAME:-$(git remote get-url "$UPSTREAM_REMOTE" | awk '{gsub(/http[s]:\/\/|git@/,"")}1' | awk -F'[@:./]' 'NR==1{print $4}')}
+
+if ! command -v gh > /dev/null; then
+  echo "Can't find 'gh' tool in PATH, please install from https://github.com/cli/cli"
+  exit 1
+fi
+
+if [[ "$#" -ne 1 ]]; then
+  echo "${0} <version>"
+  echo
+  echo "  Sync notes on the release issue"
+  echo
+  echo "  Example:"
+  echo "    $0 v0.13.2"
+  exit 2
+fi
+
+# Checks if you are logged in. Will error/bail if you are not.
+gh auth status
+
+declare -r RELEASE_VERSION="$1"
+
+if [[ ! "$RELEASE_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+  echo "!!! Invalid release version. It should be semantic version like v0.13.2"
+  exit 1
+fi
+
+# $1 - release version
+find_previous_version() {
+  local release_version="$1"
+  IFS='.' read -r major minor patch <<< "${release_version#v}"
+  for tag in $(git tag -l | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V -r); do
+    IFS='.' read -r t_major t_minor t_patch <<< "${tag#v}"
+    if [ "$t_major" -lt "$major" ] || \
+       { [ "$t_major" -eq "$major" ] && [ "$t_minor" -lt "$minor" ]; } || \
+       { [ "$t_major" -eq "$major" ] && [ "$t_minor" -eq "$minor" ] && [ "$t_patch" -lt "$patch" ]; }; then
+      echo "$tag"
+      return 0
+    fi
+  done
+}
+
+# $1 - release version (e.g. v0.13.1)
+function find_head_branch() {
+  local release_version="$1"
+  local head_branch="main"
+
+  IFS='.' read -r major minor patch <<< "${release_version#v}"
+
+  # Get the latest release version tag (sorted semver)
+  latest_release_version=$(git tag -l | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -n 1)
+  IFS='.' read -r latest_major latest_minor <<< "${latest_release_version#v}"
+
+  # Check if current major.minor is less than latest
+  if [[ "$major" -lt "$latest_major" ]] || { [[ "$major" -eq "$latest_major" ]] && [[ "$minor" -lt "$latest_minor" ]]; }; then
+    candidate_branch="release-${major}.${minor}"
+
+    # Use release branch if it exists
+    if git ls-remote --heads "$UPSTREAM_REMOTE" "$candidate_branch" | grep -q "$candidate_branch"; then
+      head_branch="$candidate_branch"
+    fi
+  fi
+
+  echo "$head_branch"
+}
+
+HEAD_BRANCH=$(find_head_branch "$RELEASE_VERSION")
+declare HEAD_BRANCH
+
+PREVIOUS_VERSION=$(find_previous_version "$RELEASE_VERSION")
+declare PREVIOUS_VERSION
+
+START_SHA=$(git rev-parse "${PREVIOUS_VERSION}^{commit}" 2>/dev/null)
+declare START_SHA
+
+END_SHA=$(git rev-parse "${UPSTREAM_REMOTE}/${HEAD_BRANCH}" 2>/dev/null)
+declare END_SHA
+
+CHANGELOG_FILE=$(mktemp)
+declare CHANGELOG_FILE
+
+echo "+++ Running release-notes:"
+echo
+echo "release-notes --org \"${MAIN_REPO_ORG}\" \\"
+echo "              --repo \"${MAIN_REPO_NAME}\" \\"
+echo "              --branch \"${HEAD_BRANCH}\" \\"
+echo "              --start-sha \"${START_SHA}\" \\"
+echo "              --end-sha \"${END_SHA}\" \\"
+echo "              --dependencies=false \\"
+echo "              --required-author=\"\" "
+echo "              --output=\"${CHANGELOG_FILE}\" "
+
+GITHUB_TOKEN=${GITHUB_TOKEN:-$(gh auth status --show-token | awk '/Token:/ {print $3}')}
+declare GITHUB_TOKEN
+
+GITHUB_TOKEN=${GITHUB_TOKEN} release-notes --org "${MAIN_REPO_ORG}" \
+              --repo "${MAIN_REPO_NAME}" \
+              --branch "${HEAD_BRANCH}" \
+              --start-sha "${START_SHA}" \
+              --end-sha "${END_SHA}" \
+              --dependencies=false \
+              --required-author="" \
+              --output="${CHANGELOG_FILE}"
+
+cat "$CHANGELOG_FILE"
+
+echo
+echo
+read -p "+++ Do you want to update release issue? [y/N] " -r
+if ! [[ "${REPLY}" =~ ^[yY]$ ]]; then
+  echo "Aborting." >&2
+  exit 1
+fi
+
+RELEASE_ISSUE_NAME="Release ${RELEASE_VERSION}"
+declare RELEASE_ISSUE_NAME
+
+RELEASE_ISSUE_NUMBER=$(gh issue list --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}" | grep "${RELEASE_ISSUE_NAME}" | awk '{print $1}' || true)
+if [ -z "$RELEASE_ISSUE_NUMBER" ]; then
+  echo "!!! No release issue found for version ${RELEASE_VERSION}. Please create 'Release ${RELEASE_VERSION}' issue first."
+  exit 1
+fi
+
+RELEASE_ISSUE=$(gh issue view "${RELEASE_ISSUE_NUMBER}" --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}" --json body || true)
+if [ -z "$RELEASE_ISSUE" ]; then
+  echo "!!! No release issue found for version ${RELEASE_VERSION}. Please create 'Release ${RELEASE_VERSION}' issue first."
+  exit 1
+fi
+
+RELEASE_ISSUE_BODY=$(echo "${RELEASE_ISSUE}" | jq -r '.body')
+
+NEW_RELEASE_ISSUE_BODY=$(awk -v previous_version="$PREVIOUS_VERSION" -v changelog_file="$CHANGELOG_FILE" '
+  BEGIN {
+    in_block=0
+    while ((getline line < changelog_file) > 0) {
+      changelog_lines = changelog_lines line "\n"
+    }
+    close(changelog_file)
+  }
+  /^```markdown$/ {
+    print $0
+    printf "Changes since `%s`:\n\n", previous_version
+    print changelog_lines
+    in_block=1
+    next
+  }
+  /^```$/ && in_block {
+    print $0
+    in_block=0
+    next
+  }
+  !in_block {
+    print $0
+  }
+' <<< "$RELEASE_ISSUE_BODY")
+
+gh issue edit "${RELEASE_ISSUE_NUMBER}" --body "${NEW_RELEASE_ISSUE_BODY}" --repo="${MAIN_REPO_ORG}/${MAIN_REPO_NAME}"
\ No newline at end of file
diff --git a/hack/releasing/wait_for_images.sh b/hack/releasing/wait_for_images.sh
new file mode 100755
index 000000000..3912bc799
--- /dev/null
+++ b/hack/releasing/wait_for_images.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+# Copyright 2025 The Kubernetes Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+if [[ "$#" -ne 1 ]]; then
+  echo "${0} <version>"
+  echo
+  echo "  Wait for images"
+  echo
+  echo "  Example:"
+  echo "    $0 v0.13.2"
+  echo
+  exit 2
+fi
+
+declare -r RELEASE_VERSION="$1"
+
+if [[ ! "$RELEASE_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+  echo "!!! Invalid release version. It should be semantic version like v0.13.2"
+  exit 1
+fi
+
+declare -r STAGING_IMAGE_REGISTRY="us-central1-docker.pkg.dev/k8s-staging-images/kueue"
+
+# $1 - image name
+# $2 - version
+function check_image() {
+  local image_name="$1"
+  local version="$2"
+  local full_image_name="${STAGING_IMAGE_REGISTRY}/${image_name}:${version}"
+  echo "Checking if \"${full_image_name}\" is available."
+  local image_details
+  image_details=$(gcloud container images describe "${full_image_name}" --verbosity error --format json || true)
+  if [ -n "$image_details" ]; then
+    image_name_with_digest=$(echo "$image_details" | jq -r '.image_summary.fully_qualified_digest')
+    echo " ✅ Image \"${image_name_with_digest}\" is available."
+    return 0
+  else
+    echo " 🚫 Image \"${full_image_name}\" is not found."
+    return 1
+  fi
+}
+
+function check_images() {
+  local images=(
+      kueue
+      kueueviz-backend
+      kueueviz-frontend
+  )
+
+  for image in "${images[@]}"; do
+    if ! check_image "${image}" "${RELEASE_VERSION}"; then
+      return 1
+    fi
+  done
+
+  # The charts/kueue image is require tag without `v` prefix.
+  if ! check_image "charts/kueue" "${RELEASE_VERSION#v}"; then
+    return 1
+  fi
+}
+
+while true; do
+  if check_images; then
+    break
+  fi
+  echo "Try again in 5 seconds..."
+  sleep 5
+done
diff --git a/keps/1136-provisioning-request-support/README.md b/keps/1136-provisioning-request-support/README.md
index a68253daa..9c762bff7 100644
--- a/keps/1136-provisioning-request-support/README.md
+++ b/keps/1136-provisioning-request-support/README.md
@@ -325,11 +325,14 @@ The following scenarios should be tested:
 
 ### Graduation Criteria
 
-User feedback is positive.
+* `ProvisioningRequest` is using V1 APIs
+* `ProvisioningRequest` deprecated annotations are dropped by code.
+* `ProvisioningRequest` is beta without known issues.
 
 ## Implementation History
 
 2023-09-21: KEP
+2025-08-07: Promoted to GA.
 
 ## Alternatives
 
diff --git a/keps/1136-provisioning-request-support/kep.yaml b/keps/1136-provisioning-request-support/kep.yaml
index c37a217c3..f1f81b71f 100644
--- a/keps/1136-provisioning-request-support/kep.yaml
+++ b/keps/1136-provisioning-request-support/kep.yaml
@@ -3,25 +3,28 @@ kep-number: 1136
 authors:
   - "@mwielgus"
   - "@pbundyra"
-status: draft
+status: implemented
 creation-date: 2023-09-20
 reviewers:
   - "@kerthcet"
   - "@alculquicondor"
+  - "@PBundyra"
 approvers:
   - "@alculquicondor"
+  - "@mimowo"
 
 # The target maturity stage in the current dev cycle for this KEP.
-stage: beta
+stage: stable
 
 # The most recent milestone for which work toward delivery of this KEP has been
 # done. This can be the current (upcoming) milestone, if it is being actively
 # worked on.
-latest-milestone: "v0.5"
+latest-milestone: "v0.14"
 
 # The milestone at which this feature was, or is targeted to be, at each stage.
 milestone:
   beta: "v0.5"
+  stable: "v0.14"
 
 feature-gates:
   - KeepQuotaForProvReqRetry
diff --git a/pkg/cache/tas_flavor_snapshot.go b/pkg/cache/tas_flavor_snapshot.go
index 9c58c5afb..4373b3c48 100644
--- a/pkg/cache/tas_flavor_snapshot.go
+++ b/pkg/cache/tas_flavor_snapshot.go
@@ -1126,14 +1126,18 @@ func (s *TASFlavorSnapshot) updateCountsToMinimum(domains []*domain, count int32
 // buildTopologyAssignmentForLevels build TopologyAssignment for levels starting from levelIdx
 func (s *TASFlavorSnapshot) buildTopologyAssignmentForLevels(domains []*domain, levelIdx int) *kueue.TopologyAssignment {
 	assignment := &kueue.TopologyAssignment{
-		Domains: make([]kueue.TopologyDomainAssignment, len(domains)),
+		Domains: make([]kueue.TopologyDomainAssignment, 0),
 	}
 	assignment.Levels = s.levelKeys[levelIdx:]
-	for i, domain := range domains {
-		assignment.Domains[i] = kueue.TopologyDomainAssignment{
+	for _, domain := range domains {
+		if domain.state == 0 {
+			// It may happen when PodSet count is 0.
+			continue
+		}
+		assignment.Domains = append(assignment.Domains, kueue.TopologyDomainAssignment{
 			Values: domain.levelValues[levelIdx:],
 			Count:  domain.state,
-		}
+		})
 	}
 	return assignment
 }
diff --git a/pkg/controller/core/indexer/indexer.go b/pkg/controller/core/indexer/indexer.go
index 883fad67b..2c15b57d3 100644
--- a/pkg/controller/core/indexer/indexer.go
+++ b/pkg/controller/core/indexer/indexer.go
@@ -28,6 +28,7 @@ import (
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
 	kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1"
+	"sigs.k8s.io/kueue/pkg/features"
 	"sigs.k8s.io/kueue/pkg/util/slices"
 )
 
@@ -188,5 +189,12 @@ func Setup(ctx context.Context, indexer client.FieldIndexer) error {
 	if err := indexer.IndexField(ctx, &kueue.Workload{}, OwnerReferenceUID, IndexOwnerUID); err != nil {
 		return fmt.Errorf("setting index on ownerReferences.uid for Workload: %w", err)
 	}
+	// Add pod index to be able to list pods for elastic-jobs, needed to remove scheduling gate on
+	// admitted workload slices.
+	if features.Enabled(features.ElasticJobsViaWorkloadSlices) {
+		if err := indexer.IndexField(ctx, &corev1.Pod{}, OwnerReferenceUID, IndexOwnerUID); err != nil {
+			return err
+		}
+	}
 	return nil
 }
diff --git a/pkg/controller/core/workload_controller.go b/pkg/controller/core/workload_controller.go
index ed7338873..b8bc0afcc 100644
--- a/pkg/controller/core/workload_controller.go
+++ b/pkg/controller/core/workload_controller.go
@@ -241,7 +241,6 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
 				reason = fmt.Sprintf("%sDueTo%s", reason, dtCond.Reason)
 				message = fmt.Sprintf("%s due to %s", message, dtCond.Message)
 			}
-			workload.SetEvictedCondition(&wl, reason, message)
 			updated = true
 			evicted = true
 		}
@@ -252,22 +251,18 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
 			wl.Status.RequeueState = nil
 			updated = true
 		}
-
-		// exception due to complicated logic, not using PrepareForEviction (temporarily)
-		workload.ResetClusterNomination(&wl)
-		updated = workload.ResetChecksOnEviction(&wl, r.clock.Now()) || updated
-		reportWorkloadEvictedOnce := workload.WorkloadEvictionStateInc(&wl, reason, "")
 		if updated {
-			if err := workload.ApplyAdmissionStatus(ctx, r.client, &wl, true, r.clock); err != nil {
-				if apierrors.IsNotFound(err) {
-					return ctrl.Result{}, nil
+			if evicted {
+				if err := workload.Evict(ctx, r.client, r.recorder, &wl, reason, "", message, r.clock); err != nil {
+					if !apierrors.IsNotFound(err) {
+						return ctrl.Result{}, fmt.Errorf("setting eviction: %w", err)
+					}
 				}
-				return ctrl.Result{}, fmt.Errorf("setting eviction: %w", err)
-			}
-			if evicted && wl.Status.Admission != nil {
-				workload.ReportEvictedWorkload(r.recorder, &wl, wl.Status.Admission.ClusterQueue, reason, message)
-				if reportWorkloadEvictedOnce {
-					metrics.ReportEvictedWorkloadsOnce(wl.Status.Admission.ClusterQueue, reason, "")
+			} else {
+				if err := workload.ApplyAdmissionStatus(ctx, r.client, &wl, true, r.clock); err != nil {
+					if !apierrors.IsNotFound(err) {
+						return ctrl.Result{}, fmt.Errorf("updating workload: %w", err)
+					}
 				}
 			}
 			return ctrl.Result{}, nil
@@ -448,16 +443,9 @@ func (r *WorkloadReconciler) reconcileCheckBasedEviction(ctx context.Context, wl
 	}
 	// at this point we know a Workload has at least one Retry AdmissionCheck
 	message := "At least one admission check is false"
-	workload.PrepareForEviction(wl, r.clock.Now(), kueue.WorkloadEvictedByAdmissionCheck, message)
-	reportWorkloadEvictedOnce := workload.WorkloadEvictionStateInc(wl, kueue.WorkloadEvictedByAdmissionCheck, "")
-	if err := workload.ApplyAdmissionStatus(ctx, r.client, wl, true, r.clock); err != nil {
+	if err := workload.Evict(ctx, r.client, r.recorder, wl, kueue.WorkloadEvictedByAdmissionCheck, "", message, r.clock); err != nil {
 		return false, err
 	}
-	cqName, _ := r.queues.ClusterQueueForWorkload(wl)
-	workload.ReportEvictedWorkload(r.recorder, wl, cqName, kueue.WorkloadEvictedByAdmissionCheck, message)
-	if reportWorkloadEvictedOnce {
-		metrics.ReportEvictedWorkloadsOnce(wl.Status.Admission.ClusterQueue, kueue.WorkloadEvictedByAdmissionCheck, "")
-	}
 	return true, nil
 }
 
@@ -488,18 +476,7 @@ func (r *WorkloadReconciler) reconcileOnLocalQueueActiveState(ctx context.Contex
 			return false, nil
 		}
 		log.V(3).Info("Workload is evicted because the LocalQueue is stopped", "localQueue", klog.KRef(wl.Namespace, string(wl.Spec.QueueName)))
-		workload.PrepareForEviction(wl, r.clock.Now(), kueue.WorkloadEvictedByLocalQueueStopped, "The LocalQueue is stopped")
-		reportWorkloadEvictedOnce := workload.WorkloadEvictionStateInc(wl, kueue.WorkloadEvictedByLocalQueueStopped, "")
-		err := workload.ApplyAdmissionStatus(ctx, r.client, wl, true, r.clock)
-		if err == nil {
-			cqName := lq.Spec.ClusterQueue
-			if slices.Contains(r.queues.GetClusterQueueNames(), cqName) {
-				workload.ReportEvictedWorkload(r.recorder, wl, cqName, kueue.WorkloadEvictedByLocalQueueStopped, "The LocalQueue is stopped")
-			}
-			if reportWorkloadEvictedOnce {
-				metrics.ReportEvictedWorkloadsOnce(cqName, kueue.WorkloadEvictedByLocalQueueStopped, "")
-			}
-		}
+		err := workload.Evict(ctx, r.client, r.recorder, wl, kueue.WorkloadEvictedByLocalQueueStopped, "", "The LocalQueue is stopped", r.clock)
 		return true, err
 	}
 
@@ -539,15 +516,7 @@ func (r *WorkloadReconciler) reconcileOnClusterQueueActiveState(ctx context.Cont
 		}
 		log.V(3).Info("Workload is evicted because the ClusterQueue is stopped", "clusterQueue", klog.KRef("", string(cqName)))
 		message := "The ClusterQueue is stopped"
-		workload.PrepareForEviction(wl, r.clock.Now(), kueue.WorkloadEvictedByClusterQueueStopped, message)
-		reportWorkloadEvictedOnce := workload.WorkloadEvictionStateInc(wl, kueue.WorkloadEvictedByClusterQueueStopped, "")
-		err := workload.ApplyAdmissionStatus(ctx, r.client, wl, true, r.clock)
-		if err == nil {
-			workload.ReportEvictedWorkload(r.recorder, wl, cqName, kueue.WorkloadEvictedByClusterQueueStopped, message)
-			if reportWorkloadEvictedOnce {
-				metrics.ReportEvictedWorkloadsOnce(wl.Status.Admission.ClusterQueue, kueue.WorkloadEvictedByClusterQueueStopped, "")
-			}
-		}
+		err := workload.Evict(ctx, r.client, r.recorder, wl, kueue.WorkloadEvictedByClusterQueueStopped, "", message, r.clock)
 		return true, err
 	}
 
@@ -622,16 +591,7 @@ func (r *WorkloadReconciler) reconcileNotReadyTimeout(ctx context.Context, req c
 		return 0, err
 	}
 	message := fmt.Sprintf("Exceeded the PodsReady timeout %s", req.String())
-	workload.PrepareForEviction(wl, r.clock.Now(), kueue.WorkloadEvictedByPodsReadyTimeout, message)
-	reportWorkloadEvictedOnce := workload.WorkloadEvictionStateInc(wl, kueue.WorkloadEvictedByPodsReadyTimeout, underlyingCause)
-	err := workload.ApplyAdmissionStatus(ctx, r.client, wl, true, r.clock)
-	if err == nil {
-		cqName, _ := r.queues.ClusterQueueForWorkload(wl)
-		workload.ReportEvictedWorkload(r.recorder, wl, cqName, kueue.WorkloadEvictedByPodsReadyTimeout, message)
-		if reportWorkloadEvictedOnce {
-			metrics.ReportEvictedWorkloadsOnce(cqName, kueue.WorkloadEvictedByPodsReadyTimeout, underlyingCause)
-		}
-	}
+	err := workload.Evict(ctx, r.client, r.recorder, wl, kueue.WorkloadEvictedByPodsReadyTimeout, underlyingCause, message, r.clock)
 	return 0, err
 }
 
diff --git a/pkg/controller/jobs/job/job_controller.go b/pkg/controller/jobs/job/job_controller.go
index e44067b37..c8cc26495 100644
--- a/pkg/controller/jobs/job/job_controller.go
+++ b/pkg/controller/jobs/job/job_controller.go
@@ -370,14 +370,6 @@ func SetupIndexes(ctx context.Context, fieldIndexer client.FieldIndexer) error {
 	if err := fieldIndexer.IndexField(ctx, &batchv1.Job{}, indexer.OwnerReferenceUID, indexer.IndexOwnerUID); err != nil {
 		return err
 	}
-	// Add pod index to be able to list pods for elastic-jobs, needed to remove scheduling gate on
-	// admitted workload slices.
-	if features.Enabled(features.ElasticJobsViaWorkloadSlices) {
-		if err := fieldIndexer.IndexField(ctx, &corev1.Pod{}, indexer.OwnerReferenceUID, indexer.IndexOwnerUID); err != nil {
-			return err
-		}
-	}
-
 	return jobframework.SetupWorkloadOwnerIndex(ctx, fieldIndexer, gvk)
 }
 
diff --git a/pkg/controller/jobs/pod/pod_webhook.go b/pkg/controller/jobs/pod/pod_webhook.go
index 650e25dfb..9e5f4b005 100644
--- a/pkg/controller/jobs/pod/pod_webhook.go
+++ b/pkg/controller/jobs/pod/pod_webhook.go
@@ -200,11 +200,8 @@ func (w *PodWebhook) Default(ctx context.Context, obj runtime.Object) error {
 			}
 			utilpod.Gate(&pod.pod, kueuealpha.TopologySchedulingGate)
 		}
-
-		if podGroupName(pod.pod) != "" {
-			if err := pod.addRoleHash(); err != nil {
-				return err
-			}
+		if err := pod.addRoleHash(); err != nil {
+			return err
 		}
 		// copy back changes to the object
 		pod.pod.DeepCopyInto(obj.(*corev1.Pod))
diff --git a/pkg/controller/tas/node_failure_controller.go b/pkg/controller/tas/node_failure_controller.go
index fbbcfb61e..5f95d88c3 100644
--- a/pkg/controller/tas/node_failure_controller.go
+++ b/pkg/controller/tas/node_failure_controller.go
@@ -225,7 +225,7 @@ func (r *nodeFailureReconciler) evictWorkload(ctx context.Context, log logr.Logg
 		log = log.WithValues("failedNode", failedNode)
 		log.V(3).Info("Evicting workload due to multiple node failures")
 		evictionMsg := fmt.Sprintf(nodeMultipleFailuresEvictionMessageFormat, failedNode, nodeName)
-		if evictionErr := r.startEviction(ctx, wl, evictionMsg); evictionErr != nil {
+		if evictionErr := workload.Evict(ctx, r.client, r.recorder, wl, kueue.WorkloadEvictedDueToNodeFailures, "", evictionMsg, r.clock); evictionErr != nil {
 			log.V(2).Error(evictionErr, "Failed to complete eviction process")
 			return false, evictionErr
 		} else {
@@ -299,10 +299,6 @@ func (r *nodeFailureReconciler) patchWorkloadsForNodeToReplace(ctx context.Conte
 	return nil
 }
 
-func (r *nodeFailureReconciler) startEviction(ctx context.Context, wl *kueue.Workload, evictionMessage string) error {
-	return workload.EvictWorkload(ctx, r.client, r.recorder, wl, kueue.WorkloadEvictedDueToNodeFailures, evictionMessage, r.clock)
-}
-
 func (r *nodeFailureReconciler) reconcileForReplaceNodeOnPodTermination(ctx context.Context, nodeName string) (ctrl.Result, error) {
 	workloads, err := r.getWorkloadsForImmediateReplacement(ctx, nodeName)
 	switch {
diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go
index da25573d6..99e3db500 100644
--- a/pkg/features/kube_features.go
+++ b/pkg/features/kube_features.go
@@ -213,6 +213,7 @@ var defaultVersionedFeatureGates = map[featuregate.Feature]featuregate.Versioned
 	},
 	ProvisioningACC: {
 		{Version: version.MustParse("0.5"), Default: true, PreRelease: featuregate.Beta},
+		{Version: version.MustParse("0.14"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 0.15
 	},
 	VisibilityOnDemand: {
 		{Version: version.MustParse("0.6"), Default: false, PreRelease: featuregate.Alpha},
diff --git a/pkg/resources/requests.go b/pkg/resources/requests.go
index e34fb46b2..3762ef07e 100644
--- a/pkg/resources/requests.go
+++ b/pkg/resources/requests.go
@@ -58,6 +58,12 @@ func (r Requests) ScaledDown(f int64) Requests {
 
 func (r Requests) Divide(f int64) {
 	for k := range r {
+		if r[k] == 0 && f == 0 {
+			// Skip dividing by 0 when resources are 0.
+			// This may happen when the function is used to scale down the
+			// resources computed initially for all (0) Pods, and thus r[k] = 0.
+			continue
+		}
 		r[k] /= f
 	}
 }
diff --git a/pkg/scheduler/preemption/preemption.go b/pkg/scheduler/preemption/preemption.go
index 1b0b4a42f..b7f9d1fef 100644
--- a/pkg/scheduler/preemption/preemption.go
+++ b/pkg/scheduler/preemption/preemption.go
@@ -40,7 +40,6 @@ import (
 	"sigs.k8s.io/kueue/pkg/cache"
 	"sigs.k8s.io/kueue/pkg/controller/constants"
 	"sigs.k8s.io/kueue/pkg/features"
-	"sigs.k8s.io/kueue/pkg/metrics"
 	"sigs.k8s.io/kueue/pkg/resources"
 	"sigs.k8s.io/kueue/pkg/scheduler/flavorassigner"
 	"sigs.k8s.io/kueue/pkg/scheduler/preemption/classical"
@@ -185,17 +184,8 @@ func (p *Preemptor) IssuePreemptions(ctx context.Context, preemptor *workload.In
 
 func (p *Preemptor) applyPreemptionWithSSA(ctx context.Context, w *kueue.Workload, reason, message string) error {
 	w = w.DeepCopy()
-	workload.PrepareForEviction(w, p.clock.Now(), kueue.WorkloadEvictedByPreemption, message)
-	reportWorkloadEvictedOnce := workload.WorkloadEvictionStateInc(w, kueue.WorkloadEvictedByPreemption, "")
 	workload.SetPreemptedCondition(w, reason, message)
-	err := workload.ApplyAdmissionStatus(ctx, p.client, w, true, p.clock)
-	if err == nil {
-		workload.ReportEvictedWorkload(p.recorder, w, w.Status.Admission.ClusterQueue, kueue.WorkloadEvictedByPreemption, message)
-		if reportWorkloadEvictedOnce {
-			metrics.ReportEvictedWorkloadsOnce(w.Status.Admission.ClusterQueue, kueue.WorkloadEvictedByPreemption, "")
-		}
-	}
-	return err
+	return workload.Evict(ctx, p.client, p.recorder, w, kueue.WorkloadEvictedByPreemption, "", message, p.clock)
 }
 
 type preemptionAttemptOpts struct {
diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go
index 51e3a5dae..4aab6fa5c 100644
--- a/pkg/scheduler/scheduler.go
+++ b/pkg/scheduler/scheduler.go
@@ -566,7 +566,7 @@ func (s *Scheduler) getInitialAssignments(log logr.Logger, wl *workload.Info, sn
 func (s *Scheduler) evictWorkloadAfterFailedTASReplacement(ctx context.Context, log logr.Logger, wl *kueue.Workload) error {
 	log.V(3).Info("Evicting workload after failed try to find a node replacement; TASFailedNodeReplacementFailFast enabled")
 	msg := fmt.Sprintf("Workload was evicted as there was no replacement for a failed node: %s", workload.NodeToReplace(wl))
-	if err := workload.EvictWorkload(ctx, s.client, s.recorder, wl, kueue.WorkloadEvictedDueToNodeFailures, msg, s.clock); err != nil {
+	if err := workload.Evict(ctx, s.client, s.recorder, wl, kueue.WorkloadEvictedDueToNodeFailures, "", msg, s.clock); err != nil {
 		return err
 	}
 	if err := workload.RemoveAnnotation(ctx, s.client, wl, kueuealpha.NodeToReplaceAnnotation); err != nil {
diff --git a/pkg/workload/admissionchecks.go b/pkg/workload/admissionchecks.go
index 2d4e21e0f..9e65dd087 100644
--- a/pkg/workload/admissionchecks.go
+++ b/pkg/workload/admissionchecks.go
@@ -92,10 +92,9 @@ func FindAdmissionCheck(checks []kueue.AdmissionCheckState, checkName kueue.Admi
 	return nil
 }
 
-// ResetChecksOnEviction sets all AdmissionChecks to Pending
-func ResetChecksOnEviction(w *kueue.Workload, now time.Time) bool {
+// resetChecksOnEviction sets all AdmissionChecks to Pending
+func resetChecksOnEviction(w *kueue.Workload, now time.Time) {
 	checks := w.Status.AdmissionChecks
-	updated := false
 	for i := range checks {
 		if checks[i].State == kueue.CheckStatePending {
 			continue
@@ -106,9 +105,7 @@ func ResetChecksOnEviction(w *kueue.Workload, now time.Time) bool {
 			LastTransitionTime: metav1.NewTime(now),
 			Message:            "Reset to Pending after eviction. Previously: " + string(checks[i].State),
 		}
-		updated = true
 	}
-	return updated
 }
 
 // SetAdmissionCheckState - adds or updates newCheck in the provided checks list.
diff --git a/pkg/workload/workload.go b/pkg/workload/workload.go
index 86a6ada7a..646747c29 100644
--- a/pkg/workload/workload.go
+++ b/pkg/workload/workload.go
@@ -39,6 +39,7 @@ import (
 	"k8s.io/utils/ptr"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
+	"sigs.k8s.io/controller-runtime/pkg/log"
 
 	config "sigs.k8s.io/kueue/apis/config/v1beta1"
 	kueuealpha "sigs.k8s.io/kueue/apis/kueue/v1alpha1"
@@ -826,7 +827,7 @@ func admissionStatusPatch(w *kueue.Workload, wlCopy *kueue.Workload) {
 	wlCopy.Status.NominatedClusterNames = w.Status.NominatedClusterNames
 }
 
-func AdmissionChecksStatusPatch(w *kueue.Workload, wlCopy *kueue.Workload, c clock.Clock) {
+func admissionChecksStatusPatch(w *kueue.Workload, wlCopy *kueue.Workload, c clock.Clock) {
 	if wlCopy.Status.AdmissionChecks == nil && w.Status.AdmissionChecks != nil {
 		wlCopy.Status.AdmissionChecks = make([]kueue.AdmissionCheckState, 0)
 	}
@@ -846,7 +847,7 @@ func ApplyAdmissionStatus(ctx context.Context, c client.Client, w *kueue.Workloa
 func PrepareWorkloadPatch(w *kueue.Workload, strict bool, clk clock.Clock) *kueue.Workload {
 	wlCopy := BaseSSAWorkload(w, strict)
 	admissionStatusPatch(w, wlCopy)
-	AdmissionChecksStatusPatch(w, wlCopy, clk)
+	admissionChecksStatusPatch(w, wlCopy, clk)
 	return wlCopy
 }
 
@@ -1079,31 +1080,39 @@ func AdmissionChecksForWorkload(log logr.Logger, wl *kueue.Workload, admissionCh
 	return acNames
 }
 
-func EvictWorkload(ctx context.Context, c client.Client, recorder record.EventRecorder, wl *kueue.Workload, reason, msg string, clock clock.Clock) error {
-	PrepareForEviction(wl, clock.Now(), reason, msg)
+func Evict(ctx context.Context, c client.Client, recorder record.EventRecorder, wl *kueue.Workload, reason, underlyingCause, msg string, clock clock.Clock) error {
+	prepareForEviction(wl, clock.Now(), reason, msg)
+	reportWorkloadEvictedOnce := workloadEvictionStateInc(wl, reason, underlyingCause)
 	if err := ApplyAdmissionStatus(ctx, c, wl, true, clock); err != nil {
 		return err
 	}
-	reportWorkloadEvictedOnce := WorkloadEvictionStateInc(wl, reason, "")
-	ReportEvictedWorkload(recorder, wl, wl.Status.Admission.ClusterQueue, reason, msg)
+	if wl.Status.Admission == nil {
+		// This is an extra safeguard for access to `wl.Status.Admission`.
+		// This function is expected to be called only for workload which have
+		// Admission.
+		log := log.FromContext(ctx)
+		log.V(3).Info("WARNING: unexpected eviction of workload without status.Admission", "workload", klog.KObj(wl))
+		return nil
+	}
+	reportEvictedWorkload(recorder, wl, wl.Status.Admission.ClusterQueue, reason, msg)
 	if reportWorkloadEvictedOnce {
-		metrics.ReportEvictedWorkloadsOnce(wl.Status.Admission.ClusterQueue, reason, "")
+		metrics.ReportEvictedWorkloadsOnce(wl.Status.Admission.ClusterQueue, reason, underlyingCause)
 	}
 	return nil
 }
 
-func PrepareForEviction(w *kueue.Workload, now time.Time, reason, message string) bool {
+func prepareForEviction(w *kueue.Workload, now time.Time, reason, message string) {
 	SetEvictedCondition(w, reason, message)
-	ResetClusterNomination(w)
-	return ResetChecksOnEviction(w, now)
+	resetClusterNomination(w)
+	resetChecksOnEviction(w, now)
 }
 
-func ResetClusterNomination(w *kueue.Workload) {
+func resetClusterNomination(w *kueue.Workload) {
 	w.Status.ClusterName = nil
 	w.Status.NominatedClusterNames = nil
 }
 
-func ReportEvictedWorkload(recorder record.EventRecorder, wl *kueue.Workload, cqName kueue.ClusterQueueReference, reason, message string) {
+func reportEvictedWorkload(recorder record.EventRecorder, wl *kueue.Workload, cqName kueue.ClusterQueueReference, reason, message string) {
 	metrics.ReportEvictedWorkloads(cqName, reason)
 	if podsReadyToEvictionTime := workloadsWithPodsReadyToEvictedTime(wl); podsReadyToEvictionTime != nil {
 		metrics.PodsReadyToEvictedTimeSeconds.WithLabelValues(string(cqName), reason).Observe(podsReadyToEvictionTime.Seconds())
@@ -1129,8 +1138,8 @@ func References(wls []*Info) []klog.ObjectRef {
 	return keys
 }
 
-func WorkloadEvictionStateInc(wl *kueue.Workload, reason, underlyingCause string) bool {
-	evictionState := FindSchedulingStatsEvictionByReason(wl, reason, underlyingCause)
+func workloadEvictionStateInc(wl *kueue.Workload, reason, underlyingCause string) bool {
+	evictionState := findSchedulingStatsEvictionByReason(wl, reason, underlyingCause)
 	if evictionState == nil {
 		evictionState = &kueue.WorkloadSchedulingStatsEviction{
 			Reason:          reason,
@@ -1139,11 +1148,11 @@ func WorkloadEvictionStateInc(wl *kueue.Workload, reason, underlyingCause string
 	}
 	report := evictionState.Count == 0
 	evictionState.Count++
-	SetSchedulingStatsEviction(wl, *evictionState)
+	setSchedulingStatsEviction(wl, *evictionState)
 	return report
 }
 
-func FindSchedulingStatsEvictionByReason(wl *kueue.Workload, reason, underlyingCause string) *kueue.WorkloadSchedulingStatsEviction {
+func findSchedulingStatsEvictionByReason(wl *kueue.Workload, reason, underlyingCause string) *kueue.WorkloadSchedulingStatsEviction {
 	if wl.Status.SchedulingStats != nil {
 		for i := range wl.Status.SchedulingStats.Evictions {
 			if wl.Status.SchedulingStats.Evictions[i].Reason == reason && wl.Status.SchedulingStats.Evictions[i].UnderlyingCause == underlyingCause {
@@ -1154,11 +1163,11 @@ func FindSchedulingStatsEvictionByReason(wl *kueue.Workload, reason, underlyingC
 	return nil
 }
 
-func SetSchedulingStatsEviction(wl *kueue.Workload, newEvictionState kueue.WorkloadSchedulingStatsEviction) bool {
+func setSchedulingStatsEviction(wl *kueue.Workload, newEvictionState kueue.WorkloadSchedulingStatsEviction) bool {
 	if wl.Status.SchedulingStats == nil {
 		wl.Status.SchedulingStats = &kueue.SchedulingStats{}
 	}
-	evictionState := FindSchedulingStatsEvictionByReason(wl, newEvictionState.Reason, newEvictionState.UnderlyingCause)
+	evictionState := findSchedulingStatsEvictionByReason(wl, newEvictionState.Reason, newEvictionState.UnderlyingCause)
 	if evictionState == nil {
 		wl.Status.SchedulingStats.Evictions = append(wl.Status.SchedulingStats.Evictions, newEvictionState)
 		return true
diff --git a/site/content/en/docs/admission-check-controllers/provisioning.md b/site/content/en/docs/admission-check-controllers/provisioning.md
index a5aa214d7..5b41ad35a 100644
--- a/site/content/en/docs/admission-check-controllers/provisioning.md
+++ b/site/content/en/docs/admission-check-controllers/provisioning.md
@@ -8,7 +8,7 @@ description: >
 
 The Provisioning AdmissionCheck Controller is an AdmissionCheck Controller designed to integrate Kueue with [Kubernetes cluster-autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler). Its primary function is to create [ProvisioningRequests](https://github.com/kubernetes/autoscaler/blob/4872bddce2bcc5b4a5f6a3d569111c11b8a2baf4/cluster-autoscaler/provisioningrequest/apis/autoscaling.x-k8s.io/v1beta1/types.go#L41) for the workloads holding [Quota Reservation](/docs/concepts/#quota-reservation) and keeping the [AdmissionCheckState](/docs/concepts/admission_check/#admissioncheckstate) in sync.
 
-The controller is part of Kueue. It is enabled by default. You can disable it by editing the `ProvisioningACC` feature gate. Check the [Installation](/docs/installation/#change-the-feature-gates-configuration) guide for details on feature gate configuration.
+The controller is part of Kueue and is enabled by default. The feature is now Generally Available (GA) as of Kueue v0.14.
 
 Check the list of supported Provisioning Classes and prerequisite for them in [ClusterAutoscaler documentation](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#supported-provisioningclasses).
 
diff --git a/site/content/en/docs/contribution_guidelines/testing.md b/site/content/en/docs/contribution_guidelines/testing.md
index d8b080816..9c0109f07 100644
--- a/site/content/en/docs/contribution_guidelines/testing.md
+++ b/site/content/en/docs/contribution_guidelines/testing.md
@@ -110,7 +110,7 @@ and then you can use GUI of the Ginkgo Test Explorer to run individual tests, pr
 You can use the following approach to start up a kind cluster and then run e2e tests from commandline or VSCode,
 attaching them to the existing cluster. For example, suppose you want to test some of the multikueue-e2e tests.
 
-Run `E2E_RUN_ONLY_ENV=true make kind-image-build test-multikueue-e2e` and wait for the `Press Enter to cleanup.` to appear.
+Run `E2E_RUN_ONLY_ENV=true make kind-image-build test-multikueue-e2e` and wait for the `Do you want to cleanup? [Y/n] ` to appear.
 
 The cluster is ready, and now you can run tests from another terminal:
 ```shell
diff --git a/site/content/en/docs/installation/_index.md b/site/content/en/docs/installation/_index.md
index 3a736c022..fc2adf5fd 100644
--- a/site/content/en/docs/installation/_index.md
+++ b/site/content/en/docs/installation/_index.md
@@ -33,9 +33,6 @@ description: >
 Make sure the following conditions are met:
 
 - A Kubernetes cluster with version 1.29 or newer is running. Learn how to [install the Kubernetes tools](https://kubernetes.io/docs/tasks/tools/).
-- The `SuspendJob` [feature gate][feature_gate] is enabled. In Kubernetes 1.22 or newer, the feature gate is enabled by default.
-- (Optional) The `JobMutableNodeSchedulingDirectives` [feature gate][feature_gate] (available in Kubernetes 1.22 or newer) is enabled.
-  In Kubernetes 1.23 or newer, the feature gate is enabled by default.
 - The kubectl command-line tool has communication with your cluster.
 
 Kueue publishes [metrics](/docs/reference/metrics) to monitor its operators.
@@ -274,7 +271,7 @@ spec:
 | `PartialAdmission`                            | `false` | Alpha | 0.4   | 0.4   |
 | `PartialAdmission`                            | `true`  | Beta  | 0.5   |       |
 | `ProvisioningACC`                             | `false` | Alpha | 0.5   | 0.6   |
-| `ProvisioningACC`                             | `true`  | Beta  | 0.7   |       |
+| `ProvisioningACC`                             | `true`  | Beta  | 0.7   | 0.14  |
 | `QueueVisibility`                             | `false` | Alpha | 0.5   | 0.9   |
 | `VisibilityOnDemand`                          | `false` | Alpha | 0.6   | 0.8   |
 | `VisibilityOnDemand`                          | `true`  | Beta  | 0.9   |       |
@@ -304,6 +301,7 @@ spec:
 | Feature                           | Default | Stage      | Since | Until |
 | --------------------------------- | ------- | ---------- | ----- | ----- |
 | `ManagedJobsNamespaceSelector`    | `true`  | GA         | 0.13  |       |
+| `ProvisioningACC`                 | `true`  | GA         | 0.14  |       |
 | `QueueVisibility`                 | `false` | Alpha      | 0.4   | 0.9   |
 | `QueueVisibility`                 | `false` | Deprecated | 0.9   |       |
 | `TASProfileMostFreeCapacity`      | `false` | Deprecated | 0.11  | 0.13  |
diff --git a/site/content/en/docs/tasks/troubleshooting/troubleshooting_provreq.md b/site/content/en/docs/tasks/troubleshooting/troubleshooting_provreq.md
index 5cceb4341..574010307 100644
--- a/site/content/en/docs/tasks/troubleshooting/troubleshooting_provreq.md
+++ b/site/content/en/docs/tasks/troubleshooting/troubleshooting_provreq.md
@@ -17,7 +17,7 @@ Before you begin troubleshooting, make sure your cluster meets the following req
 Check your cloud provider's documentation to determine the minimum versions that support ProvisioningRequest. If you use GKE, your cluster should be running version `1.28.3-gke.1098000` or newer.
 - You use a type of nodes that support ProvisioningRequest. It may vary depending on your cloud provider.
 - Kueue's version is `v0.5.3` or newer.
-- You have enabled the `ProvisioningACC` in [the feature gates configuration](/docs/installation/#change-the-feature-gates-configuration). This feature gate is enabled by default for Kueue `v0.7.0` or newer.
+- ProvisioningRequest support is enabled. This feature has been enabled by default since Kueue `v0.7.0` and is Generally Available (GA) as of Kueue `v0.14.0`.
 
 ## Identifying the Provisioning Request for your job
 
@@ -125,26 +125,16 @@ The states transitions are as follow:
 
 If Kueue did not create a Provisioning Request for your job, try checking the following requirements:
 
-### a. Ensure the Kueue's controller manager enables the `ProvisioningACC` feature gate
+### a. Verify ProvisioningRequest support is available
 
-Run the following command to check whether your Kueue's controller manager has enabled the `ProvisioningACC` feature gate:
+Since Kueue v0.14.0, ProvisioningRequest support is Generally Available (GA) and always enabled. For older versions of Kueue (v0.7.0 to v0.13.x), the feature was enabled by default via the `ProvisioningACC` feature gate.
 
-```bash
-kubectl describe pod -n kueue-system kueue-controller-manager-
-```
-
-The arguments for Kueue container should be similar to the following:
+If you're using an older version of Kueue, you can verify the feature gate is enabled by running:
 
 ```bash
-    ...
-    Args:
-      --config=/controller_manager_config.yaml
-      --zap-log-level=2
-      --feature-gates=ProvisioningACC=true
+kubectl describe pod -n kueue-system kueue-controller-manager-
 ```
 
-Note for Kueue `v0.7.0` or newer the feature is enabled by default, so you may see different output.
-
 ### b. Ensure your Workload has reserved quota
 
 To check if your Workload has reserved quota in a ClusterQueue check your Workload's status by running the following command:
diff --git a/site/content/zh-CN/docs/contribution_guidelines/testing.md b/site/content/zh-CN/docs/contribution_guidelines/testing.md
index 240e820a8..c91c21b73 100644
--- a/site/content/zh-CN/docs/contribution_guidelines/testing.md
+++ b/site/content/zh-CN/docs/contribution_guidelines/testing.md
@@ -110,7 +110,7 @@ func TestValidateClusterQueue(t *testing.T) {
 你可以使用以下方法来启动 kind 集群，然后从命令行或 VSCode 运行 e2e 测试，
 将它们附加到现有集群。例如，假设你想测试一些 multikueue-e2e 测试。
 
-运行 `E2E_RUN_ONLY_ENV=true make kind-image-build test-multikueue-e2e` 并等待 `Press Enter to cleanup.` 出现。
+运行 `E2E_RUN_ONLY_ENV=true make kind-image-build test-multikueue-e2e` 并等待 `Do you want to cleanup? [Y/n] ` 出现。
 
 集群已准备就绪，现在你可以从另一个终端运行测试：
 ```shell
diff --git a/site/content/zh-CN/docs/installation/_index.md b/site/content/zh-CN/docs/installation/_index.md
index 6228f1c99..e72e5a7cc 100644
--- a/site/content/zh-CN/docs/installation/_index.md
+++ b/site/content/zh-CN/docs/installation/_index.md
@@ -33,9 +33,6 @@ description: >
 确保满足以下条件：
 
 - 运行版本为 1.29 或更新的 Kubernetes 集群。了解如何[安装 Kubernetes 工具](https://kubernetes.io/docs/tasks/tools/)。
-- 启用了 `SuspendJob` [特性][feature_gate]。在 Kubernetes 1.22 或更新版本中，该特性默认启用。
-- （可选）启用了 `JobMutableNodeSchedulingDirectives` [特性][feature_gate]（在 Kubernetes 1.22 或更新版本中可用）。
-  在 Kubernetes 1.23 或更新版本中，该特性默认启用。
 - kubectl 命令行工具已与你的集群通信。
 
 Kueue 发布[指标](/docs/reference/metrics)以监控其控制器组件。
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/_index.md b/site/content/zh-CN/docs/reference/kubectl-kueue/_index.md
index 9fdde65ec..902bc4d9c 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/_index.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/_index.md
@@ -4,21 +4,21 @@ linkTitle: "Kubectl Kueue 插件"
 date: 2024-07-02
 weight: 10
 description: >
-  The kubectl-kueue plugin, kueuectl, allows you to list, create, resume and stop kueue resources such as resourceflavor, clusterqueues, localqueues and workloads.
+  kubectl-kueue 插件，即 kueuectl，允许你列出、创建、恢复和停止 Kueue 资源，如 resourceflavor、clusterqueue、localqueue 和 workload。
 ---
 
-## Syntax
+## 语法 {#syntax}
 
-Use the following syntax to run `kubectl kueue` commands from your terminal window:
+使用以下语法从终端窗口运行 `kubectl kueue` 命令：
 
 ```shell
 kubectl kueue [OPERATION] [TYPE] [NAME] [flags]
 ```
 
-or with shorter syntax `kueuectl`:
+或使用更短的语法 `kueuectl`：
 
 ```shell
 kueuectl [OPERATION] [TYPE] [NAME] [flags]
 ```
 
-You can run `kubectl kueue help` in the terminal to get the full list of commands, along with all possible flags.
\ No newline at end of file
+你可以在终端中运行 `kubectl kueue help` 来获取完整的命令列表以及所有可能的标志。
\ No newline at end of file
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/_index.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/_index.md
index a55d665c9..9036a9a54 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/_index.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/_index.md
@@ -5,19 +5,11 @@ auto_generated: true
 no_list: true
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
-
-
-Display a resource
-
-
-## Options
+显示资源
 
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -31,15 +23,14 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for get</p>
+            <p>get 命令的帮助信息</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -52,7 +43,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -61,7 +52,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -70,7 +61,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -79,7 +70,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -88,7 +79,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -97,7 +88,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -106,7 +97,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -115,7 +106,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -124,7 +115,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -133,7 +124,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -142,7 +133,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -151,7 +142,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -160,7 +151,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -169,7 +160,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -178,7 +169,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -187,7 +178,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -196,7 +187,7 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -205,19 +196,16 @@ Display a resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl](../kueuectl/)	 - Controls Kueue queueing manager
-* [kueuectl get clusterqueue](kueuectl_get_clusterqueue/)	 - Pass-through &#34;get clusterqueue&#34; to kubectl
-* [kueuectl get localqueue](kueuectl_get_localqueue/)	 - Pass-through &#34;get localqueue&#34; to kubectl
-* [kueuectl get resourceflavor](kueuectl_get_resourceflavor/)	 - Pass-through &#34;get resourceflavor&#34; to kubectl
-* [kueuectl get workload](kueuectl_get_workload/)	 - Pass-through &#34;get workload&#34; to kubectl
-
+* [kueuectl](../kueuectl/) - 控制 Kueue 队列管理器
+* [kueuectl get clusterqueue](kueuectl_get_clusterqueue/) - 将 `get clusterqueue` 透传给 kubectl
+* [kueuectl get localqueue](kueuectl_get_localqueue/) - 将 `get localqueue` 透传给 kubectl
+* [kueuectl get resourceflavor](kueuectl_get_resourceflavor/) - 将 `get resourceflavor` 透传给 kubectl
+* [kueuectl get workload](kueuectl_get_workload/) - 将 `get workload` 透传给 kubectl
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/kueuectl_get_clusterqueue.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/kueuectl_get_clusterqueue.md
index 827c51188..499e58276 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/kueuectl_get_clusterqueue.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_get/kueuectl_get_clusterqueue.md
@@ -5,23 +5,15 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+把 `get clusterqueue` 透传给 kubectl。
 
-
-Pass-through &#34;get clusterqueue&#34; to kubectl
-
-```
+```shell
 kueuectl get clusterqueue [flags]
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -35,15 +27,14 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for clusterqueue</p>
+            <p>clusterqueue 命令的帮助信息</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -56,7 +47,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -65,7 +56,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -74,7 +65,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -83,7 +74,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -92,7 +83,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -101,7 +92,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -110,7 +101,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -119,7 +110,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -128,7 +119,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -137,7 +128,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -146,7 +137,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -155,7 +146,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -164,7 +155,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -173,7 +164,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -182,7 +173,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -191,7 +182,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -200,7 +191,7 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -209,15 +200,12 @@ kueuectl get clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl get](../)	 - Display a resource
-
+* [kueuectl get](../) - 显示资源
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_clusterqueue.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_clusterqueue.md
index d117e88f4..924118db2 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_clusterqueue.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_clusterqueue.md
@@ -5,31 +5,22 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+列出所有 ClusterQueue，可能将输出限制为活跃/非活跃且与标签选择器匹配的输出。
 
-
-Lists all ClusterQueues, potentially limiting output to those that are active/inactive and matching the label selector.
-
-```
+```shell
 kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value1] [--active=true|false]
 ```
 
+## 示例
 
-## Examples
-
-```
-  # List ClusterQueue
-  kueuectl list clusterqueue
+```shell
+# 列出 ClusterQueue
+kueuectl list clusterqueue
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -38,21 +29,21 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     </colgroup>
     <tbody>
     <tr>
-        <td colspan="2">--active bools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: []</td>
+        <td colspan="2">--active bools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认：[]</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Filter by active status. Valid values: &#39;true&#39; and &#39;false&#39;.</p>
+            <p>按活跃状态过滤。有效值："true" 和 "false"。</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: true</td>
+        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认：true</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.</p>
+            <p>如果为 true，则在模板中缺少字段或映射键时忽略任何错误。仅适用于 golang 和 jsonpath 输出格式。</p>
         </td>
     </tr>
     <tr>
@@ -61,7 +52,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (field query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.</p>
+            <p>选择器（字段查询）用于过滤，支持 '='、'==' 和 '!='。（例如：--field-selector key1=value1,key2=value2)。服务器仅支持每种类型有限数量的字段查询。</p>
         </td>
     </tr>
     <tr>
@@ -79,7 +70,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).</p>
+            <p>输出格式。可选值为：(json、yaml、name、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file)。</p>
         </td>
     </tr>
     <tr>
@@ -88,7 +79,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (label query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.</p>
+            <p>选择器（标签查询）用于过滤，支持 '='、'==' 和 '!='。（例如：-l key1=value1,key2=value2）。匹配的对象必须满足所有指定的标签约束。</p>
         </td>
     </tr>
     <tr>
@@ -97,7 +88,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, keep the managedFields when printing objects in JSON or YAML format.</p>
+            <p>如果为 true，在以 JSON 或 YAML 格式打印对象时保留 managedField。</p>
         </td>
     </tr>
     <tr>
@@ -106,15 +97,14 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].</p>
+            <p>当使用 `-o=go-template`，`-o=go-template-file` 时，使用的模板字符串或指向模板文件的路径。模板格式是 Go 语言模板 [http://golang.org/pkg/text/template/#pkg-overview]。</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -127,7 +117,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -136,7 +126,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -145,7 +135,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -154,7 +144,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -163,7 +153,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -172,7 +162,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -181,7 +171,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -190,7 +180,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -199,7 +189,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -208,7 +198,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -217,7 +207,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -226,7 +216,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -235,7 +225,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -244,7 +234,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -253,7 +243,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -262,7 +252,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -271,7 +261,7 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -280,15 +270,12 @@ kueuectl list clusterqueue [--selector key1=value1] [--field-selector key1=value
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl list](../)	 - Display resources
-
+* [kueuectl list](../) - 显示资源
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_localqueue.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_localqueue.md
index 39afd2889..365ad347a 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_localqueue.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_localqueue.md
@@ -5,31 +5,22 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+列出符合给定条件的 LocalQueue：指向特定的 CQ、处于活跃/非活动状态、属于指定的命名空间、匹配标签选择器或字段选择器。
 
-
-Lists LocalQueues that match the given criteria: point to a specific CQ, being active/inactive, belonging to the specified namespace, matching the label selector or the field selector.
-
-```
+```shell
 kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=value1] [--field-selector key1=value1] [--all-namespaces]
 ```
 
+## 示例
 
-## Examples
-
-```
-  # List LocalQueue
-  kueuectl list localqueue
+```shell
+# 列出 LocalQueue
+kueuectl list localqueue
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -43,16 +34,16 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.</p>
+            <p>如果存在，跨所有命名空间列出请求的对象。即使使用 --namespace 指定了当前上下文中的命名空间，也会被忽略。</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: true</td>
+        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值：true</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.</p>
+            <p>如果为 true，则在模板中缺少字段或映射键时忽略任何错误。仅适用于 golang 和 jsonpath 输出格式。</p>
         </td>
     </tr>
     <tr>
@@ -61,7 +52,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Filter by cluster queue name which is associated with the resource.</p>
+            <p>通过与资源关联的集群队列名称进行过滤。</p>
         </td>
     </tr>
     <tr>
@@ -70,7 +61,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (field query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.</p>
+            <p>选择器（字段查询）用于过滤，支持 '='、'==' 和 '!='。（例如：--field-selector key1=value1,key2=value2)。服务器仅支持每种类型有限数量的字段查询。</p>
         </td>
     </tr>
     <tr>
@@ -79,7 +70,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for localqueue</p>
+            <p>localqueue 命令的帮助信息。</p>
         </td>
     </tr>
     <tr>
@@ -88,7 +79,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).</p>
+            <p>输出格式。可选值为：(json、yaml、name、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file)。</p>
         </td>
     </tr>
     <tr>
@@ -97,7 +88,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (label query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.</p>
+            <p>选择器（标签查询）用于过滤，支持 '='、'==' 和 '!='。（例如：-l key1=value1,key2=value2）。匹配的对象必须满足所有指定的标签约束。</p>
         </td>
     </tr>
     <tr>
@@ -106,7 +97,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, keep the managedFields when printing objects in JSON or YAML format.</p>
+            <p>如果为 true，在以 JSON 或 YAML 格式打印对象时保留 managedField。</p>
         </td>
     </tr>
     <tr>
@@ -115,15 +106,14 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].</p>
+            <p>当使用 `-o=go-template`，`-o=go-template-file` 时，使用的模板字符串或指向模板文件的路径。模板格式是 Go 语言模板 [http://golang.org/pkg/text/template/#pkg-overview]。</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -136,7 +126,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -145,7 +135,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -154,7 +144,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -163,7 +153,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -172,7 +162,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -181,7 +171,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -190,7 +180,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -199,7 +189,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -208,7 +198,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -217,7 +207,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -226,7 +216,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -235,7 +225,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -244,7 +234,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -253,7 +243,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -262,7 +252,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -271,7 +261,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -280,7 +270,7 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -289,15 +279,12 @@ kueuectl list localqueue [-–clusterqueue CLUSTER_QUEUE_NAME] [--selector key1=
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl list](../)	 - Display resources
-
+* [kueuectl list](../) - 显示资源
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_pods.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_pods.md
index 883ef90de..7477b6621 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_pods.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_pods.md
@@ -5,36 +5,27 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+列出所有符合给定条件的 Pod：属于指定的 Job 类型、隶属于指定的命名空间、匹配标签选择器或字段选择器。
 
+- `--for=pod/pod-name` 选项允许查找与指定 Pod 属于同一 Pod 组的 Pod，包括该 Pod 本身。
 
-Lists all pods that matches the given criteria: should be part of the specified Job kind, belonging to the specified namespace, matching the label selector or the field selector.)
-
- The --for=pod/pod-name option allows to find pods from the same pod group as the specified pod, including that pod itself.
-
-```
+```shell
 kueuectl list pods --for TYPE[.API-GROUP]/NAME
 ```
 
+## 示例
 
-## Examples
-
-```
-  # List Pods for the Job
-  kueuectl list pods --for job/job-name
+```shell
+# 列出 Job 下的 Pod
+kueuectl list pods --for job/job-name
   
-  # List Pods for the Pod group
-  kueuectl list pods --for pod/pod-name
+# 列出 Pod 组下的 Pod
+kueuectl list pods --for pod/pod-name
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -48,16 +39,16 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.</p>
+             <p>如果存在，跨所有命名空间列出请求的对象。即使使用 --namespace 指定了当前上下文中的命名空间，也会被忽略。</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: true</td>
+        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值：true</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.</p>
+            <p>如果为 true，则在模板中缺少字段或映射键时忽略任何错误。仅适用于 golang 和 jsonpath 输出格式。</p>
         </td>
     </tr>
     <tr>
@@ -66,7 +57,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (field query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.</p>
+            <p>选择器（字段查询）用于过滤，支持 '='、'==' 和 '!='。（例如：--field-selector key1=value1,key2=value2)。服务器仅支持每种类型有限数量的字段查询。</p>
         </td>
     </tr>
     <tr>
@@ -75,7 +66,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Filter only those pertaining to the specified resource.</p>
+            <p>仅过滤与指定资源相关的 Pod</p>
         </td>
     </tr>
     <tr>
@@ -84,7 +75,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for pods</p>
+            <p>pods 命令的帮助信息</p>
         </td>
     </tr>
     <tr>
@@ -93,7 +84,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).</p>
+            <p>输出格式。可选值为：(json、yaml、name、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file)。</p>
         </td>
     </tr>
     <tr>
@@ -102,7 +93,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (label query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.</p>
+            <p>选择器（标签查询）用于过滤，支持 '='、'==' 和 '!='。（例如：-l key1=value1,key2=value2）。匹配的对象必须满足所有指定的标签约束。</p>
         </td>
     </tr>
     <tr>
@@ -111,7 +102,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, keep the managedFields when printing objects in JSON or YAML format.</p>
+            <p>如果为 true，在以 JSON 或 YAML 格式打印对象时保留 managedField。</p>
         </td>
     </tr>
     <tr>
@@ -120,15 +111,14 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].</p>
+            <p>当使用 `-o=go-template`，`-o=go-template-file` 时，使用的模板字符串或指向模板文件的路径。模板格式是 Go 语言模板 [http://golang.org/pkg/text/template/#pkg-overview]。</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -141,7 +131,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -150,7 +140,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -159,7 +149,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -168,7 +158,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -177,7 +167,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -186,7 +176,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -195,7 +185,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -204,7 +194,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -213,7 +203,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -222,7 +212,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -231,7 +221,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -240,7 +230,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -249,7 +239,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -258,7 +248,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -267,7 +257,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -276,7 +266,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -285,7 +275,7 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -294,15 +284,12 @@ kueuectl list pods --for TYPE[.API-GROUP]/NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl list](../)	 - Display resources
-
+* [kueuectl list](../) - 显示资源
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_resourceflavor.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_resourceflavor.md
index 3ecc93d58..9e953910d 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_resourceflavor.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_list/kueuectl_list_resourceflavor.md
@@ -5,31 +5,22 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+列出 ResourceFlavor
 
-
-List ResourceFlavor
-
-```
+```shell
 kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME=VALUE]
 ```
 
+## 示例
 
-## Examples
-
-```
-  # List ResourceFlavor
-  kueuectl list resourceflavor
+```shell
+# 列出 ResourceFlavor
+kueuectl list resourceflavor
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -38,12 +29,12 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     </colgroup>
     <tbody>
     <tr>
-        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: true</td>
+        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值：true</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.</p>
+            <p>如果为 true，则在模板中缺少字段或映射键时忽略任何错误。仅适用于 golang 和 jsonpath 输出格式。</p>
         </td>
     </tr>
     <tr>
@@ -52,7 +43,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (field query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.</p>
+            <p>选择器（字段查询）用于过滤，支持 '='、'==' 和 '!='。（例如：--field-selector key1=value1,key2=value2)。服务器仅支持每种类型有限数量的字段查询。</p>
         </td>
     </tr>
     <tr>
@@ -61,7 +52,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for resourceflavor</p>
+            <p>resourceflavor 命令的帮助信息</p>
         </td>
     </tr>
     <tr>
@@ -70,7 +61,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).</p>
+            <p>输出格式。可选值为：(json、yaml、name、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file)。</p>
         </td>
     </tr>
     <tr>
@@ -79,7 +70,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Selector (label query) to filter on, supports &#39;=&#39;, &#39;==&#39;, and &#39;!=&#39;.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.</p>
+            <p>选择器（标签查询）用于过滤，支持 '='、'==' 和 '!='。（例如：-l key1=value1,key2=value2）。匹配的对象必须满足所有指定的标签约束。</p>
         </td>
     </tr>
     <tr>
@@ -88,7 +79,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, keep the managedFields when printing objects in JSON or YAML format.</p>
+            <p>如果为 true，在以 JSON 或 YAML 格式打印对象时保留 managedField。</p>
         </td>
     </tr>
     <tr>
@@ -97,15 +88,14 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].</p>
+            <p>当使用 `-o=go-template`，`-o=go-template-file` 时，使用的模板字符串或指向模板文件的路径。模板格式是 Go 语言模板 [http://golang.org/pkg/text/template/#pkg-overview]。</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -118,7 +108,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -127,7 +117,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -136,7 +126,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -145,7 +135,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -154,7 +144,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -163,7 +153,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -172,7 +162,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -181,7 +171,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -190,7 +180,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -199,7 +189,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -208,7 +198,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -217,7 +207,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -226,7 +216,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -235,7 +225,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -244,7 +234,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -253,7 +243,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -262,7 +252,7 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -271,15 +261,13 @@ kueuectl list resourceflavor [--selector KEY=VALUE] [--field-selector FIELD_NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl list](../)	 - Display resources
+* [kueuectl list](../) - 显示资源
 
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_clusterqueue.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_clusterqueue.md
index 0fdd7c5c6..e61c24416 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_clusterqueue.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_clusterqueue.md
@@ -5,23 +5,15 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+将 `patch clusterqueue` 透传给 kubectl
 
-
-Pass-through &#34;patch clusterqueue&#34; to kubectl
-
-```
+```shell
 kueuectl patch clusterqueue [flags]
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -35,15 +27,14 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for clusterqueue</p>
+            <p>clusterqueue 命令的帮助信息</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -56,7 +47,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -65,7 +56,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -74,7 +65,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -83,7 +74,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -92,7 +83,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -101,7 +92,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -110,7 +101,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -119,7 +110,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -128,7 +119,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -137,7 +128,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -146,7 +137,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -155,7 +146,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -164,7 +155,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -173,7 +164,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -182,7 +173,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -191,7 +182,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -200,7 +191,7 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -209,15 +200,13 @@ kueuectl patch clusterqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl patch](../)	 - Update fields of a resource
+* [kueuectl patch](../) - 更新资源的字段
 
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_localqueue.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_localqueue.md
index af81b94cf..caea858e6 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_localqueue.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_localqueue.md
@@ -5,23 +5,15 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+将 `patch localqueue` 透传给 kubectl
 
-
-Pass-through &#34;patch localqueue&#34; to kubectl
-
-```
+```shell
 kueuectl patch localqueue [flags]
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -35,15 +27,14 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for localqueue</p>
+            <p>localqueue 命令的帮助信息</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -56,7 +47,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -65,7 +56,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -74,7 +65,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -83,7 +74,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -92,7 +83,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -101,7 +92,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -110,7 +101,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -119,7 +110,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -128,7 +119,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -137,7 +128,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -146,7 +137,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -155,7 +146,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -164,7 +155,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -173,7 +164,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -182,7 +173,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -191,7 +182,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -200,7 +191,7 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -209,15 +200,13 @@ kueuectl patch localqueue [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl patch](../)	 - Update fields of a resource
+* [kueuectl patch](../) - 更新资源的字段
 
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_resourceflavor.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_resourceflavor.md
index fa07133f2..c9abbd823 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_resourceflavor.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_resourceflavor.md
@@ -5,23 +5,15 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+将 `patch resourceflavor` 透传给 kubectl
 
-
-Pass-through &#34;patch resourceflavor&#34; to kubectl
-
-```
+```shell
 kueuectl patch resourceflavor [flags]
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -35,15 +27,14 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for resourceflavor</p>
+            <p>resourceflavor 的帮助命令</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -56,7 +47,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -65,7 +56,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -74,7 +65,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -83,7 +74,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -92,7 +83,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -101,7 +92,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -110,7 +101,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -119,7 +110,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -128,7 +119,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -137,7 +128,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -146,7 +137,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -155,7 +146,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -164,7 +155,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -173,7 +164,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -182,7 +173,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -191,7 +182,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -200,7 +191,7 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -209,15 +200,12 @@ kueuectl patch resourceflavor [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl patch](../)	 - Update fields of a resource
-
+* [kueuectl patch](../) - 更新资源的字段
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_workload.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_workload.md
index 6c43db193..e41ca8d64 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_workload.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_patch/kueuectl_patch_workload.md
@@ -5,23 +5,15 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+将 `patch workload` 透传给 kubectl
 
-
-Pass-through &#34;patch workload&#34; to kubectl
-
-```
+```shell
 kueuectl patch workload [flags]
 ```
 
-
-## Options
-
+## 选项 {#options}
 
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
@@ -35,15 +27,14 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for workload</p>
+            <p>workload 命令的帮助命令</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 
-
-## Options inherited from parent commands
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -56,7 +47,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -65,7 +56,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -74,7 +65,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
@@ -83,7 +74,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -92,7 +83,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -101,7 +92,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -110,7 +101,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -119,7 +110,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -128,7 +119,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -137,7 +128,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -146,7 +137,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -155,7 +146,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -164,7 +155,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
@@ -173,7 +164,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -182,7 +173,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -191,7 +182,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -200,7 +191,7 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -209,15 +200,12 @@ kueuectl patch workload [flags]
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
 </table>
 
+## 参见
 
-
-## See Also
-
-* [kueuectl patch](../)	 - Update fields of a resource
-
+* [kueuectl patch](../) - 更新资源的字段
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_resume/kueuectl_resume_clusterqueue.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_resume/kueuectl_resume_clusterqueue.md
index 82150eb35..6e4555361 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_resume/kueuectl_resume_clusterqueue.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_resume/kueuectl_resume_clusterqueue.md
@@ -5,30 +5,24 @@ auto_generated: true
 no_list: false
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
-
-
-Resumes the previously held ClusterQueue.
+恢复之前暂停的 ClusterQueue。
 
 ```
 kueuectl resume clusterqueue NAME
 ```
 
 
-## Examples
+## 示例 {#examples}
 
 ```
-  # Resume the clusterqueue
+  # 恢复集群队列
   kueuectl resume clusterqueue my-clusterqueue
 ```
 
 
-## Options
+## 选项 {#options}
 
 
 <table style="width: 100%; table-layout: fixed;">
@@ -38,12 +32,12 @@ kueuectl resume clusterqueue NAME
     </colgroup>
     <tbody>
     <tr>
-        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: true</td>
+        <td colspan="2">--allow-missing-template-keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值： true</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.</p>
+            <p>如果为 true，当模板中缺少字段或映射键时忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。</p>
         </td>
     </tr>
     <tr>
@@ -52,7 +46,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for clusterqueue</p>
+            <p>clusterqueue 命令的帮助信息</p>
         </td>
     </tr>
     <tr>
@@ -61,7 +55,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).</p>
+            <p>输出格式。可选值为：json、yaml、name、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file。</p>
         </td>
     </tr>
     <tr>
@@ -70,7 +64,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, keep the managedFields when printing objects in JSON or YAML format.</p>
+            <p>如果为 true，在 JSON 或 YAML 格式打印对象时保留 managedFields。</p>
         </td>
     </tr>
     <tr>
@@ -79,7 +73,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].</p>
+            <p>当使用 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。模板格式是 golang 模板 [http://golang.org/pkg/text/template/#pkg-overview]。</p>
         </td>
     </tr>
     </tbody>
@@ -87,7 +81,7 @@ kueuectl resume clusterqueue NAME
 
 
 
-## Options inherited from parent commands
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -100,7 +94,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是普通用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -109,7 +103,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -118,16 +112,16 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--cache-dir string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: &#34;$HOME/.kube/cache&#34;</td>
+        <td colspan="2">--cache-dir string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值： &#34;$HOME/.kube/cache&#34;</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -136,7 +130,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构的证书文件路径</p>
         </td>
     </tr>
     <tr>
@@ -145,7 +139,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件路径</p>
         </td>
     </tr>
     <tr>
@@ -154,7 +148,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件路径</p>
         </td>
     </tr>
     <tr>
@@ -163,7 +157,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -172,7 +166,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -181,16 +175,16 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--dry-run string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: &#34;none&#34;</td>
+        <td colspan="2">--dry-run string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值： &#34;none&#34;</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Must be &#34;none&#34;, &#34;server&#34;, or &#34;client&#34;. If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.</p>
+            <p>必须是 &#34;none&#34;、&#34;server&#34; 或 &#34;client&#34;。如果是客户端策略，只打印将要发送的对象，而不发送它。如果是服务器策略，提交服务器端请求而不持久化资源。</p>
         </td>
     </tr>
     <tr>
@@ -199,7 +193,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -208,7 +202,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件路径。</p>
         </td>
     </tr>
     <tr>
@@ -217,16 +211,16 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此次 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--request-timeout string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: &#34;0&#34;</td>
+        <td colspan="2">--request-timeout string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值： &#34;0&#34;</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值意味着不要超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -235,7 +229,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -244,7 +238,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -253,7 +247,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -262,7 +256,7 @@ kueuectl resume clusterqueue NAME
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
@@ -270,7 +264,7 @@ kueuectl resume clusterqueue NAME
 
 
 
-## See Also
+## 另请参阅 {#see-also}
 
-* [kueuectl resume](../)	 - Resume the resource
+* [kueuectl resume](../) - 恢复资源
 
diff --git a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_stop/_index.md b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_stop/_index.md
index 70cea583e..2b76b58b6 100644
--- a/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_stop/_index.md
+++ b/site/content/zh-CN/docs/reference/kubectl-kueue/commands/kueuectl_stop/_index.md
@@ -5,26 +5,20 @@ auto_generated: true
 no_list: true
 ---
 
-<!--
-The file is auto-generated from the Go source code of the component using the
-[generator](https://github.com/kubernetes-sigs/kueue/tree/main/cmd/kueuectl-docs).
--->
+## 概要 {#synopsis}
 
-## Synopsis
+停止资源
 
 
-Stop the resource
-
-
-## Examples
+## 示例 {#examples}
 
 ```
-  # Stop the workload
+  # 停止工作负载
   kueuectl stop workload my-workload
 ```
 
 
-## Options
+## 选项 {#options}
 
 
 <table style="width: 100%; table-layout: fixed;">
@@ -34,12 +28,12 @@ Stop the resource
     </colgroup>
     <tbody>
     <tr>
-        <td colspan="2">--dry-run string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: &#34;none&#34;</td>
+        <td colspan="2">--dry-run string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值: &#34;none&#34;</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Must be &#34;none&#34;, &#34;server&#34;, or &#34;client&#34;. If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.</p>
+            <p>必须是 &#34;none&#34;、&#34;server&#34; 或 &#34;client&#34;。如果使用客户端策略，仅打印将要发送的对象，而不发送它。如果使用服务器策略，提交服务器端请求但不持久化资源。</p>
         </td>
     </tr>
     <tr>
@@ -48,7 +42,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>help for stop</p>
+            <p>stop 命令的帮助信息</p>
         </td>
     </tr>
     </tbody>
@@ -56,7 +50,7 @@ Stop the resource
 
 
 
-## Options inherited from parent commands
+## 从父命令继承的选项 {#options-inherited-from-parent-commands}
 <table style="width: 100%; table-layout: fixed;">
     <colgroup>
         <col span="1" style="width: 10px;" />
@@ -69,7 +63,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Username to impersonate for the operation. User could be a regular user or a service account in a namespace.</p>
+            <p>为操作模拟的用户名。用户可以是常规用户或命名空间中的服务账户。</p>
         </td>
     </tr>
     <tr>
@@ -78,7 +72,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Group to impersonate for the operation, this flag can be repeated to specify multiple groups.</p>
+            <p>为操作模拟的组，此标志可以重复使用，以指定多个组。</p>
         </td>
     </tr>
     <tr>
@@ -87,16 +81,16 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>UID to impersonate for the operation.</p>
+            <p>为操作模拟的 UID。</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--cache-dir string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: &#34;$HOME/.kube/cache&#34;</td>
+        <td colspan="2">--cache-dir string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值: &#34;$HOME/.kube/cache&#34;</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Default cache directory</p>
+            <p>默认缓存目录</p>
         </td>
     </tr>
     <tr>
@@ -105,7 +99,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a cert file for the certificate authority</p>
+            <p>证书颁发机构证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -114,7 +108,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client certificate file for TLS</p>
+            <p>TLS 客户端证书文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -123,7 +117,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to a client key file for TLS</p>
+            <p>TLS 客户端密钥文件的路径</p>
         </td>
     </tr>
     <tr>
@@ -132,7 +126,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig cluster to use</p>
+            <p>要使用的 kubeconfig 集群的名称</p>
         </td>
     </tr>
     <tr>
@@ -141,7 +135,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig context to use</p>
+            <p>要使用的 kubeconfig 上下文的名称</p>
         </td>
     </tr>
     <tr>
@@ -150,7 +144,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, opt-out of response compression for all requests to the server</p>
+            <p>如果为 true，则取消对所有服务器请求的响应压缩</p>
         </td>
     </tr>
     <tr>
@@ -159,7 +153,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If true, the server&#39;s certificate will not be checked for validity. This will make your HTTPS connections insecure</p>
+            <p>如果为 true，将不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全</p>
         </td>
     </tr>
     <tr>
@@ -168,7 +162,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Path to the kubeconfig file to use for CLI requests.</p>
+            <p>用于 CLI 请求的 kubeconfig 文件的路径。</p>
         </td>
     </tr>
     <tr>
@@ -177,16 +171,16 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>If present, the namespace scope for this CLI request</p>
+            <p>如果存在，则为此 CLI 请求的命名空间范围</p>
         </td>
     </tr>
     <tr>
-        <td colspan="2">--request-timeout string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default: &#34;0&#34;</td>
+        <td colspan="2">--request-timeout string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认值: &#34;0&#34;</td>
     </tr>
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don&#39;t timeout requests.</p>
+            <p>在放弃单个服务器请求之前要等待的时间长度。非零值应包含相应的时间单位（例如 1s、2m、3h）。零值表示不超时请求。</p>
         </td>
     </tr>
     <tr>
@@ -195,7 +189,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The address and port of the Kubernetes API server</p>
+            <p>Kubernetes API 服务器的地址和端口</p>
         </td>
     </tr>
     <tr>
@@ -204,7 +198,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used</p>
+            <p>用于服务器证书验证的服务器名称。如果未提供，则使用联系服务器所用的主机名</p>
         </td>
     </tr>
     <tr>
@@ -213,7 +207,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>Bearer token for authentication to the API server</p>
+            <p>API 服务器身份验证所用的持有者令牌</p>
         </td>
     </tr>
     <tr>
@@ -222,7 +216,7 @@ Stop the resource
     <tr>
         <td></td>
         <td style="line-height: 130%; word-wrap: break-word;">
-            <p>The name of the kubeconfig user to use</p>
+            <p>要使用的 kubeconfig 用户的名称</p>
         </td>
     </tr>
     </tbody>
@@ -230,10 +224,10 @@ Stop the resource
 
 
 
-## See Also
+## 另请参阅 {#see-also}
 
-* [kueuectl](../kueuectl/)	 - Controls Kueue queueing manager
-* [kueuectl stop clusterqueue](kueuectl_stop_clusterqueue/)	 - Stop the ClusterQueue
-* [kueuectl stop localqueue](kueuectl_stop_localqueue/)	 - Stop the LocalQueue
-* [kueuectl stop workload](kueuectl_stop_workload/)	 - Stop the Workload
+* [kueuectl](../kueuectl/) - 控制 Kueue 队列管理器
+* [kueuectl stop clusterqueue](kueuectl_stop_clusterqueue/) - 停止 ClusterQueue
+* [kueuectl stop localqueue](kueuectl_stop_localqueue/) - 停止 LocalQueue
+* [kueuectl stop workload](kueuectl_stop_workload/) - 停止 Workload
 
diff --git a/site/content/zh-CN/docs/tasks/run/jobsets.md b/site/content/zh-CN/docs/tasks/run/jobsets.md
index 830e720e6..fd2a0964d 100644
--- a/site/content/zh-CN/docs/tasks/run/jobsets.md
+++ b/site/content/zh-CN/docs/tasks/run/jobsets.md
@@ -1,35 +1,33 @@
 ---
-title: "Run A JobSet"
+title: "运行 JobSet"
 linkTitle: "Jobsets"
 date: 2023-06-16
 weight: 7
-description: >
-  Run a Kueue scheduled JobSet.
+description: 在启用了 Kueue 的环境里运行 Jobset
 ---
 
-This document explains how you can use Kueue’s scheduling and resource management functionality when running [JobSet Operator](https://github.com/kubernetes-sigs/jobset) [JobSet](https://jobset.sigs.k8s.io/docs/concepts/).
+本指南解释了如何使用 Kueue 的调度和资源管理功能运行 [JobSet Operator](https://github.com/kubernetes-sigs/jobset) [JobSet](https://jobset.sigs.k8s.io/docs/concepts/)。
 
-This guide is for [batch users](/docs/tasks#batch-user) that have a basic understanding of Kueue. For more information, see [Kueue's overview](/docs/overview).
+本指南适用于[批处理用户](/zh-CN/docs/tasks#batch-user)，他们需要对 Kueue 有基本的了解。更多信息，请参见 [Kueue 概览](/zh-CN/docs/overview)。
 
-## Before you begin
+## 开始之前 {#before-you-begin}
 
-1. Check [Administer cluster quotas](/docs/tasks/manage/administer_cluster_quotas) for details on the initial Kueue setup.
+1. 请参见[管理集群配额](/zh-CN/docs/tasks/manage/administer_cluster_quotas)了解初始 Kueue 设置的详细信息。
 
-2. See [JobSet Installation](https://jobset.sigs.k8s.io/docs/installation/) for installation and configuration details of JobSet Operator.
+2. 请参见 [JobSet 安装文档](https://jobset.sigs.k8s.io/docs/installation/)了解 JobSet Operator 的安装和配置详情。
 
-{{% alert title="Note" color="primary" %}}
-In order to use JobSet, prior to v0.8.1, you need to restart Kueue after the installation.
-You can do it by running: `kubectl delete pods -l control-plane=controller-manager -n kueue-system`.
+{{% alert title="注意" color="primary" %}}
+在 v0.8.1 之前，为了使用 JobSet，你需要重启 Kueue。你可以通过运行 `kubectl delete pods -l control-plane=controller-manager -n kueue-system` 来完成此操作。
 {{% /alert %}}
 
-## JobSet definition
+## JobSet 定义 {#jobset-definition}
 
-When running [JobSets](https://jobset.sigs.k8s.io/docs/concepts/) on
-Kueue, take into consideration the following aspects:
+当在 Kueue 上运行 [JobSet](https://jobset.sigs.k8s.io/docs/concepts/)时，
+请考虑以下方面：
 
-### a. Queue selection
+### a. 队列选择 {#a-queue-selection}
 
-The target [local queue](/docs/concepts/local_queue) should be specified in the `metadata.labels` section of the JobSet configuration.
+目标[本地队列](/zh-CN/docs/concepts/local_queue)应在 JobSet 配置的 `metadata.labels` 部分指定。
 
 ```yaml
 metadata:
@@ -37,9 +35,9 @@ metadata:
     kueue.x-k8s.io/queue-name: user-queue
 ```
 
-### b. Configure the resource needs
+### b. 配置资源需求 {#b-configure-the-resource-needs}
 
-The resource needs of the workload can be configured in the `spec.replicatedJobs`. Should also be taken into account that number of replicas, [parallelism](https://kubernetes.io/docs/concepts/workloads/controllers/job/#parallel-jobs) and completions affect the resource calculations.
+工作负载的资源需求可以在 `spec.replicatedJobs` 中配置。还应考虑副本数量[并行度](https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/#parallel-jobs)和完成数量对资源计算的影响。
 
 ```yaml
     - replicas: 1
@@ -55,9 +53,11 @@ The resource needs of the workload can be configured in the `spec.replicatedJobs
                       cpu: 1
 ```
 
-### c. Jobs prioritisation
+### c. 作业优先级 {#c-jobs-prioritisation}
 
-The first [PriorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass) of `spec.replicatedJobs` that is not empty will be used as the priority.
+`spec.replicatedJobs` 中第一个非空的
+[PriorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass)
+将用作优先级。
 
 ```yaml
     - template:
@@ -67,16 +67,16 @@ The first [PriorityClassName](https://kubernetes.io/docs/concepts/scheduling-evi
               priorityClassName: high-priority
 ```
 
-## Example JobSet
+## 示例 JobSet {#example-jobset}
 
 {{< include "examples/jobs/sample-jobset.yaml" "yaml" >}}
 
-You can run this JobSet with the following commands:
+你可以使用以下命令运行此 JobSet：
 
 ```sh
-# To monitor the queue and admission of the jobs, you can run this example multiple times:
+# 为了监控队列和作业的准入，你可以多次运行此示例：
 kubectl create -f sample-jobset.yaml
 ```
 
-## Multikueue
-Check [the Multikueue](docs/tasks/run/multikueue) for details on running Jobsets in MultiKueue environment.
+## Multikueue {#multikueue}
+请参见 [Multikueue](/zh-CN/docs/tasks/run/multikueue) 了解在 MultiKueue 环境中运行 JobSet 的详细信息。
diff --git a/site/content/zh-CN/docs/tasks/run/leaderworkerset.md b/site/content/zh-CN/docs/tasks/run/leaderworkerset.md
index 4cb1d74ba..fdc25bcd0 100644
--- a/site/content/zh-CN/docs/tasks/run/leaderworkerset.md
+++ b/site/content/zh-CN/docs/tasks/run/leaderworkerset.md
@@ -1,29 +1,28 @@
 ---
-title: "Run LeaderWorkerSet"
+title: "运行 LeaderWorkerSet"
 linkTitle: "LeaderWorkerSet"
 date: 2025-02-17
 weight: 6
-description: >
-   Run a LeaderWorkerSet as a Kueue-managed workload.
+description: 将 LeaderWorkerSet 作为由 Kueue 管理的工作负载运行
 ---
 
-This page shows how to leverage Kueue's scheduling and resource management
-capabilities when running [LeaderWorkerSet](https://github.com/kubernetes-sigs/lws).
+本页面展示了如何通过运行 [LeaderWorkerSet](https://github.com/kubernetes-sigs/lws)
+来利用 Kueue 的调度和资源管理能力。
 
-We demonstrate how to support scheduling LeaderWorkerSets where a group of Pods constitutes
-a unit of admission represented by a Workload. This allows to scale-up and down LeaderWorkerSets
-group by group.
+我们演示了如何支持调度 LeaderWorkerSet，
+其中一组 Pod 构成由工作负载所表示的准入单元。
+这允许逐组扩大和缩小 LeaderWorkerSet。
 
-This integration is based on the [Plain Pod Group](https://kueue.sigs.k8s.io/docs/tasks/run/plain_pods/) integration.
+此集成基于[普通的 Pod 组](https://kueue.sigs.k8s.io/docs/tasks/run/plain_pods/)集成。
 
-This guide is for [serving users](/docs/tasks#serving-user) that have a basic understanding of Kueue.
-For more information, see [Kueue's overview](/docs/overview).
+本指南适用于[为用户提供服务](/zh-CN/docs/tasks#serving-user)并对 Kueue 有基本理解的人们。
+有关更多信息，请参见 [Kueue 概述](/zh-CN/docs/overview)。
 
-## Before you begin
+## 开始之前 {#before-you-begin}
 
-1. Learn how to [install Kueue with a custom manager configuration](/docs/installation/#install-a-custom-configured-released-version).
+1. 学习如何[安装 Kueue 并使用自定义管理器配置](/zh-CN/docs/installation/#install-a-custom-configured-released-version)。
 
-2. Ensure that you have the `leaderworkerset.x-k8s.io/leaderworkerset` integration enabled, for example:
+2. 确保你已启用 `leaderworkerset.x-k8s.io/leaderworkerset` 集成，例如：
    ```yaml
    apiVersion: config.kueue.x-k8s.io/v1beta1
    kind: Configuration
@@ -32,18 +31,18 @@ For more information, see [Kueue's overview](/docs/overview).
       - "pod"
       - "leaderworkerset.x-k8s.io/leaderworkerset"
    ```
-   Also, follow steps in [Run Plain Pods](/docs/tasks/run/plain_pods/#before-you-begin)
-   to learn how to enable and configure the `pod` integration.
+   同时，请参见[运行普通 Pod](/zh-CN/docs/tasks/run/plain_pods/#before-you-begin) 中所述的步骤，
+   了解如何启用和配置 Pod 集成。
 
-3. Check [Administer cluster quotas](/docs/tasks/manage/administer_cluster_quotas) for details on the initial Kueue setup.
+3. 查阅[管理集群配额](/zh-CN/docs/tasks/manage/administer_cluster_quotas)了解初始 Kueue 设置的详细信息。
 
-## Running a LeaderWorkerSet admitted by Kueue
+## 运行一个由 Kueue 准入的 LeaderWorkerSet {#running-a-leaderworkerset-admitted-by-kueue}
 
-When running a LeaderWorkerSet on Kueue, take into consideration the following aspects:
+运行 LeaderWorkerSet 时，请考虑以下方面：
 
-### a. Queue selection
+### a. 队列选择 {#a-queue-selection}
 
-The target [local queue](/docs/concepts/local_queue) should be specified in the `metadata.labels` section of the LeaderWorkerSet configuration.
+目标[本地队列](/zh-CN/docs/concepts/local_queue)应在 LeaderWorkerSet 配置的 `metadata.labels` 部分指定。
 
 ```yaml
 metadata:
@@ -51,8 +50,8 @@ metadata:
       kueue.x-k8s.io/queue-name: user-queue
 ```
 
-### b. Configure the resource needs
-The resource needs of the workload can be configured in the `spec.template.spec.containers`.
+### b. 配置资源需求 {#b-configure-the-resource-needs}
+工作负载的资源需求可以在 `spec.template.spec.containers` 中配置。
 
 ```yaml
 spec:
@@ -71,20 +70,20 @@ spec:
                        cpu: "100m"
 ```
 
-### c. Scaling
+### c. 扩缩 {#c-scaling}
 
-You can perform scale up or scale down operations on a LeaderWorkerSet `.spec.replicas`.
+你可以对 LeaderWorkerSet `.spec.replicas` 执行扩缩操作。
 
-The unit of scaling is a LWS group. By changing the number of `replicas` in the LWS you can create
-or delete entire groups of Pods. As a result of scale up the newly created group of Pods is
-suspended by a scheduling gate, until the corresponding Workload is admitted.
+扩缩的单位是 LWS 组。通过更改 LWS 中的 `replicas` 数量，
+你可以创建或删除整个 Pod 组。
+扩容后，新建的 Pod 组会由调度门控挂起，直到相应的工作负载被准入为止。
 
-## Example
-Here is a sample LeaderWorkerSet:
+## 示例 {#examples}
+以下是一个 LeaderWorkerSet 的示例：
 
 {{< include "examples/serving-workloads/sample-leaderworkerset.yaml" "yaml" >}}
 
-You can create the LeaderWorkerSet using the following command:
+你可以使用以下命令创建 LeaderWorkerSet：
 
 ```sh
 kubectl create -f sample-leaderworkerset.yaml
diff --git a/site/hugo.toml b/site/hugo.toml
index a0a735edc..4596fe64f 100644
--- a/site/hugo.toml
+++ b/site/hugo.toml
@@ -99,10 +99,10 @@ ignoreFiles = []
   # The major.minor version tag for the version of the docs represented in this
   # branch of the repository. Used in the "version-banner" partial to display a
   # version number for this doc set.
-  version = "v0.13.1"
+  version = "v0.13.2"
 
   # Version of Kueue without the leading "v", as used for Helm charts.
-  chart_version = "0.13.1"
+  chart_version = "0.13.2"
 
   # Flag used in the "version-banner" partial to decide whether to display a
   # banner on every page indicating that this is an archived version of the docs.
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 842003191..f4314b71a 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -754,7 +754,7 @@ k8s.io/api/storage/v1
 k8s.io/api/storage/v1alpha1
 k8s.io/api/storage/v1beta1
 k8s.io/api/storagemigration/v1alpha1
-# k8s.io/apiextensions-apiserver v0.33.1
+# k8s.io/apiextensions-apiserver v0.33.3
 ## explicit; go 1.24.0
 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
@@ -1681,7 +1681,7 @@ sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/field
 sigs.k8s.io/kustomize/kyaml/yaml/merge2
 sigs.k8s.io/kustomize/kyaml/yaml/schema
 sigs.k8s.io/kustomize/kyaml/yaml/walk
-# sigs.k8s.io/lws v0.6.2
+# sigs.k8s.io/lws v0.7.0
 ## explicit; go 1.24.0
 sigs.k8s.io/lws/api/leaderworkerset/scheme
 sigs.k8s.io/lws/api/leaderworkerset/v1
diff --git a/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/leaderworkerset_types.go b/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/leaderworkerset_types.go
index ab52599fb..d190ca12f 100644
--- a/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/leaderworkerset_types.go
+++ b/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/leaderworkerset_types.go
@@ -248,6 +248,20 @@ const (
 
 // RollingUpdateConfiguration defines the parameters to be used for RollingUpdateStrategyType.
 type RollingUpdateConfiguration struct {
+	// Partition indicates the ordinal at which the lws should be partitioned for updates.
+	// During a rolling update, all the groups from ordinal Partition to Replicas-1 will be updated.
+	// The groups from 0 to Partition-1 will not be updated.
+	// This is helpful in incremental rollout strategies like canary deployments
+	// or interactive rollout strategies for multiple replicas like xPyD deployments.
+	// Once partition field and maxSurge field both set, the bursted replicas will keep remaining
+	// until the rolling update is completely done and the partition field is reset to 0.
+	// This is as expected to reduce the reconciling complexity.
+	// The default value is 0.
+	//
+	// +optional
+	// +kubebuilder:default=0
+	Partition *int32 `json:"partition,omitempty"`
+
 	// The maximum number of replicas that can be unavailable during the update.
 	// Value can be an absolute number (ex: 5) or a percentage of total replicas at the start of update (ex: 10%).
 	// Absolute number is calculated from percentage by rounding down.
@@ -365,6 +379,10 @@ const (
 //+kubebuilder:subresource:status
 //+kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas,selectorpath=.status.hpaPodSelector
 //+kubebuilder:resource:shortName={lws}
+//+kubebuilder:printcolumn:name="Ready",type="integer",JSONPath=".status.readyReplicas",description="Number of ready replicas"
+//+kubebuilder:printcolumn:name="Desired",type="integer",JSONPath=".spec.replicas",description="Number of desired replicas"
+//+kubebuilder:printcolumn:name="Up-to-date",type="integer",JSONPath=".status.updatedReplicas",description="Number of up-to-date replicas"
+//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
 
 // LeaderWorkerSet is the Schema for the leaderworkersets API
 type LeaderWorkerSet struct {
diff --git a/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/zz_generated.deepcopy.go b/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/zz_generated.deepcopy.go
index eb61e7f99..c3c59865c 100644
--- a/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/zz_generated.deepcopy.go
+++ b/vendor/sigs.k8s.io/lws/api/leaderworkerset/v1/zz_generated.deepcopy.go
@@ -188,6 +188,11 @@ func (in *NetworkConfig) DeepCopy() *NetworkConfig {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *RollingUpdateConfiguration) DeepCopyInto(out *RollingUpdateConfiguration) {
 	*out = *in
+	if in.Partition != nil {
+		in, out := &in.Partition, &out.Partition
+		*out = new(int32)
+		**out = **in
+	}
 	out.MaxUnavailable = in.MaxUnavailable
 	out.MaxSurge = in.MaxSurge
 }
@@ -208,7 +213,7 @@ func (in *RolloutStrategy) DeepCopyInto(out *RolloutStrategy) {
 	if in.RollingUpdateConfiguration != nil {
 		in, out := &in.RollingUpdateConfiguration, &out.RollingUpdateConfiguration
 		*out = new(RollingUpdateConfiguration)
-		**out = **in
+		(*in).DeepCopyInto(*out)
 	}
 }
 



Test patch:
diff --git a/pkg/cache/cache_test.go b/pkg/cache/cache_test.go
index bf8cd6b2e..6b3885757 100644
--- a/pkg/cache/cache_test.go
+++ b/pkg/cache/cache_test.go
@@ -3606,15 +3606,18 @@ func TestCohortCycles(t *testing.T) {
 		}
 
 		cohort := utiltesting.MakeCohort("cohort").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").FlavorQuotas).Obj()
+			ResourceGroup(
+				*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").Obj(),
+			).Obj()
 		if err := cache.AddOrUpdateCohort(cohort); err != nil {
 			t.Fatal("Expected success")
 		}
 
 		// Error when creating cq with parent that has cycle
 		cq := utiltesting.MakeClusterQueue("cq").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "5").FlavorQuotas).
-			Cohort("cycle").Obj()
+			ResourceGroup(
+				*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "5").Obj(),
+			).Cohort("cycle").Obj()
 		if err := cache.AddClusterQueue(ctx, cq); err == nil {
 			t.Fatal("Expected failure")
 		}
@@ -3649,15 +3652,14 @@ func TestCohortCycles(t *testing.T) {
 			t.Fatal("Expected failure")
 		}
 		cohort := utiltesting.MakeCohort("cohort").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").FlavorQuotas).Obj()
+			ResourceGroup(*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").Obj()).Obj()
 		if err := cache.AddOrUpdateCohort(cohort); err != nil {
 			t.Fatal("Expected success")
 		}
 
 		// Add CQ to cohort
 		cq := utiltesting.MakeClusterQueue("cq").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "5").FlavorQuotas).
-			Cohort("cohort").Obj()
+			ResourceGroup(*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "5").Obj()).Cohort("cohort").Obj()
 		if err := cache.AddClusterQueue(ctx, cq); err != nil {
 			t.Fatal("Expected success")
 		}
@@ -3711,7 +3713,7 @@ func TestCohortCycles(t *testing.T) {
 		}
 
 		cohort := utiltesting.MakeCohort("cohort").Parent("root1").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").FlavorQuotas).Obj()
+			ResourceGroup(*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").Obj()).Obj()
 		if err := cache.AddOrUpdateCohort(cohort); err != nil {
 			t.Fatal("Expected success")
 		}
@@ -3776,7 +3778,9 @@ func TestCohortCycles(t *testing.T) {
 		}
 
 		cohort := utiltesting.MakeCohort("cohort").Parent("cycle-root").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").FlavorQuotas).Obj()
+			ResourceGroup(
+				*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").Obj(),
+			).Obj()
 		if err := cache.AddOrUpdateCohort(cohort); err == nil {
 			t.Fatal("Expected failure")
 		}
@@ -3809,7 +3813,9 @@ func TestCohortCycles(t *testing.T) {
 		}
 
 		cohort := utiltesting.MakeCohort("cohort").Parent("root").
-			ResourceGroup(utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").FlavorQuotas).Obj()
+			ResourceGroup(
+				*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "10").Obj(),
+			).Obj()
 		if err := cache.AddOrUpdateCohort(cohort); err != nil {
 			t.Fatal("Expected success")
 		}
@@ -3863,9 +3869,9 @@ func TestSnapshotError(t *testing.T) {
 	localQueue := *utiltesting.MakeLocalQueue("lq", "default").ClusterQueue("cq").Obj()
 	clusterQueue := utiltesting.MakeClusterQueue("cq").
 		ResourceGroup(
-			utiltesting.MakeFlavorQuotas("tas-default").
+			*utiltesting.MakeFlavorQuotas("tas-default").
 				ResourceQuotaWrapper("cpu").NominalQuota("8").Append().
-				FlavorQuotas,
+				Obj(),
 		).ClusterQueue
 
 	clientBuilder := utiltesting.NewClientBuilder()
diff --git a/pkg/cache/clusterqueue_test.go b/pkg/cache/clusterqueue_test.go
index f9bc339ce..ffd99527c 100644
--- a/pkg/cache/clusterqueue_test.go
+++ b/pkg/cache/clusterqueue_test.go
@@ -498,9 +498,9 @@ func TestClusterQueueReadinessWithTAS(t *testing.T) {
 			name: "TAS CQ goes active state",
 			cq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			wantReason:  "Ready",
 			wantMessage: "Can admit new workloads",
@@ -509,15 +509,15 @@ func TestClusterQueueReadinessWithTAS(t *testing.T) {
 			name: "TAS do not support Cohorts",
 			cq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			updatedCq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("some-cohort").Obj(),
 			wantReason:  kueue.ClusterQueueActiveReasonReady,
 			wantMessage: "Can admit new workloads",
@@ -526,15 +526,15 @@ func TestClusterQueueReadinessWithTAS(t *testing.T) {
 			name: "TAS do not support Preemption",
 			cq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			updatedCq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).
 				Preemption(kueue.ClusterQueuePreemption{
 					WithinClusterQueue: kueue.PreemptionPolicyLowerPriority,
@@ -550,15 +550,15 @@ func TestClusterQueueReadinessWithTAS(t *testing.T) {
 			name: "TAS do not support MultiKueue AdmissionCheck",
 			cq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			updatedCq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).AdmissionChecks("mk-check").Obj(),
 			wantReason:  kueue.ClusterQueueActiveReasonNotSupportedWithTopologyAwareScheduling,
 			wantMessage: "Can't admit new workloads: TAS is not supported with MultiKueue admission check.",
@@ -568,9 +568,9 @@ func TestClusterQueueReadinessWithTAS(t *testing.T) {
 			skipTopology: true,
 			cq: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tas-flavor").
+					*utiltesting.MakeFlavorQuotas("tas-flavor").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			wantReason:  kueue.ClusterQueueActiveReasonTopologyNotFound,
 			wantMessage: `Can't admit new workloads: there is no Topology "example-topology" for TAS flavor "tas-flavor".`,
diff --git a/pkg/cache/fair_sharing_test.go b/pkg/cache/fair_sharing_test.go
index 8a80c4a3f..b2f9b5728 100644
--- a/pkg/cache/fair_sharing_test.go
+++ b/pkg/cache/fair_sharing_test.go
@@ -61,10 +61,10 @@ func TestDominantResourceShare(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("cq").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("2000").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -84,19 +84,19 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("2").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("8").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -128,19 +128,19 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("2").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("8").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -172,19 +172,19 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("2").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("8").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -216,19 +216,19 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("2").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("8").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			flvResQ: resources.FlavorResourceQuantities{
 				{Flavor: "default", Resource: corev1.ResourceCPU}: 4_000,
@@ -264,19 +264,19 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("2").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("2").LendingLimit("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("8").Append().
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("64").LendingLimit("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			flvResQ: resources.FlavorResourceQuantities{
 				{Flavor: "default", Resource: corev1.ResourceCPU}: 4_000,
@@ -312,20 +312,20 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("on-demand").
+					*utiltesting.MakeFlavorQuotas("on-demand").
 						ResourceQuotaWrapper("cpu").NominalQuota("20").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("spot").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("spot").
 						ResourceQuotaWrapper("cpu").NominalQuota("80").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("cpu").NominalQuota("100").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			flvResQ: resources.FlavorResourceQuantities{
 				{Flavor: "on-demand", Resource: corev1.ResourceCPU}: 10_000,
@@ -359,17 +359,17 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(resource.MustParse("2")).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -400,17 +400,17 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(resource.MustParse("0.5")).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -441,17 +441,17 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("test-cohort").
 				FairWeight(resource.MustParse("0")).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			lendingClusterQueue: utiltesting.MakeClusterQueue("lending-cq").
 				Cohort("test-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("10").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			want: []fairSharingResult{
 				{
@@ -482,16 +482,16 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("child-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("5").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			cohorts: []*kueue.Cohort{
 				utiltesting.MakeCohort("child-cohort").FairWeight(resource.MustParse("2")).Parent("root").Obj(),
 				utiltesting.MakeCohort("root").ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("45").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			},
 			want: []fairSharingResult{
@@ -523,16 +523,16 @@ func TestDominantResourceShare(t *testing.T) {
 				Cohort("child-cohort").
 				FairWeight(oneQuantity).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			cohorts: []*kueue.Cohort{
 				utiltesting.MakeCohort("child-cohort").FairWeight(resource.MustParse("2")).Parent("root").Obj(),
 				utiltesting.MakeCohort("root").ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("50").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			},
 			want: []fairSharingResult{
@@ -566,20 +566,20 @@ func TestDominantResourceShare(t *testing.T) {
 			clusterQueue: utiltesting.MakeClusterQueue("cq").
 				Cohort("child-cohort").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			cohorts: []*kueue.Cohort{
 				utiltesting.MakeCohort("child-cohort").ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("0").BorrowingLimit("10").Append().
-						FlavorQuotas,
+						Obj(),
 				).Parent("root").Obj(),
 				utiltesting.MakeCohort("root").ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper("example.com/gpu").NominalQuota("50").Append().
-						FlavorQuotas,
+						Obj(),
 				).Obj(),
 			},
 			want: []fairSharingResult{
diff --git a/pkg/cache/resource_node_test.go b/pkg/cache/resource_node_test.go
index f99062d9e..1f42eafe2 100644
--- a/pkg/cache/resource_node_test.go
+++ b/pkg/cache/resource_node_test.go
@@ -30,18 +30,18 @@ func TestCohortLendable(t *testing.T) {
 
 	cq1 := utiltesting.MakeClusterQueue("cq1").
 		ResourceGroup(
-			utiltesting.MakeFlavorQuotas("default").
+			*utiltesting.MakeFlavorQuotas("default").
 				ResourceQuotaWrapper("cpu").NominalQuota("8").LendingLimit("8").Append().
 				ResourceQuotaWrapper("example.com/gpu").NominalQuota("3").LendingLimit("3").Append().
-				FlavorQuotas,
+				Obj(),
 		).Cohort("test-cohort").
 		ClusterQueue
 
 	cq2 := utiltesting.MakeClusterQueue("cq2").
 		ResourceGroup(
-			utiltesting.MakeFlavorQuotas("default").
+			*utiltesting.MakeFlavorQuotas("default").
 				ResourceQuotaWrapper("cpu").NominalQuota("2").LendingLimit("2").Append().
-				FlavorQuotas,
+				Obj(),
 		).Cohort("test-cohort").
 		ClusterQueue
 
diff --git a/pkg/cache/snapshot_test.go b/pkg/cache/snapshot_test.go
index 0d5a0a4f3..3fb40be98 100644
--- a/pkg/cache/snapshot_test.go
+++ b/pkg/cache/snapshot_test.go
@@ -814,22 +814,22 @@ func TestSnapshot(t *testing.T) {
 				utiltesting.MakeClusterQueue("cq-autocycle").
 					Cohort("autocycle").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").Obj(),
 					).Obj(),
 				utiltesting.MakeClusterQueue("cq-a").
 					Cohort("cycle-a").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").Obj(),
 					).Obj(),
 				utiltesting.MakeClusterQueue("cq-b").
 					Cohort("cycle-b").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").Obj(),
 					).Obj(),
 				utiltesting.MakeClusterQueue("cq-nocycle").
 					Cohort("nocycle").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("arm").Resource(corev1.ResourceCPU, "0").Obj(),
 					).Obj(),
 			},
 			wantSnapshot: Snapshot{
diff --git a/pkg/cache/tas_cache_test.go b/pkg/cache/tas_cache_test.go
index a92698166..b2e751dd5 100644
--- a/pkg/cache/tas_cache_test.go
+++ b/pkg/cache/tas_cache_test.go
@@ -17,7 +17,6 @@ limitations under the License.
 package cache
 
 import (
-	"context"
 	"sort"
 	"testing"
 
@@ -38,7 +37,20 @@ import (
 	testingpod "sigs.k8s.io/kueue/pkg/util/testingjobs/pod"
 )
 
-func TestFindTopologyAssignment(t *testing.T) {
+// PodSetTestCase defines a test case for a single podset in the consolidated test.
+type PodSetTestCase struct {
+	podSetName      string
+	topologyRequest *kueue.PodSetTopologyRequest
+	requests        resources.Requests
+	count           int32
+	tolerations     []corev1.Toleration
+	nodeSelector    map[string]string
+	podSetGroupName *string
+	wantAssignment  *kueue.TopologyAssignment
+	wantReason      string
+}
+
+func TestFindTopologyAssignments(t *testing.T) {
 	const (
 		tasBlockLabel = "cloud.com/topology-block"
 		tasRackLabel  = "cloud.com/topology-rack"
@@ -291,17 +303,11 @@ func TestFindTopologyAssignment(t *testing.T) {
 
 	cases := map[string]struct {
 		enableFeatureGates []featuregate.Feature
-		wantReason         string
-		topologyRequest    *kueue.PodSetTopologyRequest
-		levels             []string
-		nodeLabels         map[string]string
-		nodeSelector       map[string]string
 		nodes              []corev1.Node
 		pods               []corev1.Pod
-		requests           resources.Requests
-		count              int32
-		tolerations        []corev1.Toleration
-		wantAssignment     *kueue.TopologyAssignment
+		levels             []string
+		nodeLabels         map[string]string
+		podSets            []PodSetTestCase
 	}{
 		"minimize the number of used racks before optimizing the number of nodes; BestFit": {
 			// Solution by optimizing the number of racks then nodes: [r3]: [x3,x4,x5,x6]
@@ -375,43 +381,45 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x3",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x4",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x5",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x6",
-						},
-					},
-				},
-			},
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x3",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"x4",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"x5",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"x6",
+							},
+						},
+					},
+				},
+			}},
 			enableFeatureGates: []featuregate.Feature{},
 		},
 		"minimize resource fragmentation; LeastFreeCapacityFit": {
@@ -453,31 +461,33 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x3",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"choose the node that can accommodate all Pods": {
@@ -518,453 +528,490 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"unconstrained; 2 pods fit into hosts scattered across the whole datacenter even they could fit into single rack; LeastFreeCapacity": {
-			nodes: scatteredNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Unconstrained: ptr.To(true),
-			},
+			nodes:  scatteredNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x4",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Unconstrained: ptr.To(true),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"no annotation; implied default to unconstrained; 6 pods fit into hosts scattered across the whole datacenter even they could fit into single rack; BestFit": {
 			nodes:  scatteredNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 4,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 4,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x4",
+						{
+							Count: 2,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"unconstrained; 6 pods fit into hosts scattered across the whole datacenter even they could fit into single rack; BestFit": {
-			nodes: scatteredNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Unconstrained: ptr.To(true),
-			},
+			nodes:  scatteredNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 4,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Unconstrained: ptr.To(true),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 4,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x4",
+						{
+							Count: 2,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"unconstrained; a single pod fits into each host; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Unconstrained: ptr.To(true),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Unconstrained: ptr.To(true),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"unconstrained; a single pod fits into each host; LeastFreeCapacity; TASProfileLeastFreeCapacity": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Unconstrained: ptr.To(true),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Unconstrained: ptr.To(true),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"unconstrained; a single pod fits into each host; LeastFreeCapacity; TASProfileMixed": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Unconstrained: ptr.To(true),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Unconstrained: ptr.To(true),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileMixed},
 		},
 		"block required; 4 pods fit into one host each; BestFit": {
-			nodes: binaryTreesNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  binaryTreesNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x3",
+						{
+							Count: 1,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x4",
+						{
+							Count: 1,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"host required; single Pod fits in the host; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"host required; single Pod fits in the host; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"host required; single Pod fits in the host; BestFit; TASProfileMixed": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileMixed},
 		},
 		"host required; single Pod fits in the largest host; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x6",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x6",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"host preferred; single Pod fits in the largest host; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x6",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x6",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"host required; no single host fits all pods, expect notFitMessage; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:              3,
-			wantAssignment:     nil,
-			wantReason:         `topology "default" allows to fit only 2 out of 3 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      3,
+				wantReason: `topology "default" allows to fit only 2 out of 3 pod(s)`,
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"host preferred; single Pod fits in the host; BestFit; TASProfileMixed": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileMixed},
 		},
 		"rack required; single Pod fits in a rack; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"b1",
-							"r1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"b1",
+								"r1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"rack required; single Pod fits in a rack; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"rack preferred; multiple Pods fits in multiple racks; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"b2",
-							"r2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"b2",
+								"r2",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"rack required; multiple Pods fit in a rack; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 3,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"b1",
-							"r2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 3,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"b1",
+								"r2",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block preferred; Pods fit in 2 blocks; BestFit": {
 			nodes: []corev1.Node{
@@ -993,370 +1040,400 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(tasBlockLabel),
-			},
 			levels: []string{tasBlockLabel},
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 5,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: []string{tasBlockLabel},
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"b2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 5,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: []string{tasBlockLabel},
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"b2",
+							},
 						},
-					},
-					{
-						Count: 4,
-						Values: []string{
-							"b3",
+						{
+							Count: 4,
+							Values: []string{
+								"b3",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"rack required; multiple Pods fit in some racks; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"b2",
-							"r2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"b2",
+								"r2",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"rack required; too many pods to fit in any rack; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      4,
-			wantReason: `topology "default" allows to fit only 3 out of 4 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      4,
+				wantReason: `topology "default" allows to fit only 3 out of 4 pod(s)`,
+			}},
 		},
 		"block required; single Pod fits in a block; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x5",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x5",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"block required; two Pods fits in a block; LeastFreeCapacityFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 2,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x5",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 2,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x5",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x6",
+						{
+							Count: 1,
+							Values: []string{
+								"x6",
+							},
 						},
 					},
 				},
-			},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"block required; single Pod fits in a block and a single rack; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: []string{
-					tasBlockLabel,
-					tasRackLabel,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
 				},
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"b2",
-							"r1",
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: []string{
+						tasBlockLabel,
+						tasRackLabel,
+					},
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"b2",
+								"r1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required; single Pod fits in a block spread across two racks; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: []string{
-					tasBlockLabel,
-					tasRackLabel,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
 				},
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"b1",
-							"r2",
-						},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: []string{
+						tasBlockLabel,
+						tasRackLabel,
 					},
-					{
-						Count: 1,
-						Values: []string{
-							"b1",
-							"r1",
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"b1",
+								"r2",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"b1",
+								"r1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required; Pods fit in a block spread across two racks; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"b1",
-							"r2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"b1",
+								"r2",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"b1",
-							"r1",
+						{
+							Count: 1,
+							Values: []string{
+								"b1",
+								"r1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required; single Pod which cannot be split; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 4000,
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 4000,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			}},
 		},
 		"block required; too many Pods to fit requested; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      5,
-			wantReason: `topology "default" allows to fit only 4 out of 5 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      5,
+				wantReason: `topology "default" allows to fit only 4 out of 5 pod(s)`,
+			}},
 		},
 		"rack required; single Pod requiring memory; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceMemory: 1024,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 4,
-						Values: []string{
-							"b1",
-							"r1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceMemory: 1024,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 4,
+							Values: []string{
+								"b1",
+								"r1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"rack preferred; but only block can accommodate the workload; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"b1",
-							"r2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"b1",
+								"r2",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"b1",
-							"r1",
+						{
+							Count: 1,
+							Values: []string{
+								"b1",
+								"r1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"rack preferred; but only multiple blocks can accommodate the workload; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(tasRackLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"b1",
-							"r2",
-						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"b2",
-							"r2",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"b1",
-							"r1",
-						},
-					},
-				},
-			},
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"b1",
+								"r2",
+							},
+						},
+						{
+							Count: 2,
+							Values: []string{
+								"b2",
+								"r2",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"b1",
+								"r1",
+							},
+						},
+					},
+				},
+			}},
 		},
 		"block preferred; but only multiple blocks can accommodate the workload; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultTwoLevels,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"b1",
-							"r2",
-						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"b2",
-							"r2",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"b1",
-							"r1",
-						},
-					},
-				},
-			},
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultTwoLevels,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"b1",
+								"r2",
+							},
+						},
+						{
+							Count: 2,
+							Values: []string{
+								"b2",
+								"r2",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"b1",
+								"r1",
+							},
+						},
+					},
+				},
+			}},
 		},
 		"block preferred; but the workload cannot be accommodate in entire topology; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred: ptr.To(tasBlockLabel),
-			},
+			nodes:  defaultNodes,
 			levels: defaultTwoLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      10,
-			wantReason: `topology "default" allows to fit only 7 out of 10 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred: ptr.To(tasBlockLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      10,
+				wantReason: `topology "default" allows to fit only 7 out of 10 pod(s)`,
+			}},
 		},
 		"only nodes with matching labels are considered; no matching node; BestFit": {
 			nodes: []corev1.Node{
@@ -1370,18 +1447,20 @@ func TestFindTopologyAssignment(t *testing.T) {
 					}).
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			levels: defaultOneLevel,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "no topology domains at level: kubernetes.io/hostname",
+			}},
 			nodeLabels: map[string]string{
 				"zone": "zone-b",
 			},
-			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "no topology domains at level: kubernetes.io/hostname",
 		},
 		"only nodes with matching labels are considered; matching node is found; BestFit": {
 			nodes: []corev1.Node{
@@ -1396,27 +1475,29 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
-			nodeLabels: map[string]string{
-				"zone": "zone-a",
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
+			}},
+			nodeLabels: map[string]string{
+				"zone": "zone-a",
 			},
 		},
 		"only nodes with matching levels are considered; no host label on node; BestFit": {
@@ -1433,15 +1514,17 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(tasRackLabel),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "no topology domains at level: cloud.com/topology-rack",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(tasRackLabel),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "no topology domains at level: cloud.com/topology-rack",
+			}},
 		},
 		"don't consider unscheduled Pods when computing capacity; BestFit": {
 			// the Pod is not scheduled (no NodeName set, so is not blocking capacity)
@@ -1461,25 +1544,27 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Request(corev1.ResourceCPU, "600m").
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 600,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 600,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"don't consider terminal pods when computing the capacity; BestFit": {
 			nodes: []corev1.Node{
@@ -1503,25 +1588,27 @@ func TestFindTopologyAssignment(t *testing.T) {
 					StatusPhase(corev1.PodSucceeded).
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 600,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 600,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"include usage from pending scheduled non-TAS pods, blocked assignment; BestFit": {
 			// there is not enough free capacity on the only node x1
@@ -1542,15 +1629,17 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Request(corev1.ResourceCPU, "600m").
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 600,
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 600,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			}},
 		},
 		"include usage from running non-TAS pods, blocked assignment; BestFit": {
 			// there is not enough free capacity on the only node x1
@@ -1571,15 +1660,17 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Request(corev1.ResourceCPU, "600m").
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 600,
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 600,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			}},
 		},
 		"include usage from running non-TAS pods, found free capacity on another node; BestFit": {
 			// there is not enough free capacity on the node x1 as the
@@ -1609,25 +1700,27 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Request(corev1.ResourceCPU, "600m").
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 600,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 600,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"no assignment as node is not ready; BestFit": {
 			nodes: []corev1.Node{
@@ -1646,18 +1739,20 @@ func TestFindTopologyAssignment(t *testing.T) {
 					}).
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			levels: defaultOneLevel,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "no topology domains at level: kubernetes.io/hostname",
+			}},
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
-			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "no topology domains at level: kubernetes.io/hostname",
 		},
 		"no assignment as node is unschedulable; BestFit": {
 			nodes: []corev1.Node{
@@ -1673,18 +1768,20 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Unschedulable().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			levels: defaultOneLevel,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "no topology domains at level: kubernetes.io/hostname",
+			}},
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
-			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "no topology domains at level: kubernetes.io/hostname",
 		},
 		"skip node which has untolerated taint; BestFit": {
 			nodes: []corev1.Node{
@@ -1704,18 +1801,20 @@ func TestFindTopologyAssignment(t *testing.T) {
 					}).
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			}},
 		},
 		"allow to schedule on node with tolerated taint; BestFit": {
 			nodes: []corev1.Node{
@@ -1735,34 +1834,36 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			tolerations: []corev1.Toleration{
-				{
-					Key:      "example.com/gpu",
-					Value:    "present",
-					Operator: corev1.TolerationOpEqual,
-				},
-			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
-			nodeLabels: map[string]string{
-				"zone": "zone-a",
-			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
+				tolerations: []corev1.Toleration{
+					{
+						Key:      "example.com/gpu",
+						Value:    "present",
+						Operator: corev1.TolerationOpEqual,
+					},
+				},
+			}},
+			nodeLabels: map[string]string{
+				"zone": "zone-a",
 			},
 		},
 		"no assignment as node does not have enough allocatable pods (.status.allocatable['pods']); BestFit": {
@@ -1784,18 +1885,20 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Request(corev1.ResourceCPU, "300m").
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 300,
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 300,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			}},
 		},
 		"skip node which doesn't match node selector, missing label; BestFit": {
 			nodes: []corev1.Node{
@@ -1810,21 +1913,24 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 300,
-			},
-			nodeSelector: map[string]string{
-				"custom-label-1": "custom-value-1",
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 300,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+				nodeSelector: map[string]string{
+					"custom-label-1": "custom-value-1",
+				},
+			}},
 		},
 		"skip node which doesn't match node selector, label exists, value doesn't match; BestFit": {
 			nodes: []corev1.Node{
@@ -1840,21 +1946,23 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
+			levels: defaultOneLevel,
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
-			nodeSelector: map[string]string{
-				"custom-label-1": "value-2",
-			},
-			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 300,
-			},
-			count:      1,
-			wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 300,
+				},
+				count:      1,
+				wantReason: `topology "default" doesn't allow to fit any of 1 pod(s)`,
+				nodeSelector: map[string]string{
+					"custom-label-1": "value-2",
+				},
+			}},
 		},
 		"allow to schedule on node which matches node; BestFit": {
 			nodes: []corev1.Node{
@@ -1881,31 +1989,34 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required: ptr.To(corev1.LabelHostname),
-			},
 			nodeLabels: map[string]string{
 				"zone": "zone-a",
 			},
-			nodeSelector: map[string]string{
-				"custom-label-1": "value-2",
-			},
+
 			levels: defaultOneLevel,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 1,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 1,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
 						},
 					},
 				},
-			},
+				nodeSelector: map[string]string{
+					"custom-label-1": "value-2",
+				},
+			}},
 		},
 		"block required for podset; host required for slices; BestFit": {
 			//        b1
@@ -1946,39 +2057,41 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x3",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x2",
+						{
+							Count: 2,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x1",
+						{
+							Count: 2,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required for podset; host required for slices; prioritize more free slice capacity first and then tight fit; BestFit": {
 			//           b1
@@ -2029,39 +2142,41 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 12,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 6,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 12,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 6,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 4,
-						Values: []string{
-							"x3",
+						{
+							Count: 4,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x4",
+						{
+							Count: 2,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required for podset; host required for slices; select domains with tight fit; BestFit": {
 			//        b1
@@ -2102,33 +2217,35 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x3",
+						{
+							Count: 2,
+							Values: []string{
+								"x3",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required for podset; rack required for slices; BestFit": {
 
@@ -2209,81 +2326,85 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x1",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x3",
-						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x4",
-						},
-					},
-				},
-			},
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x1",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"x3",
+							},
+						},
+						{
+							Count: 1,
+							Values: []string{
+								"x4",
+							},
+						},
+					},
+				},
+			}},
 		},
 		"block preferred for podset; rack required for slices; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred:                   ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred:                   ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x3",
+						{
+							Count: 1,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x6",
+						{
+							Count: 2,
+							Values: []string{
+								"x6",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required for podset; host required for slices; optimize last domain; BestFit": {
 			//        b1
@@ -2324,33 +2445,35 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 4,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 4,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x3",
+						{
+							Count: 2,
+							Values: []string{
+								"x3",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required for podset; host required for slices; LeastFreeCapacity": {
 			//        b1
@@ -2391,33 +2514,35 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x2",
-						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x3",
-						},
-					},
-				},
-			},
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x2",
+							},
+						},
+						{
+							Count: 2,
+							Values: []string{
+								"x3",
+							},
+						},
+					},
+				},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"block preferred for podset; host required for slices; LeastFreeCapacity": {
@@ -2480,39 +2605,41 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred:                   ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 8,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x2",
-						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x3",
-						},
-					},
-					{
-						Count: 4,
-						Values: []string{
-							"x1",
-						},
-					},
-				},
-			},
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred:                   ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 8,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x2",
+							},
+						},
+						{
+							Count: 2,
+							Values: []string{
+								"x3",
+							},
+						},
+						{
+							Count: 4,
+							Values: []string{
+								"x1",
+							},
+						},
+					},
+				},
+			}},
 			enableFeatureGates: []featuregate.Feature{features.TASProfileLeastFreeCapacity},
 		},
 		"block preferred for podset; host required for slices; 2 blocks with unbalanced subdomains; BestFit": {
@@ -2565,39 +2692,41 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Preferred:                   ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(3)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 12,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Preferred:                   ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(3)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 12,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 3,
-						Values: []string{
-							"x2",
+						{
+							Count: 3,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 6,
-						Values: []string{
-							"x4",
+						{
+							Count: 6,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"block required for podset; rack required for slices; podset fits in a block, but slices do not fit in racks": {
 
@@ -2638,17 +2767,19 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
-				PodSetSliceSize:             ptr.To(int32(3)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      6,
-			wantReason: `topology "default" doesn't allow to fit any of 2 slice(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
+					PodSetSliceSize:             ptr.To(int32(3)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      6,
+				wantReason: `topology "default" doesn't allow to fit any of 2 slice(s)`,
+			}},
 		},
 		"block required for podset; rack required for slices; only 1 out of 2 slices fit the topology": {
 
@@ -2699,17 +2830,19 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
-				PodSetSliceSize:             ptr.To(int32(3)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      6,
-			wantReason: `topology "default" allows to fit only 1 out of 2 slice(s)`,
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
+					PodSetSliceSize:             ptr.To(int32(3)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      6,
+				wantReason: `topology "default" allows to fit only 1 out of 2 slice(s)`,
+			}},
 		},
 		"block required for podset; rack required for slices; podset fits in both blocks, but slices fit in only one block": {
 
@@ -2770,74 +2903,82 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
-				PodSetSliceSize:             ptr.To(int32(3)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 3,
-						Values: []string{
-							"x4",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
+					PodSetSliceSize:             ptr.To(int32(3)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 3,
+							Values: []string{
+								"x4",
+							},
 						},
-					},
-					{
-						Count: 3,
-						Values: []string{
-							"x5",
+						{
+							Count: 3,
+							Values: []string{
+								"x5",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"slice required topology level cannot be above the main required topology level": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(corev1.LabelHostname),
-				PodSetSliceRequiredTopology: ptr.To(tasBlockLabel),
-				PodSetSliceSize:             ptr.To(int32(1)),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "podset slice topology cloud.com/topology-block is above the podset topology kubernetes.io/hostname",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(corev1.LabelHostname),
+					PodSetSliceRequiredTopology: ptr.To(tasBlockLabel),
+					PodSetSliceSize:             ptr.To(int32(1)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "podset slice topology cloud.com/topology-block is above the podset topology kubernetes.io/hostname",
+			}},
 		},
 		"slice size is required when slice topology is requested": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(tasBlockLabel),
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "slice topology requested, but slice size not provided",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(tasBlockLabel),
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "slice topology requested, but slice size not provided",
+			}},
 		},
 		"cannot request not existing slice topology": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				Required:                    ptr.To(string(tasBlockLabel)),
-				PodSetSliceRequiredTopology: ptr.To("not-existing-topology-level"),
-				PodSetSliceSize:             ptr.To(int32(1)),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count:      1,
-			wantReason: "no requested topology level for slices: not-existing-topology-level",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					Required:                    ptr.To(string(tasBlockLabel)),
+					PodSetSliceRequiredTopology: ptr.To("not-existing-topology-level"),
+					PodSetSliceSize:             ptr.To(int32(1)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count:      1,
+				wantReason: "no requested topology level for slices: not-existing-topology-level",
+			}},
 		},
 		"no topology for podset; host required for slices; BestFit": {
 			//        b1
@@ -2878,1031 +3019,878 @@ func TestFindTopologyAssignment(t *testing.T) {
 					Ready().
 					Obj(),
 			},
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 2,
-						Values: []string{
-							"x3",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 2,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x2",
+						{
+							Count: 2,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x1",
+						{
+							Count: 2,
+							Values: []string{
+								"x1",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"no topology for podset; host required for slices; multiple blocks; BestFit": {
-			nodes: scatteredNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
+			nodes:  scatteredNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 6,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 4,
-						Values: []string{
-							"x1",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 6,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 4,
+							Values: []string{
+								"x1",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x4",
+						{
+							Count: 2,
+							Values: []string{
+								"x4",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
 		"no topology for podset; rack required for slices; multiple blocks; BestFit": {
-			nodes: defaultNodes,
-			topologyRequest: &kueue.PodSetTopologyRequest{
-				PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
-				PodSetSliceSize:             ptr.To(int32(2)),
-			},
+			nodes:  defaultNodes,
 			levels: defaultThreeLevels,
-			requests: resources.Requests{
-				corev1.ResourceCPU: 1000,
-			},
-			count: 4,
-			wantAssignment: &kueue.TopologyAssignment{
-				Levels: defaultOneLevel,
-				Domains: []kueue.TopologyDomainAssignment{
-					{
-						Count: 1,
-						Values: []string{
-							"x2",
+			podSets: []PodSetTestCase{{
+				topologyRequest: &kueue.PodSetTopologyRequest{
+					PodSetSliceRequiredTopology: ptr.To(tasRackLabel),
+					PodSetSliceSize:             ptr.To(int32(2)),
+				},
+				requests: resources.Requests{
+					corev1.ResourceCPU: 1000,
+				},
+				count: 4,
+				wantAssignment: &kueue.TopologyAssignment{
+					Levels: defaultOneLevel,
+					Domains: []kueue.TopologyDomainAssignment{
+						{
+							Count: 1,
+							Values: []string{
+								"x2",
+							},
 						},
-					},
-					{
-						Count: 1,
-						Values: []string{
-							"x3",
+						{
+							Count: 1,
+							Values: []string{
+								"x3",
+							},
 						},
-					},
-					{
-						Count: 2,
-						Values: []string{
-							"x6",
+						{
+							Count: 2,
+							Values: []string{
+								"x6",
+							},
 						},
 					},
 				},
-			},
+			}},
 		},
-	}
-	for name, tc := range cases {
-		t.Run(name, func(t *testing.T) {
-			ctx, _ := utiltesting.ContextWithLog(t)
-			// TODO: remove after dropping the TAS profiles feature gates
-			for _, gate := range tc.enableFeatureGates {
-				features.SetFeatureGateDuringTest(t, gate, true)
-			}
-
-			initialObjects := make([]client.Object, 0)
-			for i := range tc.nodes {
-				initialObjects = append(initialObjects, &tc.nodes[i])
-			}
-			for i := range tc.pods {
-				initialObjects = append(initialObjects, &tc.pods[i])
-			}
-			clientBuilder := utiltesting.NewClientBuilder()
-			clientBuilder.WithObjects(initialObjects...)
-			_ = tasindexer.SetupIndexes(ctx, utiltesting.AsIndexer(clientBuilder))
-			client := clientBuilder.Build()
-
-			tasCache := NewTASCache(client)
-			topologyInformation := topologyInformation{
-				Levels: tc.levels,
-			}
-			flavorInformation := flavorInformation{
-				TopologyName: "default",
-				NodeLabels:   tc.nodeLabels,
-				Tolerations:  tc.tolerations,
-			}
-			tasFlavorCache := tasCache.NewTASFlavorCache(topologyInformation, flavorInformation)
-
-			snapshot, err := tasFlavorCache.snapshot(ctx)
-			if err != nil {
-				t.Fatalf("failed to build the snapshot: %v", err)
-			}
-			tasInput := TASPodSetRequests{
-				PodSet: &kueue.PodSet{
-					Name:            kueue.DefaultPodSetName,
-					TopologyRequest: tc.topologyRequest,
-					Template: corev1.PodTemplateSpec{
-						Spec: corev1.PodSpec{
-							Tolerations:  tc.tolerations,
-							NodeSelector: tc.nodeSelector,
+		"find topology assignment for two podsets with overlapping domain": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1").
+					Label(tasBlockLabel, "b1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2").
+					Label(tasBlockLabel, "b2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b3").
+					Label(tasBlockLabel, "b3").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel},
+			podSets: []PodSetTestCase{
+				{
+					podSetName: "podset1",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Preferred: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+					},
+					count: 3,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 2,
+								Values: []string{
+									"b1",
+								},
+							},
+							{
+								Count: 1,
+								Values: []string{
+									"b2",
+								},
+							},
 						},
 					},
 				},
-				SinglePodRequests: tc.requests,
-				Count:             tc.count,
-			}
-			if tc.topologyRequest == nil {
-				tasInput.Implied = true
-			}
-			flavorTASRequests := []TASPodSetRequests{tasInput}
-			wantResult := make(TASAssignmentsResult)
-			wantMainPodSetResult := tasPodSetAssignmentResult{
-				FailureReason: tc.wantReason,
-			}
-			if tc.wantAssignment != nil {
-				sort.Slice(tc.wantAssignment.Domains, func(i, j int) bool {
-					return utiltas.DomainID(tc.wantAssignment.Domains[i].Values) < utiltas.DomainID(tc.wantAssignment.Domains[j].Values)
-				})
-				wantMainPodSetResult.TopologyAssignment = tc.wantAssignment
-			}
-			wantResult[kueue.DefaultPodSetName] = wantMainPodSetResult
-			gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-			if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-				t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-			}
-		})
-	}
-}
-
-func TestFindTopologyAssignmentForTwoPodSets(t *testing.T) {
-	const (
-		tasBlockLabel = "cloud.com/topology-block"
-		tasRackLabel  = "cloud.com/topology-rack"
-	)
-
-	t.Run("find topology assignment for two podsets with overlapping domain", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b3").
-				Label(tasBlockLabel, "b3").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		requests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Preferred: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
 				{
-					Count: 2,
-					Values: []string{
-						"b1",
+					podSetName: "podset2",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Preferred: ptr.To(tasBlockLabel),
 					},
-				},
-				{
-					Count: 1,
-					Values: []string{
-						"b2",
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+					},
+					count: 3,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"b2",
+								},
+							},
+							{
+								Count: 2,
+								Values: []string{
+									"b3",
+								},
+							},
+						},
 					},
 				},
 			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
+		},
+		"find topology assignment for two podsets with the same group": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1").
+					Label(tasBlockLabel, "b1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:    resource.MustParse("2"),
+						"example.com/gpu":     resource.MustParse("2"),
+						corev1.ResourceMemory: resource.MustParse("2Gi"),
+						corev1.ResourcePods:   resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2").
+					Label(tasBlockLabel, "b2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("5"),
+						"example.com/gpu":   resource.MustParse("4"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b3").
+					Label(tasBlockLabel, "b3").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						"example.com/gpu":   resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel},
+			podSets: []PodSetTestCase{
 				{
-					Count: 1,
-					Values: []string{
-						"b2",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
 					},
-				},
-				{
-					Count: 2,
-					Values: []string{
-						"b3",
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
 					},
-				},
-			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("podset1", topologyRequest, requests, 3, "group1")
-		tasInput2 := buildTASInput("podset2", topologyRequest, requests, 3, "group2")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["podset1"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["podset2"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:    resource.MustParse("2"),
-					"example.com/gpu":     resource.MustParse("2"),
-					corev1.ResourceMemory: resource.MustParse("2Gi"),
-					corev1.ResourcePods:   resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("5"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b3").
-				Label(tasBlockLabel, "b3").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					"example.com/gpu":   resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
-				{
-					Count: 1,
-					Values: []string{
-						"b2",
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           1,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"b2",
+								},
+							},
+						},
 					},
 				},
-			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
 				{
-					Count: 4,
-					Values: []string{
-						"b2",
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
 					},
-				},
-			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 4, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["workers"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group with domains that can tightly fit leader and workers", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("0"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("8"),
-					"example.com/gpu":   resource.MustParse("8"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b3").
-				Label(tasBlockLabel, "b3").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("14"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 10000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
-				{
-					Count: 1,
-					Values: []string{
-						"b3",
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           4,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 4,
+								Values: []string{
+									"b2",
+								},
+							},
+						},
 					},
 				},
 			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
+		},
+		"find topology assignment for two podsets with the same group with domains that can tightly fit leader and workers": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1").
+					Label(tasBlockLabel, "b1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						"example.com/gpu":   resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2").
+					Label(tasBlockLabel, "b2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("8"),
+						"example.com/gpu":   resource.MustParse("8"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b3").
+					Label(tasBlockLabel, "b3").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						"example.com/gpu":   resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel},
+			podSets: []PodSetTestCase{
 				{
-					Count: 4,
-					Values: []string{
-						"b3",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+					},
+					count: 1,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count:  1,
+								Values: []string{"b1"},
+							},
+						},
 					},
 				},
-			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 4, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["workers"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group with domains that can tightly fit leader and workers", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("20"),
-					"example.com/gpu":   resource.MustParse("0"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("8"),
-					"example.com/gpu":   resource.MustParse("8"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b3").
-				Label(tasBlockLabel, "b3").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("14"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 10000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
 				{
-					Count: 1,
-					Values: []string{
-						"b3",
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  2,
+					},
+					count: 4,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count:  4,
+								Values: []string{"b2"},
+							},
+						},
 					},
 				},
 			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
+		},
+		"find topology assignment for two podsets with the same group - no fit": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1").
+					Label(tasBlockLabel, "b1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						"example.com/gpu":   resource.MustParse("0"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2").
+					Label(tasBlockLabel, "b2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("4"),
+						"example.com/gpu":   resource.MustParse("4"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel},
+			podSets: []PodSetTestCase{
 				{
-					Count: 4,
-					Values: []string{
-						"b3",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
 					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           1,
+					wantAssignment:  nil,
+					wantReason:      `topology "default" allows to fit only 4 out of 4 pod(s)`,
 				},
-			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 4, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["workers"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group - no fit", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					"example.com/gpu":   resource.MustParse("0"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("4"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 4, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(nil, ptr.To(`topology "default" allows to fit only 4 out of 4 pod(s)`))
-		wantResult["workers"] = buildWantedResult(nil, ptr.To(`topology "default" allows to fit only 4 out of 4 pod(s)`))
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group - optimizes domain for both leader and workers", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("11"),
-					"example.com/gpu":   resource.MustParse("8"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("4"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
 				{
-					Count: 1,
-					Values: []string{
-						"b1",
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
 					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           4,
+					wantAssignment:  nil,
+					wantReason:      `topology "default" allows to fit only 4 out of 4 pod(s)`,
 				},
 			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{tasBlockLabel},
-			Domains: []kueue.TopologyDomainAssignment{
+		},
+		"find topology assignment for two podsets with the same group - optimizes domain for both leader and workers": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1").
+					Label(tasBlockLabel, "b1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("11"),
+						"example.com/gpu":   resource.MustParse("8"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2").
+					Label(tasBlockLabel, "b2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("4"),
+						"example.com/gpu":   resource.MustParse("4"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel},
+			podSets: []PodSetTestCase{
 				{
-					Count: 4,
-					Values: []string{
-						"b1",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           1,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"b1",
+								},
+							},
+						},
 					},
 				},
-			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 4, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["workers"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group - leader does not fit anywhere", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1").
-				Label(tasBlockLabel, "b1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("4"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2").
-				Label(tasBlockLabel, "b2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("4"),
-					"example.com/gpu":   resource.MustParse("4"),
-					corev1.ResourcePods: resource.MustParse("10"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 4, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(nil, ptr.To(`topology "default" allows to fit only 4 out of 4 pod(s)`))
-		wantResult["workers"] = buildWantedResult(nil, ptr.To(`topology "default" allows to fit only 4 out of 4 pod(s)`))
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group - multiple hosts", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		//       b1              b2
-		//        |               |
-		//       r1              r2
-		//    /   |   \       /   |   \
-		//  x1   x2   x3    x4   x5   x6
-		//
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1-r1-x1").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r1").
-				Label(corev1.LabelHostname, "x1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b1-r1-x2").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r1").
-				Label(corev1.LabelHostname, "x2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b1-r1-x3").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r1").
-				Label(corev1.LabelHostname, "x3").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r4-x4").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r4").
-				Label(corev1.LabelHostname, "x4").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r5-x5").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r5").
-				Label(corev1.LabelHostname, "x5").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r6-x6").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r6").
-				Label(corev1.LabelHostname, "x6").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("2"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel, tasRackLabel, corev1.LabelHostname}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 2000,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 2000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{corev1.LabelHostname},
-			Domains: []kueue.TopologyDomainAssignment{
 				{
-					Count: 1,
-					Values: []string{
-						"x1",
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           4,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{tasBlockLabel},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 4,
+								Values: []string{
+									"b1",
+								},
+							},
+						},
 					},
 				},
 			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{corev1.LabelHostname},
-			Domains: []kueue.TopologyDomainAssignment{
+		},
+		"find topology assignment for two podsets with the same group - leader does not fit anywhere": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1").
+					Label(tasBlockLabel, "b1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("4"),
+						"example.com/gpu":   resource.MustParse("4"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2").
+					Label(tasBlockLabel, "b2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("4"),
+						"example.com/gpu":   resource.MustParse("4"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel},
+			podSets: []PodSetTestCase{
 				{
-					Count: 1,
-					Values: []string{
-						"x2",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
 					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 10000,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           1,
+					wantReason:      `topology "default" allows to fit only 4 out of 4 pod(s)`,
 				},
 				{
-					Count: 1,
-					Values: []string{
-						"x3",
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
 					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           4,
+					wantReason:      `topology "default" allows to fit only 4 out of 4 pod(s)`,
 				},
 			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 2, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["workers"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-
-	t.Run("find topology assignment for two podsets with the same group requesting same resources and nodes in the same rack", func(t *testing.T) {
-		ctx, _ := utiltesting.ContextWithLog(t)
-		//         b1                 b2
-		//        /   \             /    \
-		//      r1     r2         r3     r4
-		//    /  |     |  \     /  |     |  \
-		//  x1  x2    x3  x4  x5   x6   x7   x8
-		//
-		nodes := []corev1.Node{
-			*testingnode.MakeNode("b1-r1-x1").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r1").
-				Label(corev1.LabelHostname, "x1").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b1-r1-x2").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r1").
-				Label(corev1.LabelHostname, "x2").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b1-r2-x3").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r2").
-				Label(corev1.LabelHostname, "x3").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b1-r2-x4").
-				Label(tasBlockLabel, "b1").
-				Label(tasRackLabel, "r2").
-				Label(corev1.LabelHostname, "x4").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r3-x5").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r3").
-				Label(corev1.LabelHostname, "x5").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r3-x6").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r3").
-				Label(corev1.LabelHostname, "x6").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r4-x7").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r4").
-				Label(corev1.LabelHostname, "x7").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-			*testingnode.MakeNode("b2-r4-x8").
-				Label(tasBlockLabel, "b2").
-				Label(tasRackLabel, "r4").
-				Label(corev1.LabelHostname, "x8").
-				StatusAllocatable(corev1.ResourceList{
-					corev1.ResourceCPU:  resource.MustParse("1"),
-					corev1.ResourcePods: resource.MustParse("10"),
-					"example.com/gpu":   resource.MustParse("1"),
-				}).
-				Ready().
-				Obj(),
-		}
-		levels := []string{tasBlockLabel, tasRackLabel, corev1.LabelHostname}
-		leaderRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		workersRequests := resources.Requests{
-			corev1.ResourceCPU: 1000,
-			"example.com/gpu":  1,
-		}
-		topologyRequest := &kueue.PodSetTopologyRequest{
-			Required: ptr.To(tasBlockLabel),
-		}
-		wantAssignment1 := &kueue.TopologyAssignment{
-			Levels: []string{corev1.LabelHostname},
-			Domains: []kueue.TopologyDomainAssignment{
+		},
+		"find topology assignment for two podsets with the same group - multiple hosts": {
+			//       b1              b2
+			//        |               |
+			//       r1              r2
+			//    /   |   \       /   |   \
+			//  x1   x2   x3    x4   x5   x6
+			//
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1-r1-x1").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r1").
+					Label(corev1.LabelHostname, "x1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b1-r1-x2").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r1").
+					Label(corev1.LabelHostname, "x2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b1-r1-x3").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r1").
+					Label(corev1.LabelHostname, "x3").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r4-x4").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r4").
+					Label(corev1.LabelHostname, "x4").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r5-x5").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r5").
+					Label(corev1.LabelHostname, "x5").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r6-x6").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r6").
+					Label(corev1.LabelHostname, "x6").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("2"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+			},
+			levels: []string{tasBlockLabel, tasRackLabel, corev1.LabelHostname},
+			podSets: []PodSetTestCase{
 				{
-					Count: 1,
-					Values: []string{
-						"x1",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 2000,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           1,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{corev1.LabelHostname},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"x1",
+								},
+							},
+						},
 					},
 				},
+				{
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           2,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{corev1.LabelHostname},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"x2",
+								},
+							},
+							{
+								Count: 1,
+								Values: []string{
+									"x3",
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+		"find topology assignment for two podsets with the same group requesting same resources and nodes in the same rack": {
+			//         b1                 b2
+			//        /   \             /    \
+			//      r1     r2         r3     r4
+			//    /  |     |  \     /  |     |  \
+			//  x1  x2    x3  x4  x5   x6   x7   x8
+			//
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("b1-r1-x1").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r1").
+					Label(corev1.LabelHostname, "x1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b1-r1-x2").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r1").
+					Label(corev1.LabelHostname, "x2").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b1-r2-x3").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r2").
+					Label(corev1.LabelHostname, "x3").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b1-r2-x4").
+					Label(tasBlockLabel, "b1").
+					Label(tasRackLabel, "r2").
+					Label(corev1.LabelHostname, "x4").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r3-x5").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r3").
+					Label(corev1.LabelHostname, "x5").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r3-x6").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r3").
+					Label(corev1.LabelHostname, "x6").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r4-x7").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r4").
+					Label(corev1.LabelHostname, "x7").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
+				*testingnode.MakeNode("b2-r4-x8").
+					Label(tasBlockLabel, "b2").
+					Label(tasRackLabel, "r4").
+					Label(corev1.LabelHostname, "x8").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("1"),
+						corev1.ResourcePods: resource.MustParse("10"),
+						"example.com/gpu":   resource.MustParse("1"),
+					}).
+					Ready().
+					Obj(),
 			},
-		}
-		wantAssignment2 := &kueue.TopologyAssignment{
-			Levels: []string{corev1.LabelHostname},
-			Domains: []kueue.TopologyDomainAssignment{
+			levels: []string{tasBlockLabel, tasRackLabel, corev1.LabelHostname},
+			podSets: []PodSetTestCase{
 				{
-					Count: 1,
-					Values: []string{
-						"x2",
+					podSetName: "leader",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           1,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{corev1.LabelHostname},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"x1",
+								},
+							},
+						},
 					},
 				},
 				{
-					Count: 1,
-					Values: []string{
-						"x3",
+					podSetName: "workers",
+					topologyRequest: &kueue.PodSetTopologyRequest{
+						Required: ptr.To(tasBlockLabel),
+					},
+					requests: resources.Requests{
+						corev1.ResourceCPU: 1000,
+						"example.com/gpu":  1,
+					},
+					podSetGroupName: ptr.To("sameGroup"),
+					count:           2,
+					wantAssignment: &kueue.TopologyAssignment{
+						Levels: []string{corev1.LabelHostname},
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"x2",
+								},
+							},
+							{
+								Count: 1,
+								Values: []string{
+									"x3",
+								},
+							},
+						},
 					},
 				},
 			},
-		}
-
-		snapshot := buildSnapshot(ctx, t, nodes, levels)
-
-		tasInput1 := buildTASInput("leader", topologyRequest, leaderRequests, 1, "sameGroup")
-		tasInput2 := buildTASInput("workers", topologyRequest, workersRequests, 2, "sameGroup")
-
-		flavorTASRequests := []TASPodSetRequests{tasInput1, tasInput2}
-
-		wantResult := make(TASAssignmentsResult)
-		wantResult["leader"] = buildWantedResult(wantAssignment1, nil)
-		wantResult["workers"] = buildWantedResult(wantAssignment2, nil)
-
-		gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
-		if diff := cmp.Diff(wantResult, gotResult); diff != "" {
-			t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
-		}
-	})
-}
-
-func buildSnapshot(ctx context.Context, t *testing.T, nodes []corev1.Node, levels []string) *TASFlavorSnapshot {
-	initialObjects := make([]client.Object, 0)
-	for i := range nodes {
-		initialObjects = append(initialObjects, &nodes[i])
+		},
 	}
-	clientBuilder := utiltesting.NewClientBuilder()
-	clientBuilder.WithObjects(initialObjects...)
-	_ = tasindexer.SetupIndexes(ctx, utiltesting.AsIndexer(clientBuilder))
-	client := clientBuilder.Build()
+	for name, tc := range cases {
+		t.Run(name, func(t *testing.T) {
+			ctx, _ := utiltesting.ContextWithLog(t)
+			// TODO: remove after dropping the TAS profiles feature gates
+			for _, gate := range tc.enableFeatureGates {
+				features.SetFeatureGateDuringTest(t, gate, true)
+			}
 
-	tasCache := NewTASCache(client)
-	topologyInformation := topologyInformation{
-		Levels: levels,
-	}
-	flavorInformation := flavorInformation{
-		TopologyName: "default",
-	}
-	tasFlavorCache := tasCache.NewTASFlavorCache(topologyInformation, flavorInformation)
+			initialObjects := make([]client.Object, 0)
+			for i := range tc.nodes {
+				initialObjects = append(initialObjects, &tc.nodes[i])
+			}
+			for i := range tc.pods {
+				initialObjects = append(initialObjects, &tc.pods[i])
+			}
+			clientBuilder := utiltesting.NewClientBuilder()
+			clientBuilder.WithObjects(initialObjects...)
+			_ = tasindexer.SetupIndexes(ctx, utiltesting.AsIndexer(clientBuilder))
+			client := clientBuilder.Build()
 
-	snapshot, err := tasFlavorCache.snapshot(ctx)
-	if err != nil {
-		t.Fatalf("failed to build the snapshot: %v", err)
-	}
-	return snapshot
-}
+			tasCache := NewTASCache(client)
+			topologyInformation := topologyInformation{
+				Levels: tc.levels,
+			}
+			flavorInformation := flavorInformation{
+				TopologyName: "default",
+				NodeLabels:   tc.nodeLabels,
+			}
+			tasFlavorCache := tasCache.NewTASFlavorCache(topologyInformation, flavorInformation)
 
-func buildTASInput(podsetName kueue.PodSetReference, topologyRequest *kueue.PodSetTopologyRequest, requests resources.Requests, podCount int32, podSetGroupName string) TASPodSetRequests {
-	return TASPodSetRequests{
-		PodSet: &kueue.PodSet{
-			Name:            podsetName,
-			TopologyRequest: topologyRequest,
-			Template: corev1.PodTemplateSpec{
-				Spec: corev1.PodSpec{
-					Tolerations:  []corev1.Toleration{},
-					NodeSelector: map[string]string{},
-				},
-			},
-		},
-		PodSetGroupName:   &podSetGroupName,
-		SinglePodRequests: requests,
-		Count:             podCount,
-	}
-}
-func buildWantedResult(wantAssignment *kueue.TopologyAssignment, reason *string) tasPodSetAssignmentResult {
-	wantPodSetResult := tasPodSetAssignmentResult{
-		FailureReason: "",
-	}
+			snapshot, err := tasFlavorCache.snapshot(ctx)
+			if err != nil {
+				t.Fatalf("failed to build the snapshot: %v", err)
+			}
 
-	if reason != nil {
-		wantPodSetResult.FailureReason = *reason
+			flavorTASRequests := make([]TASPodSetRequests, 0, len(tc.podSets))
+			wantResult := make(TASAssignmentsResult)
+			for _, ps := range tc.podSets {
+				tasInput := TASPodSetRequests{
+					PodSet: &kueue.PodSet{
+						Name:            kueue.PodSetReference(ps.podSetName),
+						TopologyRequest: ps.topologyRequest,
+						Template: corev1.PodTemplateSpec{
+							Spec: corev1.PodSpec{
+								Tolerations:  ps.tolerations,
+								NodeSelector: ps.nodeSelector,
+							},
+						},
+					},
+					SinglePodRequests: ps.requests,
+					Count:             ps.count,
+				}
+				if ps.podSetGroupName != nil {
+					tasInput.PodSetGroupName = ps.podSetGroupName
+				}
+				if ps.topologyRequest == nil {
+					tasInput.Implied = true
+				}
+				flavorTASRequests = append(flavorTASRequests, tasInput)
+
+				wantPodSetResult := tasPodSetAssignmentResult{
+					FailureReason: ps.wantReason,
+				}
+				if ps.wantAssignment != nil {
+					sort.Slice(ps.wantAssignment.Domains, func(i, j int) bool {
+						return utiltas.DomainID(ps.wantAssignment.Domains[i].Values) < utiltas.DomainID(ps.wantAssignment.Domains[j].Values)
+					})
+					wantPodSetResult.TopologyAssignment = ps.wantAssignment
+				}
+				wantResult[kueue.PodSetReference(ps.podSetName)] = wantPodSetResult
+			}
+			gotResult := snapshot.FindTopologyAssignmentsForFlavor(flavorTASRequests)
+			if diff := cmp.Diff(wantResult, gotResult); diff != "" {
+				t.Errorf("unexpected topology assignment (-want,+got): %s", diff)
+			}
+		})
 	}
-
-	wantPodSetResult.TopologyAssignment = wantAssignment
-	return wantPodSetResult
 }
diff --git a/pkg/controller/core/cohort_controller_test.go b/pkg/controller/core/cohort_controller_test.go
index 326e68097..1c856f75d 100644
--- a/pkg/controller/core/cohort_controller_test.go
+++ b/pkg/controller/core/cohort_controller_test.go
@@ -188,7 +188,7 @@ func TestCohortReconcileErrorOtherThanNotFoundNotDeleted(t *testing.T) {
 func TestCohortReconcileLifecycle(t *testing.T) {
 	ctx := t.Context()
 	cohort := utiltesting.MakeCohort("cohort").ResourceGroup(
-		utiltesting.MakeFlavorQuotas("red").Resource("cpu", "10").FlavorQuotas,
+		*utiltesting.MakeFlavorQuotas("red").Resource("cpu", "10").Obj(),
 	).Obj()
 	cl := utiltesting.NewClientBuilder().WithObjects(cohort).WithStatusSubresource(&kueue.Cohort{}).Build()
 	cache := cache.New(cl)
@@ -227,7 +227,7 @@ func TestCohortReconcileLifecycle(t *testing.T) {
 			t.Fatal("unexpected error")
 		}
 		cohort.Spec.ResourceGroups[0] = utiltesting.ResourceGroup(
-			utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").FlavorQuotas,
+			*utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").Obj(),
 		)
 		if err := cl.Update(ctx, cohort); err != nil {
 			t.Fatal("unexpected error updating cohort", err)
@@ -310,19 +310,19 @@ func TestCohortReconcilerFilters(t *testing.T) {
 	}{
 		"unchanged returns false": {
 			old: utiltesting.MakeCohort("cohort").ResourceGroup(
-				utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").FlavorQuotas,
+				*utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").Obj(),
 			).Obj(),
 			new: utiltesting.MakeCohort("cohort").ResourceGroup(
-				utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").FlavorQuotas,
+				*utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").Obj(),
 			).Obj(),
 			want: false,
 		},
 		"changed resource returns true": {
 			old: utiltesting.MakeCohort("cohort").ResourceGroup(
-				utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").FlavorQuotas,
+				*utiltesting.MakeFlavorQuotas("red").Resource("cpu", "5").Obj(),
 			).Obj(),
 			new: utiltesting.MakeCohort("cohort").ResourceGroup(
-				utiltesting.MakeFlavorQuotas("red").Resource("cpu", "10").FlavorQuotas,
+				*utiltesting.MakeFlavorQuotas("red").Resource("cpu", "10").Obj(),
 			).Obj(),
 			want: true,
 		},
diff --git a/pkg/controller/jobs/pod/pod_webhook_test.go b/pkg/controller/jobs/pod/pod_webhook_test.go
index cc383995d..371d484d5 100644
--- a/pkg/controller/jobs/pod/pod_webhook_test.go
+++ b/pkg/controller/jobs/pod/pod_webhook_test.go
@@ -106,6 +106,7 @@ func TestDefault(t *testing.T) {
 				Queue("test-queue").
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				Obj(),
 		},
@@ -120,6 +121,7 @@ func TestDefault(t *testing.T) {
 				Queue("test-queue").
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				Obj(),
 		},
@@ -133,6 +135,7 @@ func TestDefault(t *testing.T) {
 			want: testingpod.MakePod("test-pod", defaultNamespace.Name).
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				Obj(),
 		},
@@ -151,6 +154,7 @@ func TestDefault(t *testing.T) {
 				Queue("test-queue").
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				OwnerReference("parent-job", batchv1.SchemeGroupVersion.WithKind("Job")).
 				Obj(),
@@ -361,6 +365,7 @@ func TestDefault(t *testing.T) {
 				Annotation(kueuealpha.PodSetRequiredTopologyAnnotation, "block").
 				ManagedByKueueLabel().
 				KueueFinalizer().
+				RoleHash("a9f06f3a").
 				KueueSchedulingGate().
 				TopologySchedulingGate().
 				Obj(),
@@ -383,6 +388,7 @@ func TestDefault(t *testing.T) {
 				Label("test-label", "test-value").
 				Label(kueuealpha.PodGroupPodIndexLabel, "test-value").
 				ManagedByKueueLabel().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				KueueSchedulingGate().
 				TopologySchedulingGate().
@@ -400,6 +406,7 @@ func TestDefault(t *testing.T) {
 				Queue("default").
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				Obj(),
 		},
@@ -427,6 +434,7 @@ func TestDefault(t *testing.T) {
 				Queue("queue").
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				Obj(),
 		},
@@ -440,6 +448,7 @@ func TestDefault(t *testing.T) {
 				Queue("queue").
 				ManagedByKueueLabel().
 				KueueSchedulingGate().
+				RoleHash("a9f06f3a").
 				KueueFinalizer().
 				Obj(),
 		},
@@ -464,6 +473,7 @@ func TestDefault(t *testing.T) {
 			want: testingpod.MakePod("test-pod", defaultNamespace.Name).
 				Queue("queue").
 				ManagedByKueueLabel().
+				RoleHash("a9f06f3a").
 				KueueSchedulingGate().
 				KueueFinalizer().
 				Obj(),
@@ -491,6 +501,7 @@ func TestDefault(t *testing.T) {
 				Label(corev1.LabelMetadataName, "test-pod").
 				Queue("queue").
 				ManagedByKueueLabel().
+				RoleHash("a9f06f3a").
 				KueueSchedulingGate().
 				KueueFinalizer().
 				Obj(),
diff --git a/pkg/scheduler/flavorassigner/flavorassigner_test.go b/pkg/scheduler/flavorassigner/flavorassigner_test.go
index 67768df63..7f726a656 100644
--- a/pkg/scheduler/flavorassigner/flavorassigner_test.go
+++ b/pkg/scheduler/flavorassigner/flavorassigner_test.go
@@ -118,10 +118,10 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						Resource(corev1.ResourceCPU, "1").
 						Resource(corev1.ResourceMemory, "2Mi").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantRepMode: Fit,
 			wantAssignment: Assignment{
@@ -159,9 +159,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tainted").
+					*utiltesting.MakeFlavorQuotas("tainted").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantRepMode: Fit,
@@ -187,9 +187,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("taint_and_toleration").
+					*utiltesting.MakeFlavorQuotas("taint_and_toleration").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantRepMode: Fit,
@@ -217,9 +217,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "default", Resource: corev1.ResourceCPU}: 3_000,
@@ -251,20 +251,20 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "2").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("b_one").
+					*utiltesting.MakeFlavorQuotas("b_one").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("b_two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("b_two").
 						Resource(corev1.ResourceMemory, "5Gi").
-						FlavorQuotas,
+						Obj(),
 				).
 				ClusterQueue,
 			wantRepMode: Fit,
@@ -300,12 +300,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "9").
-						FlavorQuotas,
+						Obj(),
 				).
 				ClusterQueue,
 			wantRepMode: Fit,
@@ -352,17 +352,17 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "10").
 						Resource(corev1.ResourceMemory, "10").
-						FlavorQuotas,
+						Obj(),
 				).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("two").
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
 						Resource(corev1.ResourceMemory, "5").
 						Resource("example.com/gpu", "4").
-						FlavorQuotas,
+						Obj(),
 				).
 				ClusterQueue,
 			wantRepMode: Fit,
@@ -415,14 +415,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
 						Resource("example.com/gpu", "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
 						Resource("example.com/gpu", "0").
-						FlavorQuotas,
+						Obj(),
 				).
 				ClusterQueue,
 			wantRepMode: NoFit,
@@ -463,13 +463,13 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "3").
-						FlavorQuotas,
+						Obj(),
 				).ResourceGroup(
-				utiltesting.MakeFlavorQuotas("b_one").
+				*utiltesting.MakeFlavorQuotas("b_one").
 					Resource(corev1.ResourceMemory, "1Mi").
-					FlavorQuotas,
+					Obj(),
 			).ClusterQueue,
 
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -501,21 +501,21 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "2").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "15Mi").
-						FlavorQuotas,
+						Obj(),
 				).ResourceGroup(
-				utiltesting.MakeFlavorQuotas("b_one").
+				*utiltesting.MakeFlavorQuotas("b_one").
 					Resource("example.com/gpu", "4").
-					FlavorQuotas,
-				utiltesting.MakeFlavorQuotas("b_two").
+					Obj(),
+				*utiltesting.MakeFlavorQuotas("b_two").
 					Resource("example.com/gpu", "2").
-					FlavorQuotas,
+					Obj(),
 			).ClusterQueue,
 
 			wantRepMode: Fit,
@@ -551,18 +551,18 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "2").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "15Mi").
-						FlavorQuotas,
+						Obj(),
 				).ResourceGroup(
-				utiltesting.MakeFlavorQuotas("b_one").
+				*utiltesting.MakeFlavorQuotas("b_one").
 					Resource("example.com/gpu", "4").
-					FlavorQuotas,
+					Obj(),
 			).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -570,9 +570,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("b_one").
+					*utiltesting.MakeFlavorQuotas("b_one").
 						Resource("example.com/gpu", "0").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -620,14 +620,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "2").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "5Mi").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantAssignment: Assignment{
 				PodSets: []PodSetAssignment{{
@@ -653,12 +653,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("tainted").
+					*utiltesting.MakeFlavorQuotas("tainted").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantRepMode: Fit,
 			wantAssignment: Assignment{
@@ -703,12 +703,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantRepMode: Fit,
 			wantAssignment: Assignment{
@@ -752,14 +752,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantRepMode: Fit,
@@ -818,12 +818,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantRepMode: Fit,
@@ -866,12 +866,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantAssignment: Assignment{
@@ -900,12 +900,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantRepMode: Fit,
@@ -951,10 +951,10 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("2").BorrowingLimit("98").Append().
 						Resource(corev1.ResourceMemory, "2Gi").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
@@ -1009,15 +1009,15 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").LendingLimit("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1044,9 +1044,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("2").BorrowingLimit("8").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -1054,9 +1054,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "98").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1093,9 +1093,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "2").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}: 1_000,
@@ -1126,18 +1126,18 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "3").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}: 2_000,
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "7").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1176,12 +1176,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}: 3_000,
@@ -1225,12 +1225,12 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("tainted").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("tainted").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}:     3_000,
@@ -1282,9 +1282,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "4").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantAssignment: Assignment{
 				PodSets: []PodSetAssignment{{
@@ -1306,10 +1306,10 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						Resource(corev1.ResourcePods, "3").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantAssignment: Assignment{
@@ -1341,10 +1341,10 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						Resource(corev1.ResourcePods, "2").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 
 			wantAssignment: Assignment{
@@ -1374,10 +1374,10 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("default").
+					*utiltesting.MakeFlavorQuotas("default").
 						Resource(corev1.ResourcePods, "3").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantAssignment: Assignment{
 				PodSets: []PodSetAssignment{{
@@ -1409,14 +1409,14 @@ func TestAssignFlavors(t *testing.T) {
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				FlavorFungibility(kueue.FlavorFungibility{WhenCanBorrow: kueue.Borrow, WhenCanPreempt: kueue.Preempt}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}: 2_000,
@@ -1450,14 +1450,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}: 2_000,
@@ -1491,14 +1491,14 @@ func TestAssignFlavors(t *testing.T) {
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				FlavorFungibility(kueue.FlavorFungibility{WhenCanBorrow: kueue.TryNextFlavor, WhenCanPreempt: kueue.TryNextFlavor}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").BorrowingLimit("1").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -1506,9 +1506,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1542,14 +1542,14 @@ func TestAssignFlavors(t *testing.T) {
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				FlavorFungibility(kueue.FlavorFungibility{WhenCanBorrow: kueue.TryNextFlavor, WhenCanPreempt: kueue.TryNextFlavor}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").BorrowingLimit("1").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -1558,9 +1558,9 @@ func TestAssignFlavors(t *testing.T) {
 
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1592,14 +1592,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").BorrowingLimit("1").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -1607,9 +1607,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1652,18 +1652,18 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanPreempt: kueue.Preempt,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("0").BorrowingLimit("12").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1710,18 +1710,18 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanPreempt: kueue.Preempt,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "0").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1768,19 +1768,19 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanPreempt: kueue.Preempt,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("0").BorrowingLimit("12").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1815,15 +1815,15 @@ func TestAssignFlavors(t *testing.T) {
 					},
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("0").BorrowingLimit("12").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "11").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1857,14 +1857,14 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanPreempt: kueue.TryNextFlavor},
 				).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").LendingLimit("1").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").LendingLimit("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -1872,9 +1872,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1907,14 +1907,14 @@ func TestAssignFlavors(t *testing.T) {
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				FlavorFungibility(kueue.FlavorFungibility{WhenCanBorrow: kueue.TryNextFlavor, WhenCanPreempt: kueue.TryNextFlavor}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").LendingLimit("1").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("1").LendingLimit("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -1922,9 +1922,9 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "1").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -1964,22 +1964,22 @@ func TestAssignFlavors(t *testing.T) {
 					},
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("0").BorrowingLimit("2").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("0").BorrowingLimit("2").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").
 				ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("2").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("2").Append().
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -2015,20 +2015,20 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "10").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("10").LendingLimit("0").Append().
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			clusterQueueUsage: resources.FlavorResourceQuantities{
 				{Flavor: "one", Resource: corev1.ResourceCPU}: 2_000,
 			},
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourcePods, "0").
 						Resource(corev1.ResourceCPU, "0").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -2068,18 +2068,18 @@ func TestAssignFlavors(t *testing.T) {
 				Preemption(kueue.ClusterQueuePreemption{ReclaimWithinCohort: kueue.PreemptionPolicyAny}).
 				FlavorFungibility(kueue.FlavorFungibility{WhenCanBorrow: kueue.Borrow, WhenCanPreempt: kueue.Preempt}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "0").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -2119,18 +2119,18 @@ func TestAssignFlavors(t *testing.T) {
 				Preemption(kueue.ClusterQueuePreemption{ReclaimWithinCohort: kueue.PreemptionPolicyNever}).
 				FlavorFungibility(kueue.FlavorFungibility{WhenCanBorrow: kueue.Borrow, WhenCanPreempt: kueue.Preempt}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "0").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).Cohort("test-cohort").ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("test-secondary-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "12").
-						FlavorQuotas,
+						Obj(),
 				).
 				Cohort("test-cohort").
 				Obj(),
@@ -2167,14 +2167,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "2").
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "2Gi").
-						FlavorQuotas,
+						Obj(),
 				).
 				ClusterQueue,
 			preemptWorkloadSlice: &workload.Info{
@@ -2222,14 +2222,14 @@ func TestAssignFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "500m"). // <-- does not fit after scale-up.
 						Resource(corev1.ResourceMemory, "1Gi").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "4").
 						Resource(corev1.ResourceMemory, "2Gi").
-						FlavorQuotas,
+						Obj(),
 				).
 				ClusterQueue,
 			preemptWorkloadSlice: &workload.Info{
@@ -2278,22 +2278,22 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanBorrow:  kueue.TryNextFlavor,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("cq-secondary").
 				Cohort("cohort").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
+						Obj(),
 				).
 				Obj(),
 			secondaryClusterQueueUsage: resources.FlavorResourceQuantities{
@@ -2332,22 +2332,22 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanBorrow:  kueue.TryNextFlavor,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("cq-secondary").
 				Cohort("cohort").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
+						Obj(),
 				).
 				Obj(),
 			clusterQueueUsage: resources.FlavorResourceQuantities{
@@ -2386,22 +2386,22 @@ func TestAssignFlavors(t *testing.T) {
 					WhenCanBorrow:  kueue.TryNextFlavor,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "10").
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			secondaryClusterQueue: utiltesting.MakeClusterQueue("cq-secondary").
 				Cohort("cohort").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").
+					*utiltesting.MakeFlavorQuotas("one").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("two").
 						Resource(corev1.ResourceCPU, "5").
-						FlavorQuotas,
+						Obj(),
 				).
 				Obj(),
 			wantRepMode: Fit,
@@ -2603,16 +2603,16 @@ func TestReclaimBeforePriorityPreemption(t *testing.T) {
 					WhenCanPreempt: kueue.TryNextFlavor,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("uno").Resource("compute", "10").Resource("gpu", "10").FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("due").Resource("compute", "10").Resource("gpu", "10").FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("tre").Resource("compute", "10").Resource("gpu", "10").FlavorQuotas,
+					*utiltesting.MakeFlavorQuotas("uno").Resource("compute", "10").Resource("gpu", "10").Obj(),
+					*utiltesting.MakeFlavorQuotas("due").Resource("compute", "10").Resource("gpu", "10").Obj(),
+					*utiltesting.MakeFlavorQuotas("tre").Resource("compute", "10").Resource("gpu", "10").Obj(),
 				).ClusterQueue
 			otherCq := utiltesting.MakeClusterQueue("other-clusterqueue").
 				Cohort("cohort").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("uno").Resource("compute", "0").Resource("gpu", "0").FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("due").Resource("compute", "0").Resource("gpu", "0").FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("tre").Resource("compute", "0").Resource("gpu", "0").FlavorQuotas,
+					*utiltesting.MakeFlavorQuotas("uno").Resource("compute", "0").Resource("gpu", "0").Obj(),
+					*utiltesting.MakeFlavorQuotas("due").Resource("compute", "0").Resource("gpu", "0").Obj(),
+					*utiltesting.MakeFlavorQuotas("tre").Resource("compute", "0").Resource("gpu", "0").Obj(),
 				).ClusterQueue
 
 			wlInfo := workload.NewInfo(&kueue.Workload{
@@ -2684,12 +2684,12 @@ func TestDeletedFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("deleted-flavor").
+					*utiltesting.MakeFlavorQuotas("deleted-flavor").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("4").Append().
-						FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("flavor").
+						Obj(),
+					*utiltesting.MakeFlavorQuotas("flavor").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("4").Append().
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantRepMode: Fit,
 			wantAssignment: Assignment{
@@ -2716,9 +2716,9 @@ func TestDeletedFlavors(t *testing.T) {
 			},
 			clusterQueue: utiltesting.MakeClusterQueue("test-clusterqueue").
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("deleted-flavor").
+					*utiltesting.MakeFlavorQuotas("deleted-flavor").
 						ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("4").Append().
-						FlavorQuotas,
+						Obj(),
 				).ClusterQueue,
 			wantAssignment: Assignment{
 				PodSets: []PodSetAssignment{{
@@ -2902,18 +2902,18 @@ func TestHierarchical(t *testing.T) {
 					ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
 				}).
 				ResourceGroup(
-					utiltesting.MakeFlavorQuotas("one").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("two").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
-					utiltesting.MakeFlavorQuotas("three").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
+					*utiltesting.MakeFlavorQuotas("one").Resource(corev1.ResourceCPU, "0").Obj(),
+					*utiltesting.MakeFlavorQuotas("two").Resource(corev1.ResourceCPU, "0").Obj(),
+					*utiltesting.MakeFlavorQuotas("three").Resource(corev1.ResourceCPU, "0").Obj(),
 				).
 				FlavorFungibility(kueue.FlavorFungibility{
 					WhenCanPreempt: kueue.TryNextFlavor,
 				}).ClusterQueue
 			otherCq := utiltesting.MakeClusterQueue("other-clusterqueue").
 				Cohort("two").ResourceGroup(
-				utiltesting.MakeFlavorQuotas("one").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
-				utiltesting.MakeFlavorQuotas("two").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
-				utiltesting.MakeFlavorQuotas("three").Resource(corev1.ResourceCPU, "0").FlavorQuotas,
+				*utiltesting.MakeFlavorQuotas("one").Resource(corev1.ResourceCPU, "0").Obj(),
+				*utiltesting.MakeFlavorQuotas("two").Resource(corev1.ResourceCPU, "0").Obj(),
+				*utiltesting.MakeFlavorQuotas("three").Resource(corev1.ResourceCPU, "0").Obj(),
 			).ClusterQueue
 
 			wlInfo := workload.NewInfo(&kueue.Workload{
diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go
index c006c2867..626f05d0d 100644
--- a/pkg/scheduler/scheduler_test.go
+++ b/pkg/scheduler/scheduler_test.go
@@ -2747,8 +2747,8 @@ func TestSchedule(t *testing.T) {
 						ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
 					}).
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "10").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "10").Obj(),
 					).
 					Obj(),
 				*utiltesting.MakeClusterQueue("other-beta").
@@ -2758,8 +2758,8 @@ func TestSchedule(t *testing.T) {
 						ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
 					}).
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -2810,15 +2810,15 @@ func TestSchedule(t *testing.T) {
 						ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
 					}).
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "7").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "7").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "7").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "7").Obj(),
 					).
 					Obj(),
 				*utiltesting.MakeClusterQueue("other-beta").
 					Cohort("other").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "3").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "3").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "3").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "3").Obj(),
 					).
 					Obj(),
 			},
@@ -2866,15 +2866,15 @@ func TestSchedule(t *testing.T) {
 						ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
 					}).
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "10").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "10").Obj(),
 					).
 					Obj(),
 				*utiltesting.MakeClusterQueue("other-beta").
 					Cohort("other").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -2930,15 +2930,15 @@ func TestSchedule(t *testing.T) {
 						ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
 					}).
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "10").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "10").Obj(),
 					).
 					Obj(),
 				*utiltesting.MakeClusterQueue("other-beta").
 					Cohort("other").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
-						utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
+						*utiltesting.MakeFlavorQuotas("spot").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -3018,7 +3018,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("CQ1").
 					Cohort("other").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").Obj(),
 					).
 					Obj(),
 				*utiltesting.MakeClusterQueue("CQ2").
@@ -3027,13 +3027,13 @@ func TestSchedule(t *testing.T) {
 						ReclaimWithinCohort: kueue.PreemptionPolicyAny,
 					}).
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "10").Obj(),
 					).
 					Obj(),
 				*utiltesting.MakeClusterQueue("CQ3").
 					Cohort("other").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -3092,7 +3092,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("ClusterQueueA").
 					Cohort("root").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "2").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "2").Obj(),
 					).
 					Preemption(kueue.ClusterQueuePreemption{
 						ReclaimWithinCohort: kueue.PreemptionPolicyAny,
@@ -3101,7 +3101,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("ClusterQueueB").
 					Cohort("root").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -3145,7 +3145,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("ClusterQueueA").
 					Cohort("root").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "2").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "2").Obj(),
 					).
 					Preemption(kueue.ClusterQueuePreemption{
 						ReclaimWithinCohort: kueue.PreemptionPolicyLowerPriority,
@@ -3154,7 +3154,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("ClusterQueueB").
 					Cohort("root").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -3196,7 +3196,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("ClusterQueueA").
 					Cohort("root").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "2").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "2").Obj(),
 					).
 					Preemption(kueue.ClusterQueuePreemption{
 						ReclaimWithinCohort: kueue.PreemptionPolicyNever,
@@ -3205,7 +3205,7 @@ func TestSchedule(t *testing.T) {
 				*utiltesting.MakeClusterQueue("ClusterQueueB").
 					Cohort("root").
 					ResourceGroup(
-						utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").FlavorQuotas,
+						*utiltesting.MakeFlavorQuotas("on-demand").Resource("gpu", "0").Obj(),
 					).
 					Obj(),
 			},
@@ -4993,6 +4993,72 @@ func TestScheduleForTAS(t *testing.T) {
 
 		featureGates []featuregate.Feature
 	}{
+		"workload with a PodSet of size zero": {
+			nodes: []corev1.Node{
+				*testingnode.MakeNode("x1").
+					Label("tas-node", "true").
+					Label(tasRackLabel, "r1").
+					Label(corev1.LabelHostname, "x1").
+					StatusAllocatable(corev1.ResourceList{
+						corev1.ResourceCPU:  resource.MustParse("3"),
+						corev1.ResourcePods: resource.MustParse("10"),
+					}).
+					Ready().
+					Obj(),
+			},
+			topologies:      []kueuealpha.Topology{defaultTwoLevelTopology},
+			resourceFlavors: []kueue.ResourceFlavor{defaultTASTwoLevelFlavor},
+			clusterQueues:   []kueue.ClusterQueue{defaultClusterQueue},
+			workloads: []kueue.Workload{
+				*utiltesting.MakeWorkload("foo", "default").
+					Queue("tas-main").
+					PodSets(
+						*utiltesting.MakePodSet("launcher", 1).
+							PreferredTopologyRequest(corev1.LabelHostname).
+							Request(corev1.ResourceCPU, "1").
+							Obj(),
+						*utiltesting.MakePodSet("worker", 0).
+							PreferredTopologyRequest(corev1.LabelHostname).
+							Request(corev1.ResourceCPU, "1").
+							Obj()).
+					Obj(),
+			},
+			wantNewAssignments: map[workload.Reference]kueue.Admission{
+				"default/foo": *utiltesting.MakeAdmission("tas-main", "launcher", "worker").
+					Assignment(corev1.ResourceCPU, "tas-default", "1000m").
+					AssignmentPodCount(1).
+					TopologyAssignment(&kueue.TopologyAssignment{
+						Levels: utiltas.Levels(&defaultSingleLevelTopology),
+						Domains: []kueue.TopologyDomainAssignment{
+							{
+								Count: 1,
+								Values: []string{
+									"x1",
+								},
+							},
+						},
+					}).
+					AssignmentWithIndex(1, corev1.ResourceCPU, "tas-default", "0").
+					AssignmentPodCountWithIndex(1, 0).
+					TopologyAssignmentWithIndex(1, &kueue.TopologyAssignment{
+						Levels: utiltas.Levels(&defaultSingleLevelTopology),
+					}).
+					Obj(),
+			},
+			eventCmpOpts: cmp.Options{eventIgnoreMessage},
+			wantEvents: []utiltesting.EventRecord{
+				{
+					Key:       types.NamespacedName{Namespace: "default", Name: "foo"},
+					Reason:    "QuotaReserved",
+					EventType: corev1.EventTypeNormal,
+				},
+				{
+					Key:       types.NamespacedName{Namespace: "default", Name: "foo"},
+					Reason:    "Admitted",
+					EventType: corev1.EventTypeNormal,
+				},
+			},
+		},
 		"workload in CQ with ProvisioningRequest; second pass; baseline scenario": {
 			nodes:           defaultSingleNode,
 			admissionChecks: []kueue.AdmissionCheck{defaultProvCheck},
diff --git a/test/e2e/kueueviz/package-lock.json b/test/e2e/kueueviz/package-lock.json
index 0bde63d83..f99adb7c1 100644
--- a/test/e2e/kueueviz/package-lock.json
+++ b/test/e2e/kueueviz/package-lock.json
@@ -1,15 +1,15 @@
 {
   "name": "kueueviz-frontend-tests",
-  "version": "0.13.1",
+  "version": "0.13.2",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "kueueviz-frontend-tests",
-      "version": "0.13.1",
+      "version": "0.13.2",
       "devDependencies": {
         "@testing-library/cypress": "^10.0.3",
-        "cypress": "^14.5.2",
+        "cypress": "^14.5.3",
         "depcheck": "^1.4.7"
       }
     },
@@ -140,9 +140,9 @@
       }
     },
     "node_modules/@cypress/request": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.8.tgz",
-      "integrity": "sha512-h0NFgh1mJmm1nr4jCwkGHwKneVYKghUyWe6TMNrk0B9zsjAJxpg8C4/+BAcmLgCPa1vj1V8rNUaILl+zYRUWBQ==",
+      "version": "3.0.9",
+      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz",
+      "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -152,7 +152,7 @@
         "combined-stream": "~1.0.6",
         "extend": "~3.0.2",
         "forever-agent": "~0.6.1",
-        "form-data": "~4.0.0",
+        "form-data": "~4.0.4",
         "http-signature": "~1.4.0",
         "is-typedarray": "~1.0.0",
         "isstream": "~0.1.2",
@@ -1025,14 +1025,14 @@
       }
     },
     "node_modules/cypress": {
-      "version": "14.5.2",
-      "resolved": "https://registry.npmjs.org/cypress/-/cypress-14.5.2.tgz",
-      "integrity": "sha512-O4E4CEBqDHLDrJD/dfStHPcM+8qFgVVZ89Li7xDU0yL/JxO/V0PEcfF2I8aGa7uA2MGNLkNUAnghPM83UcHOJw==",
+      "version": "14.5.3",
+      "resolved": "https://registry.npmjs.org/cypress/-/cypress-14.5.3.tgz",
+      "integrity": "sha512-syLwKjDeMg77FRRx68bytLdlqHXDT4yBVh0/PPkcgesChYDjUZbwxLqMXuryYKzAyJsPsQHUDW1YU74/IYEUIA==",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
       "dependencies": {
-        "@cypress/request": "^3.0.8",
+        "@cypress/request": "^3.0.9",
         "@cypress/xvfb": "^1.2.4",
         "@types/sinonjs__fake-timers": "8.1.1",
         "@types/sizzle": "^2.3.2",
@@ -3269,9 +3269,9 @@
       "license": "MIT"
     },
     "node_modules/tmp": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
-      "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz",
+      "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==",
       "dev": true,
       "license": "MIT",
       "engines": {
diff --git a/test/e2e/kueueviz/package.json b/test/e2e/kueueviz/package.json
index 8e795ee83..f65afe4b3 100644
--- a/test/e2e/kueueviz/package.json
+++ b/test/e2e/kueueviz/package.json
@@ -1,13 +1,13 @@
 {
   "name": "kueueviz-frontend-tests",
-  "version": "0.13.1",
+  "version": "0.13.2",
   "scripts": {
     "cypress:run": "cypress run --headless",
     "check-unused": "depcheck"
   },
   "devDependencies": {
     "@testing-library/cypress": "^10.0.3",
-    "cypress": "^14.5.2",
+    "cypress": "^14.5.3",
     "depcheck": "^1.4.7"
   }
 }
diff --git a/test/e2e/singlecluster/pod_test.go b/test/e2e/singlecluster/pod_test.go
index b8d35ee72..ddb43b866 100644
--- a/test/e2e/singlecluster/pod_test.go
+++ b/test/e2e/singlecluster/pod_test.go
@@ -30,6 +30,8 @@ import (
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
 	kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1"
+	"sigs.k8s.io/kueue/pkg/constants"
+	controllerconsts "sigs.k8s.io/kueue/pkg/controller/constants"
 	"sigs.k8s.io/kueue/pkg/controller/jobs/pod"
 	podconstants "sigs.k8s.io/kueue/pkg/controller/jobs/pod/constants"
 	"sigs.k8s.io/kueue/pkg/util/testing"
@@ -551,5 +553,68 @@ var _ = ginkgo.Describe("Pod groups", func() {
 				util.ExpectWorkloadToFinish(ctx, k8sClient, defaultGroupKey)
 			})
 		})
+
+		ginkgo.It("Pod should be admitted after the group labels are added", func() {
+			ginkgo.By("creating a pod", func() {
+				p := podtesting.MakePod("pod-0", ns.Name).
+					Image(util.GetAgnHostImage(), util.BehaviorExitFast).
+					RequestAndLimit(corev1.ResourceCPU, "1").
+					Label("app-role", "worker").
+					Annotation(podconstants.SuspendedByParentAnnotation, "OtherController").
+					KueueSchedulingGate().
+					Obj()
+				util.MustCreate(ctx, k8sClient, p)
+
+				gomega.Eventually(func(g gomega.Gomega) {
+					var createdPod corev1.Pod
+					g.Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(p), &createdPod)).To(gomega.Succeed())
+					g.Expect(createdPod.Spec.SchedulingGates).To(gomega.ContainElement(corev1.PodSchedulingGate{Name: podconstants.SchedulingGateName}))
+					g.Expect(createdPod.Annotations).To(gomega.HaveKey(podconstants.RoleHashAnnotation))
+				}, util.Timeout, util.Interval).Should(gomega.Succeed())
+			})
+			ginkgo.By("Add the group annotations and labels to the pod", func() {
+				var p corev1.Pod
+				pKey := client.ObjectKey{Namespace: ns.Name, Name: "pod-0"}
+				gomega.Expect(k8sClient.Get(ctx, pKey, &p)).To(gomega.Succeed())
+
+				p.Labels[podconstants.GroupNameLabel] = "test-group"
+				p.Annotations[podconstants.GroupTotalCountAnnotation] = "1"
+				p.Annotations[podconstants.SuspendedByParentAnnotation] = "OtherController"
+				p.Labels[controllerconsts.QueueLabel] = lq.Name
+				p.Labels[constants.ManagedByKueueLabelKey] = constants.ManagedByKueueLabelValue
+				gomega.Expect(k8sClient.Update(ctx, &p)).To(gomega.Succeed())
+
+				var podWithHash corev1.Pod
+				gomega.Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(&p), &podWithHash)).To(gomega.Succeed())
+				initialRoleHash := podWithHash.Annotations[podconstants.RoleHashAnnotation]
+				gomega.Expect(initialRoleHash).NotTo(gomega.BeEmpty())
+			})
+
+			ginkgo.By("Verify the pod is scheduled and runs", func() {
+				pKey := client.ObjectKey{Namespace: ns.Name, Name: "pod-0"}
+				gomega.Eventually(func(g gomega.Gomega) {
+					var runningPod corev1.Pod
+					g.Expect(k8sClient.Get(ctx, pKey, &runningPod)).To(gomega.Succeed())
+					g.Expect(runningPod.Spec.SchedulingGates).To(gomega.BeEmpty())
+				}, util.Timeout, util.Interval).Should(gomega.Succeed())
+
+				gKey := client.ObjectKey{Namespace: ns.Name, Name: "test-group"}
+				util.ExpectWorkloadToFinish(ctx, k8sClient, gKey)
+			})
+
+			ginkgo.By("Ensure the pod is deleted", func() {
+				var p corev1.Pod
+				pKey := client.ObjectKey{Namespace: ns.Name, Name: "pod-0"}
+				gomega.Expect(k8sClient.Get(ctx, pKey, &p)).To(gomega.Succeed())
+				gomega.Expect(k8sClient.Delete(ctx, &p)).To(gomega.Succeed())
+
+				gomega.Eventually(func(g gomega.Gomega) {
+					g.Expect(k8sClient.Get(ctx, pKey, &corev1.Pod{})).To(testing.BeNotFoundError())
+				}, util.Timeout, util.Interval).Should(gomega.Succeed())
+
+				gKey := client.ObjectKey{Namespace: ns.Name, Name: "test-group"}
+				util.ExpectWorkloadsFinalizedOrGone(ctx, k8sClient, gKey)
+			})
+		})
 	})
 })
diff --git a/test/integration/singlecluster/controller/admissionchecks/provisioning/provisioning_test.go b/test/integration/singlecluster/controller/admissionchecks/provisioning/provisioning_test.go
index 2f17866a5..39345e14f 100644
--- a/test/integration/singlecluster/controller/admissionchecks/provisioning/provisioning_test.go
+++ b/test/integration/singlecluster/controller/admissionchecks/provisioning/provisioning_test.go
@@ -103,7 +103,7 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 			util.MustCreate(ctx, k8sClient, rf)
 
 			cq = testing.MakeClusterQueue("cluster-queue").
-				ResourceGroup(*testing.MakeFlavorQuotas(flavorOnDemand).
+				ResourceGroup(*testing.MakeFlavorQuotas(rf.Name).
 					Resource(resourceGPU, "5", "5").Obj()).
 				Cohort("cohort").
 				AdmissionChecks(kueue.AdmissionCheckReference(ac.Name)).
@@ -113,10 +113,7 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 
 			lq = testing.MakeLocalQueue("queue", ns.Name).ClusterQueue(cq.Name).Obj()
 			util.MustCreate(ctx, k8sClient, lq)
-			gomega.Eventually(func(g gomega.Gomega) {
-				g.Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(lq), lq)).Should(gomega.Succeed())
-				g.Expect(lq.Status.Conditions).Should(testing.HaveConditionStatusTrue(kueue.LocalQueueActive))
-			}, util.Timeout, util.Interval).Should(gomega.Succeed())
+			util.ExpectLocalQueuesToBeActive(ctx, k8sClient, lq)
 
 			wl := testing.MakeWorkload("wl", ns.Name).
 				Queue(kueue.LocalQueueName(lq.Name)).
@@ -799,7 +796,6 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 			ns             *corev1.Namespace
 			wlKey          types.NamespacedName
 			ac             *kueue.AdmissionCheck
-			readyAC        *kueue.AdmissionCheck
 			prc            *kueue.ProvisioningRequestConfig
 			rf             *kueue.ResourceFlavor
 			cq             *kueue.ClusterQueue
@@ -819,23 +815,22 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 				Obj()
 			util.MustCreate(ctx, k8sClient, ac)
 
-			readyAC = testing.MakeAdmissionCheck("pending-ac").
-				ControllerName("dummy-controller").
-				Obj()
-			util.MustCreate(ctx, k8sClient, readyAC)
-
 			rf = testing.MakeResourceFlavor("rf1").Label("ns1", "ns1v").Obj()
 			util.MustCreate(ctx, k8sClient, rf)
 
 			cq = testing.MakeClusterQueue("cluster-queue").
-				ResourceGroup(*testing.MakeFlavorQuotas(flavorOnDemand).
+				ResourceGroup(*testing.MakeFlavorQuotas(rf.Name).
 					Resource(resourceGPU, "5", "5").Obj()).
 				Cohort("cohort").
-				AdmissionChecks(kueue.AdmissionCheckReference(ac.Name), kueue.AdmissionCheckReference(readyAC.Name)).
+				AdmissionChecks(kueue.AdmissionCheckReference(ac.Name)).
 				Obj()
 			util.MustCreate(ctx, k8sClient, cq)
+			util.ExpectClusterQueuesToBeActive(ctx, k8sClient, cq)
+
 			lq = testing.MakeLocalQueue("queue", ns.Name).ClusterQueue(cq.Name).Obj()
 			util.MustCreate(ctx, k8sClient, lq)
+			util.ExpectLocalQueuesToBeActive(ctx, k8sClient, lq)
+
 			wl := testing.MakeWorkload("wl", ns.Name).
 				Queue(kueue.LocalQueueName(lq.Name)).
 				PodSets(
@@ -867,7 +862,6 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 			util.ExpectObjectToBeDeleted(ctx, k8sClient, cq, true)
 			util.ExpectObjectToBeDeleted(ctx, k8sClient, rf, true)
 			util.ExpectObjectToBeDeleted(ctx, k8sClient, ac, true)
-			util.ExpectObjectToBeDeleted(ctx, k8sClient, readyAC, true)
 			util.ExpectObjectToBeDeleted(ctx, k8sClient, prc, true)
 		})
 
@@ -954,9 +948,6 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 					check := workload.FindAdmissionCheck(updatedWl.Status.AdmissionChecks, kueue.AdmissionCheckReference(ac.Name))
 					g.Expect(check).NotTo(gomega.BeNil())
 					g.Expect(check.State).To(gomega.Equal(kueue.CheckStatePending))
-					check = workload.FindAdmissionCheck(updatedWl.Status.AdmissionChecks, kueue.AdmissionCheckReference(readyAC.Name))
-					g.Expect(check).NotTo(gomega.BeNil())
-					g.Expect(check.State).To(gomega.Equal(kueue.CheckStatePending))
 				}, util.Timeout, util.Interval).Should(gomega.Succeed())
 			})
 
@@ -1060,9 +1051,6 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 					check := workload.FindAdmissionCheck(updatedWl.Status.AdmissionChecks, kueue.AdmissionCheckReference(ac.Name))
 					g.Expect(check).NotTo(gomega.BeNil())
 					g.Expect(check.State).To(gomega.Equal(kueue.CheckStatePending))
-					check = workload.FindAdmissionCheck(updatedWl.Status.AdmissionChecks, kueue.AdmissionCheckReference(readyAC.Name))
-					g.Expect(check).NotTo(gomega.BeNil())
-					g.Expect(check.State).To(gomega.Equal(kueue.CheckStatePending))
 				}, util.Timeout, util.Interval).Should(gomega.Succeed())
 			})
 
@@ -1187,9 +1175,6 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 					check := workload.FindAdmissionCheck(updatedWl.Status.AdmissionChecks, kueue.AdmissionCheckReference(ac.Name))
 					g.Expect(check).NotTo(gomega.BeNil())
 					g.Expect(check.State).To(gomega.Equal(kueue.CheckStatePending))
-					check = workload.FindAdmissionCheck(updatedWl.Status.AdmissionChecks, kueue.AdmissionCheckReference(readyAC.Name))
-					g.Expect(check).NotTo(gomega.BeNil())
-					g.Expect(check.State).To(gomega.Equal(kueue.CheckStatePending))
 				}, util.Timeout, util.Interval).Should(gomega.Succeed())
 			})
 
@@ -1289,9 +1274,11 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 				AdmissionChecks(kueue.AdmissionCheckReference(ac.Name)).
 				Obj()
 			util.MustCreate(ctx, k8sClient, cq)
+			util.ExpectClusterQueuesToBeActive(ctx, k8sClient, cq)
 
 			lq = testing.MakeLocalQueue("queue", ns.Name).ClusterQueue(cq.Name).Obj()
 			util.MustCreate(ctx, k8sClient, lq)
+			util.ExpectLocalQueuesToBeActive(ctx, k8sClient, lq)
 
 			wl := testing.MakeWorkload("wl", ns.Name).
 				Queue(kueue.LocalQueueName(lq.Name)).
@@ -1463,7 +1450,7 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 			util.MustCreate(ctx, k8sClient, rf)
 
 			cq = testing.MakeClusterQueue("cluster-queue").
-				ResourceGroup(*testing.MakeFlavorQuotas(flavorOnDemand).
+				ResourceGroup(*testing.MakeFlavorQuotas(rf.Name).
 					Resource(resourceGPU, "5", "5").Obj()).
 				Cohort("cohort").
 				AdmissionChecks(kueue.AdmissionCheckReference(ac.Name)).
@@ -1473,10 +1460,7 @@ var _ = ginkgo.Describe("Provisioning", ginkgo.Ordered, ginkgo.ContinueOnFailure
 
 			lq = testing.MakeLocalQueue("queue", ns.Name).ClusterQueue(cq.Name).Obj()
 			util.MustCreate(ctx, k8sClient, lq)
-			gomega.Eventually(func(g gomega.Gomega) {
-				g.Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(lq), lq)).Should(gomega.Succeed())
-				g.Expect(lq.Status.Conditions).Should(testing.HaveConditionStatusTrue(kueue.LocalQueueActive))
-			}, util.Timeout, util.Interval).Should(gomega.Succeed())
+			util.ExpectLocalQueuesToBeActive(ctx, k8sClient, lq)
 
 			wl := testing.MakeWorkload("wl", ns.Name).
 				Queue(kueue.LocalQueueName(lq.Name)).
diff --git a/test/integration/singlecluster/scheduler/fairsharing/fair_sharing_test.go b/test/integration/singlecluster/scheduler/fairsharing/fair_sharing_test.go
index 0c91151d4..301365951 100644
--- a/test/integration/singlecluster/scheduler/fairsharing/fair_sharing_test.go
+++ b/test/integration/singlecluster/scheduler/fairsharing/fair_sharing_test.go
@@ -316,7 +316,7 @@ var _ = ginkgo.Describe("Scheduler", ginkgo.Ordered, ginkgo.ContinueOnFailure, f
 			cohortSecondRight := createCohort(testing.MakeCohort("second-right").Parent("first-left").Obj())
 			cohortBank := createCohort(testing.MakeCohort("bank").Parent("first-right").
 				ResourceGroup(
-					testing.MakeFlavorQuotas(defaultFlavor.Name).Resource(corev1.ResourceCPU, "10").FlavorQuotas,
+					*testing.MakeFlavorQuotas(defaultFlavor.Name).Resource(corev1.ResourceCPU, "10").Obj(),
 				).Obj())
 
 			cqSecondLeft := createQueue(testing.MakeClusterQueue("second-left").
@@ -425,10 +425,12 @@ var _ = ginkgo.Describe("Scheduler", ginkgo.Ordered, ginkgo.ContinueOnFailure, f
 		ginkgo.BeforeEach(func() {
 			gomega.Expect(features.SetEnable(features.AdmissionFairSharing, true)).To(gomega.Succeed())
 
-			cq1 = createQueue(testing.MakeClusterQueue("cq1").
+			cq1 = testing.MakeClusterQueue("cq1").
 				ResourceGroup(*testing.MakeFlavorQuotas(defaultFlavor.Name).Resource(corev1.ResourceCPU, "8").Obj()).
 				AdmissionMode(kueue.UsageBasedAdmissionFairSharing).
-				Obj())
+				Obj()
+			cqs = append(cqs, cq1)
+			util.MustCreate(ctx, k8sClient, cq1)
 
 			lqA = testing.MakeLocalQueue("lq-a", ns.Name).
 				FairSharing(&kueue.FairSharing{Weight: ptr.To(resource.MustParse("1"))}).
@@ -610,16 +612,6 @@ var _ = ginkgo.Describe("Scheduler", ginkgo.Ordered, ginkgo.ContinueOnFailure, f
 		wls     []*kueue.Workload
 	)
 
-	var createQueue = func(cq *kueue.ClusterQueue) *kueue.ClusterQueue {
-		util.MustCreate(ctx, k8sClient, cq)
-		cqs = append(cqs, cq)
-
-		lq := testing.MakeLocalQueue(cq.Name, ns.Name).ClusterQueue(cq.Name).Obj()
-		util.MustCreate(ctx, k8sClient, lq)
-		lqs = append(lqs, lq)
-		return cq
-	}
-
 	var createWorkloadWithPriority = func(queue kueue.LocalQueueName, cpuRequests string, priority int32) *kueue.Workload {
 		wl := testing.MakeWorkloadWithGeneratedName("workload-", ns.Name).
 			Priority(priority).
@@ -687,22 +679,26 @@ var _ = ginkgo.Describe("Scheduler", ginkgo.Ordered, ginkgo.ContinueOnFailure, f
 		ginkgo.BeforeEach(func() {
 			gomega.Expect(features.SetEnable(features.AdmissionFairSharing, true)).To(gomega.Succeed())
 
-			cq1 = createQueue(testing.MakeClusterQueue("cq1").
+			cq1 = testing.MakeClusterQueue("cq1").
 				Cohort("all").
 				ResourceGroup(*testing.MakeFlavorQuotas(defaultFlavor.Name).Resource(corev1.ResourceCPU, "16").Obj()).
 				Preemption(kueue.ClusterQueuePreemption{WithinClusterQueue: kueue.PreemptionPolicyNever}).
 				QueueingStrategy(kueue.StrictFIFO).
 				AdmissionMode(kueue.UsageBasedAdmissionFairSharing).
-				Obj())
+				Obj()
+			util.MustCreate(ctx, k8sClient, cq1)
+			cqs = append(cqs, cq1)
 
-			cq2 = createQueue(testing.MakeClusterQueue("cq2").
+			cq2 = testing.MakeClusterQueue("cq2").
 				Cohort("all").
 				ResourceGroup(
 					*testing.MakeFlavorQuotas("default").Resource(corev1.ResourceCPU, "16").Obj(),
 				).Preemption(kueue.ClusterQueuePreemption{
 				ReclaimWithinCohort: kueue.PreemptionPolicyAny,
 				WithinClusterQueue:  kueue.PreemptionPolicyLowerPriority,
-			}).Obj())
+			}).Obj()
+			util.MustCreate(ctx, k8sClient, cq2)
+			cqs = append(cqs, cq2)
 
 			lqA = testing.MakeLocalQueue("lq-a", ns.Name).
 				FairSharing(&kueue.FairSharing{Weight: ptr.To(resource.MustParse("1"))}).
@@ -712,7 +708,7 @@ var _ = ginkgo.Describe("Scheduler", ginkgo.Ordered, ginkgo.ContinueOnFailure, f
 				ClusterQueue(cq1.Name).Obj()
 			lqC = testing.MakeLocalQueue("lq-c", ns.Name).
 				FairSharing(&kueue.FairSharing{Weight: ptr.To(resource.MustParse("1"))}).
-				ClusterQueue(cq1.Name).Obj()
+				ClusterQueue(cq2.Name).Obj()
 			lqs = append(lqs, lqA)
 			lqs = append(lqs, lqB)
 			lqs = append(lqs, lqC)
@@ -758,7 +754,7 @@ var _ = ginkgo.Describe("Scheduler", ginkgo.Ordered, ginkgo.ContinueOnFailure, f
 			util.ExpectLocalQueueFairSharingUsageToBe(ctx, k8sClient, client.ObjectKeyFromObject(lqA), ">", 12_000)
 
 			ginkgo.By("Creating a workload in CQ2 that reclaims the quota")
-			_ = createWorkload(kueue.LocalQueueName(cq2.Name), "10")
+			_ = createWorkload("lq-c", "10")
 
 			ginkgo.By("Checking that the workload from lq-A is preempted despite having bigger priority")
 			util.ExpectWorkloadsToBePreempted(ctx, k8sClient, wlHighA)
diff --git a/test/integration/singlecluster/scheduler/scheduler_test.go b/test/integration/singlecluster/scheduler/scheduler_test.go
index 9848bb864..2563adeb2 100644
--- a/test/integration/singlecluster/scheduler/scheduler_test.go
+++ b/test/integration/singlecluster/scheduler/scheduler_test.go
@@ -1514,7 +1514,7 @@ var _ = ginkgo.Describe("Scheduler", func() {
 			ginkgo.By("cohort with resources created and workload admitted")
 			cohortBank := testing.MakeCohort("bank").Parent("right").
 				ResourceGroup(
-					testing.MakeFlavorQuotas("on-demand").Resource(corev1.ResourceCPU, "10").FlavorQuotas,
+					*testing.MakeFlavorQuotas("on-demand").Resource(corev1.ResourceCPU, "10").Obj(),
 				).Obj()
 			util.MustCreate(ctx, k8sClient, cohortBank)
 			expectAdmission := testing.MakeAdmission(cq.Name).Assignment(corev1.ResourceCPU, "on-demand", "10").Obj()
@@ -2544,12 +2544,18 @@ var _ = ginkgo.Describe("Scheduler", func() {
 			createQueue(testing.MakeClusterQueue("cq1").
 				FlavorFungibility(fungibility).Cohort("cohort").
 				Preemption(preemption).
-				ResourceGroup(testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "0").FlavorQuotas, testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "1").FlavorQuotas).Obj())
+				ResourceGroup(
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "0").Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "1").Obj(),
+				).Obj())
 
 			createQueue(testing.MakeClusterQueue("cq2").Cohort("cohort").
 				FlavorFungibility(fungibility).
 				Preemption(preemption).
-				ResourceGroup(testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "1").FlavorQuotas, testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "0").FlavorQuotas).Obj())
+				ResourceGroup(
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "1").Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "0").Obj(),
+				).Obj())
 
 			cq1LowPriority := createWorkloadWithPriority("cq1", "1", 0)
 			{
@@ -2602,12 +2608,17 @@ var _ = ginkgo.Describe("Scheduler", func() {
 			createQueue(testing.MakeClusterQueue("cq1").
 				FlavorFungibility(fungibility).Cohort("cohort").
 				Preemption(preemption).
-				ResourceGroup(testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "0").FlavorQuotas, testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "1").FlavorQuotas).Obj())
+				ResourceGroup(
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "0").Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "1").Obj(),
+				).Obj())
 
 			createQueue(testing.MakeClusterQueue("cq2").Cohort("cohort").
 				FlavorFungibility(fungibility).
 				Preemption(preemption).
-				ResourceGroup(testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "1").FlavorQuotas, testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "0").FlavorQuotas).Obj())
+				ResourceGroup(
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "1").Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "0").Obj()).Obj())
 
 			cq1LowPriority := createWorkloadWithPriority("cq1", "1", 0)
 			{
@@ -2645,12 +2656,18 @@ var _ = ginkgo.Describe("Scheduler", func() {
 			createQueue(testing.MakeClusterQueue("cq1").
 				FlavorFungibility(fungibility).Cohort("cohort").
 				Preemption(preemption).
-				ResourceGroup(testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "1").FlavorQuotas, testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "0").FlavorQuotas).Obj())
+				ResourceGroup(
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "1").Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "0").Obj(),
+				).Obj())
 
 			createQueue(testing.MakeClusterQueue("cq2").Cohort("cohort").
 				FlavorFungibility(fungibility).
 				Preemption(preemption).
-				ResourceGroup(testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "0").FlavorQuotas, testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "1").FlavorQuotas).Obj())
+				ResourceGroup(
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU, "0").Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU, "1").Obj(),
+				).Obj())
 
 			cq1LowPriority := createWorkloadWithPriority("cq1", "1", 0)
 			{
diff --git a/test/integration/singlecluster/webhook/core/cohort_test.go b/test/integration/singlecluster/webhook/core/cohort_test.go
index 3aaa9cfc8..cce83c3a6 100644
--- a/test/integration/singlecluster/webhook/core/cohort_test.go
+++ b/test/integration/singlecluster/webhook/core/cohort_test.go
@@ -85,27 +85,27 @@ var _ = ginkgo.Describe("Cohort Webhook", ginkgo.Ordered, func() {
 				testing.BeForbiddenError()),
 			ginkgo.Entry("Should reject too many flavors in resource group",
 				testing.MakeCohort("cohort").ResourceGroup(
-					testing.MakeFlavorQuotas("f0").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f3").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f4").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f5").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f6").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f7").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f8").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f9").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f10").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f11").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f12").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f13").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f14").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f15").Resource(corev1.ResourceCPU).FlavorQuotas,
-					testing.MakeFlavorQuotas("f16").Resource(corev1.ResourceCPU).FlavorQuotas).Obj(),
+					*testing.MakeFlavorQuotas("f0").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f1").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f2").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f3").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f4").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f5").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f6").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f7").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f8").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f9").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f10").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f11").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f12").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f13").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f14").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f15").Resource(corev1.ResourceCPU).Obj(),
+					*testing.MakeFlavorQuotas("f16").Resource(corev1.ResourceCPU).Obj()).Obj(),
 				testing.BeInvalidError()),
 			ginkgo.Entry("Should reject too many resources in resource group",
 				testing.MakeCohort("cohort").ResourceGroup(
-					testing.MakeFlavorQuotas("flavor").
+					*testing.MakeFlavorQuotas("flavor").
 						Resource("cpu0").
 						Resource("cpu1").
 						Resource("cpu2").
@@ -122,7 +122,7 @@ var _ = ginkgo.Describe("Cohort Webhook", ginkgo.Ordered, func() {
 						Resource("cpu13").
 						Resource("cpu14").
 						Resource("cpu15").
-						Resource("cpu16").FlavorQuotas).Obj(),
+						Resource("cpu16").Obj()).Obj(),
 				testing.BeInvalidError()),
 			ginkgo.Entry("Should allow resource with valid name",
 				testing.MakeCohort("cohort").
@@ -187,18 +187,18 @@ var _ = ginkgo.Describe("Cohort Webhook", ginkgo.Ordered, func() {
 			ginkgo.Entry("Should reject lendingLimit when no parent",
 				testing.MakeCohort("cohort").
 					ResourceGroup(
-						testing.MakeFlavorQuotas("x86").
+						*testing.MakeFlavorQuotas("x86").
 							ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("1").LendingLimit("1").Append().
-							FlavorQuotas,
+							Obj(),
 					).
 					Obj(),
 				testing.BeForbiddenError()),
 			ginkgo.Entry("Should allow lendingLimit when parent exists",
 				testing.MakeCohort("cohort").
 					ResourceGroup(
-						testing.MakeFlavorQuotas("x86").
+						*testing.MakeFlavorQuotas("x86").
 							ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("1").LendingLimit("1").Append().
-							FlavorQuotas,
+							Obj(),
 					).
 					Parent("parent").
 					Obj(),
@@ -206,9 +206,9 @@ var _ = ginkgo.Describe("Cohort Webhook", ginkgo.Ordered, func() {
 			ginkgo.Entry("Should allow lendingLimit 0 when parent exists",
 				testing.MakeCohort("cohort").
 					ResourceGroup(
-						testing.MakeFlavorQuotas("x86").
+						*testing.MakeFlavorQuotas("x86").
 							ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("0").LendingLimit("0").Append().
-							FlavorQuotas,
+							Obj(),
 					).
 					Parent("parent").
 					Obj(),
@@ -216,9 +216,9 @@ var _ = ginkgo.Describe("Cohort Webhook", ginkgo.Ordered, func() {
 			ginkgo.Entry("Should allow lending limit to exceed nominal quota",
 				testing.MakeCohort("cohort").
 					ResourceGroup(
-						testing.MakeFlavorQuotas("x86").
+						*testing.MakeFlavorQuotas("x86").
 							ResourceQuotaWrapper(corev1.ResourceCPU).NominalQuota("3").LendingLimit("5").Append().
-							FlavorQuotas,
+							Obj(),
 					).
 					Parent("parent").
 					Obj(),