diff --git a/lower-constraints.txt b/lower-constraints.txt
index 72f5d280a..17def29c2 100644
--- a/lower-constraints.txt
+++ b/lower-constraints.txt
@@ -35,7 +35,7 @@ msgpack-python==0.5.6
 netaddr==0.7.18
 netifaces==0.10.4
 os-client-config==1.29.0
-os-resource-classes==0.3.0
+os-resource-classes==0.4.0
 os-service-types==1.2.0
 os-traits==0.12.0
 oslo.concurrency==3.26.0
diff --git a/placement/tests/functional/gabbits/resource-classes-policy.yaml b/placement/tests/functional/gabbits/resource-classes-policy.yaml
index 6f0956d46..a8a879caa 100644
--- a/placement/tests/functional/gabbits/resource-classes-policy.yaml
+++ b/placement/tests/functional/gabbits/resource-classes-policy.yaml
@@ -16,7 +16,7 @@ tests:
 - name: list resource classes
   GET: /resource_classes
   response_json_paths:
-      $.resource_classes.`len`: 15  #  Number of standard resource classes
+      $.resource_classes.`len`: 16  #  Number of standard resource classes
 
 - name: create resource class
   POST: /resource_classes
diff --git a/placement/tests/functional/gabbits/resource-classes.yaml b/placement/tests/functional/gabbits/resource-classes.yaml
index 2ee6c9028..9c889a746 100644
--- a/placement/tests/functional/gabbits/resource-classes.yaml
+++ b/placement/tests/functional/gabbits/resource-classes.yaml
@@ -50,8 +50,7 @@ tests:
 - name: what is at resource classes
   GET: /resource_classes
   response_json_paths:
-  response_json_paths:
-      $.resource_classes.`len`: 15  #  Number of standard resource classes
+      $.resource_classes.`len`: 16  #  Number of standard resource classes
       $.resource_classes[0].name: VCPU
 
 - name: non admin forbidden
@@ -138,9 +137,9 @@ tests:
 - name: list resource classes after addition of custom res class
   GET: /resource_classes
   response_json_paths:
-      $.resource_classes.`len`: 16  # 15 standard plus 1 custom
-      $.resource_classes[15].name: $ENVIRON['CUSTOM_RES_CLASS']
-      $.resource_classes[15].links[?rel = "self"].href: /resource_classes/$ENVIRON['CUSTOM_RES_CLASS']
+      $.resource_classes.`len`: 17  # 16 standard plus 1 custom
+      $.resource_classes[16].name: $ENVIRON['CUSTOM_RES_CLASS']
+      $.resource_classes[16].links[?rel = "self"].href: /resource_classes/$ENVIRON['CUSTOM_RES_CLASS']
 
 - name: update standard resource class bad json
   PUT: /resource_classes/VCPU
diff --git a/requirements.txt b/requirements.txt
index 36daef98a..07d046c9b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -21,6 +21,7 @@ oslo.db>=4.40.0 # Apache-2.0
 oslo.policy>=1.35.0 # Apache-2.0
 oslo.middleware>=3.31.0 # Apache-2.0
 oslo.upgradecheck>=0.2.0 # Apache-2.0
-os-resource-classes>=0.3.0 # Apache-2.0
+# NOTE(efried): Sync lower-constraints.txt for os-traits & os-resource-classes.
+os-resource-classes>=0.4.0 # Apache-2.0
 os-traits>=0.12.0 # Apache-2.0
 microversion-parse>=0.2.1 # Apache-2.0