Description
The OpenJD specification defines the data model for step amount requirements (<AmountRequirement> with min/max) and worker capabilities, but does not define how scheduling systems should match requirements against hosts or fleets that advertise a range of capabilities (e.g., vCPU min–max).
This gap has led to implementations that match only against the lower bound of a capability range. For example, a fleet configured with vCPU range 64–128 is rejected for a step requiring 96 vCPUs, because the check compares 96 against the fleet minimum (64) rather than the fleet maximum (128).
This forces users into one of two bad workarounds:
- Fleet proliferation — Create separate fleets for each vCPU/memory tier (64, 96, 128), each requiring its own service quotas, monitoring, and configuration.
- Over-provisioning — Set the fleet minimum to the highest value any job might need, wasting resources on smaller jobs.
Both defeat the purpose of flexible fleet sizing and increase operational overhead.
This RFC proposes normative language defining that a fleet with capability range [C_min, C_max] should be considered compatible with a step requirement if there exists any value in the fleet's range that satisfies the requirement. In practice: the fleet's maximum determines whether it can meet the step's minimum requirement.
Roles
Workflow
Please close this tracking issue when the proposal enters the Released stage of the process.
Open Points
- Should the spec define matching semantics only for amount capabilities, or also extend to attribute capabilities with range-like semantics?
- Should the spec mandate a specific instance selection strategy (e.g., smallest sufficient), or leave that as an implementation detail?
The author is responsible to progress the RFC according to this checklist, and
apply the relevant labels to this issue.
Description
The OpenJD specification defines the data model for step amount requirements (
<AmountRequirement>withmin/max) and worker capabilities, but does not define how scheduling systems should match requirements against hosts or fleets that advertise a range of capabilities (e.g., vCPU min–max).This gap has led to implementations that match only against the lower bound of a capability range. For example, a fleet configured with vCPU range 64–128 is rejected for a step requiring 96 vCPUs, because the check compares 96 against the fleet minimum (64) rather than the fleet maximum (128).
This forces users into one of two bad workarounds:
Both defeat the purpose of flexible fleet sizing and increase operational overhead.
This RFC proposes normative language defining that a fleet with capability range [C_min, C_max] should be considered compatible with a step requirement if there exists any value in the fleet's range that satisfies the requirement. In practice: the fleet's maximum determines whether it can meet the step's minimum requirement.
Roles
Workflow
rfc/proposed)rfc/exploring)rfc/exploringandrfc/final-comments)rfc/accepted-future)rfc/accepted-draft)rfc/accepted-staged)rfc/released)Please close this tracking issue when the proposal enters the
Releasedstage of the process.Open Points