Repository navigation
feat(platform): send manifest feature dependencies on app release. - #351
Open
nmolham-godaddy wants to merge 2 commits into
Open
nmolham-godaddy wants to merge 2 commits into
nmolham-godaddy wants to merge 2 commits into
Conversation
nmolham-godaddy
requested review from
axburgess-godaddy,
jpage-godaddy,
jpearlman-godaddy,
mguerrero3-godaddy,
qcai-godaddy,
rts1-godaddy,
sgopalan-godaddy,
smukherjee-godaddy and
wcole1-godaddy
as code owners
October 27, 2026 04:34
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The schema, validation, and release mapping are consistent with the API contract, with no blocking issues identified in static review.
No open issues 🎉
What changed in this PR
This PR connects manifest feature dependencies to app releases, so the CLI sends declared features instead of dropping them.
Changes:
- Replaces feature dependency
versionwith a requiredstate; existing feature entries need migration. - Rejects unknown states and duplicate feature names locally.
- Maps feature dependencies into the release request and adds parsing, validation, and mapping tests.
| File | Description |
|---|---|
| rust/src/platform/app/commands/release.rs | Sends feature dependencies in release requests and tests the mapping. |
| rust/src/config/tests.rs | Tests rejection of unknown states and duplicate feature names. |
| rust/src/config/mod.rs | Defines feature dependency states and validates name uniqueness. |
Review effort: Balanced
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
gddy platform app releasenever sent feature dependencies to App Registry.release.rshardcodedfeature_dependencies: None, so[[dependencies]]feature entries ingodaddy.tomlwere parsed and validated, then dropped. Feature entries also had no way to state the dependency: they carried{ name, version }, whilecreateReleaseexpects{ name, state }withstateone ofREQUIRED | EXCLUDED | ENABLED | DISABLED.As a result, an app could not declare features through the CLI, and App Registry's
storeFeatures(storeId)query could not report them.Related to https://github.com/gdcorp-commerce/app-registry-api/pull/274
Changes
Manifest schema.
[[dependencies]].featureentries are now{ name, state }.stateaccepts the App RegistryFeatureDependencyStatevalues, written in upper case in TOML. App dependencies ([[dependencies]].app) are unchanged.Local validation. An unknown state fails when the manifest is read. A feature name declared more than once, including across separate [[dependencies]] blocks, is rejected before any API call. The API rejects duplicates too; failing locally gives a clearer message. Feature names are not checked against App Registry's feature list, which lives in App Registry; the API still rejects unknown names.
Release mapping. New build_feature_dependencies maps manifest entries to FeatureDependencyInput, and createRelease now receives them. The generated client already had these types, so no schema refresh or regeneration was needed. Most of the release.rs diff is cargo fmt re-indenting the manifest match after its tuple gained an element.
Compatibility
Tests
Verification