@@ -32,6 +32,16 @@ class ImageDevelopmentVersionFromDependency(BaseImageDevelopmentVersion):
3232 ReleaseChannelEnum | None ,
3333 Field (default = None , description = "Release channel for this dev version (e.g. 'daily', 'preview')." ),
3434 ] = None
35+ resolved_channel_latest : Annotated [
36+ bool ,
37+ Field (
38+ exclude = True ,
39+ default = False ,
40+ description = "Whether the resolved version equals the current channel head. "
41+ "Populated by _resolve_os_urls(); used to suppress floating {{ Channel }} tags "
42+ "for builds targeting older versions." ,
43+ ),
44+ ]
3545
3646 @field_validator ("channel" , mode = "after" )
3747 @classmethod
@@ -44,14 +54,21 @@ def channel_not_release(cls, v: ReleaseChannelEnum | None) -> ReleaseChannelEnum
4454 return v
4555
4656 def get_version (self ) -> str :
57+ # If overridden by a dev spec, return immediately and do not assume latest.
4758 if self .version_override is not None :
4859 return self .version_override
60+
61+ # If resolving a version, assume latest.
62+ self .resolved_channel_latest = True
63+
64+ # Resolve the latest version via constraint with prerelease.
4965 constraint_class = get_dependency_constraint_class (self .dependency )
5066 constraint = constraint_class (
5167 prerelease = self .prerelease ,
5268 constraint = VersionConstraint (latest = True , count = 1 ),
5369 )
5470 result = constraint .resolve_versions ()
71+
5572 return str (result .versions [0 ])
5673
5774 def _get_dependencies_for_matrix (self , version : str ) -> list :
0 commit comments