Parent: #1930
What to build
Add the ResourceDependency link-record POJO (kind, linkId, target.path, access, required) and the Application.resourceDependencies field. The section:
- parses from both snake_case (
resource_dependencies) and camelCase (resourceDependencies), per the repo's dual-acceptance convention;
- round-trips (serialize → parse → equal) and is carried by the
Application copy constructor;
- is omitted from serialization when absent — existing definitions are byte-identical;
- is returned by
GET /v1/applications/… as part of the serialized definition.
Deliberately inert: nothing consumes the section yet — write-time validation, admin consent, and request-start resolution land in the following stories of the series. The existing Deployment.dependencies field (deployment-name list) is untouched (zero diff). The consent prompt-policy field is deliberately absent (deferred to phase 2); every v1 field is consumed by v1.
Acceptance criteria
Blocked by
None — can start immediately.
Parent: #1930
What to build
Add the
ResourceDependencylink-record POJO (kind,linkId,target.path,access,required) and theApplication.resourceDependenciesfield. The section:resource_dependencies) and camelCase (resourceDependencies), per the repo's dual-acceptance convention;Applicationcopy constructor;GET /v1/applications/…as part of the serialized definition.Deliberately inert: nothing consumes the section yet — write-time validation, admin consent, and request-start resolution land in the following stories of the series. The existing
Deployment.dependenciesfield (deployment-name list) is untouched (zero diff). Theconsentprompt-policy field is deliberately absent (deferred to phase 2); every v1 field is consumed by v1.Acceptance criteria
Deployment.javazero diff../gradlew :config:testgreen;./gradlew checkstyleMain checkstyleTestgreen.Blocked by
None — can start immediately.