From 45fb739b9f994b56f038bf31391ffd6d4dbcc1ff Mon Sep 17 00:00:00 2001 From: Ken Simpson Date: Mon, 31 Aug 2026 09:28:32 -0700 Subject: [PATCH] Advertise the L40S pool with real card capabilities The staging relay pool formerly named mock-4090 is now L40S, matching the Modal deployment. Add its 48 GiB capability entry and default the Subrosa Configuration node to it. The mock-4090 map entry stays for test fixtures. Co-Authored-By: Claude Opus 5 (1M context) --- execution_scheduling.py | 6 ++++++ remote_configuration_nodes.py | 8 ++++---- tests/test_subrosa_provider.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/execution_scheduling.py b/execution_scheduling.py index 6149ee5..1767782 100644 --- a/execution_scheduling.py +++ b/execution_scheduling.py @@ -191,6 +191,12 @@ _SUBROSA_DEFAULT_POOL_CAPABILITY = SubrosaPoolCapability( ) _SUBROSA_POOL_CAPABILITIES: Mapping[str, SubrosaPoolCapability] = { + "L40S": SubrosaPoolCapability( + gpu_name="NVIDIA L40S", + total_vram_bytes=48 * 1024**3, + cpu_count=16, + total_ram_bytes=64 * 1024**3, + ), "mock-4090": SubrosaPoolCapability( gpu_name="NVIDIA GeForce RTX 4090", total_vram_bytes=24 * 1024**3, diff --git a/remote_configuration_nodes.py b/remote_configuration_nodes.py index 2ece19c..33b1e71 100644 --- a/remote_configuration_nodes.py +++ b/remote_configuration_nodes.py @@ -340,7 +340,7 @@ class SubrosaConfiguration(io.ComfyNode): inputs=[ io.String.Input( "configuration_name", - default="subrosa-mock-4090", + default="subrosa-l40s", tooltip="Unique workflow-local name for this relay pool.", ), io.String.Input( @@ -350,7 +350,7 @@ class SubrosaConfiguration(io.ComfyNode): ), io.String.Input( "pool", - default="mock-4090", + default="L40S", tooltip="Relay pool that should claim these jobs.", ), io.Int.Input( @@ -491,12 +491,12 @@ def subrosa_configuration_from_inputs( return SubrosaRemoteConfiguration( configuration_id=normalized_id, display_name=str( - inputs.get("configuration_name") or "subrosa-mock-4090" + inputs.get("configuration_name") or "subrosa-l40s" ).strip(), relay_url=str( inputs.get("relay_url") or "wss://staging.subrosa.red" ).strip().rstrip("/"), - pool=str(inputs.get("pool") or "mock-4090").strip(), + pool=str(inputs.get("pool") or "L40S").strip(), credential_id=str(inputs.get("credential_id") or normalized_id).strip(), maximum_workers=int(inputs.get("maximum_workers", 1)), ) diff --git a/tests/test_subrosa_provider.py b/tests/test_subrosa_provider.py index 035a9d9..ee81b89 100644 --- a/tests/test_subrosa_provider.py +++ b/tests/test_subrosa_provider.py @@ -222,6 +222,37 @@ def test_subrosa_candidate_has_schedulable_mock_capabilities( assert state.capabilities.maximum_vram_bytes == 24 * 1024**3 +def test_subrosa_l40s_pool_advertises_48_gib( + execution_scheduling_module: Any, + execution_environments_module: Any, + remote_configurations_module: Any, + settings_module: Any, +) -> None: + """The L40S pool should advertise the card's real 48 GiB VRAM.""" + configuration = remote_configurations_module.SubrosaRemoteConfiguration( + configuration_id="44", + display_name="Subrosa L40S", + relay_url="wss://staging.subrosa.red", + pool="L40S", + credential_id="subrosa-default", + ) + + state, quote = execution_scheduling_module._configured_candidate_environment( + configuration=configuration, + requirements=execution_environments_module.ComponentResourceRequirements(), + settings=settings_module.get_settings(), + ssh_hosts_by_id={}, + vast_service=None, + vast_unavailable_reason=None, + ) + + assert quote is None + assert state is not None + assert state.capabilities is not None + assert state.capabilities.maximum_vram_bytes == 48 * 1024**3 + assert state.capabilities.gpus[0].name == "NVIDIA L40S" + + def test_subrosa_b300_pool_admits_large_vram_component( execution_scheduling_module: Any, execution_environments_module: Any,