feat(relay): promote attribute release to default#488
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dbd9f2f5d6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4e796a9fc2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8ce6d9c04e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
8ce6d9c to
3740ebe
Compare
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 277595685d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 83a96d06cb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2912d383a8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9e15035894
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ); | ||
| } | ||
| validate_token(&profile.version, "attribute release profile version", 64)?; | ||
| validate_release_version(&profile.version, "attribute release profile version")?; |
There was a problem hiding this comment.
Align the authoring schema with the version validator
The shipped editor schema still accepts any bounded token for version (crates/registryctl/schemas/project-authoring/project.schema.json:164), so values such as v1/preview pass editor/schema validation but are rejected here during compilation. Update the schema pattern to [A-Za-z0-9][A-Za-z0-9._-]{0,63} so adopters receive consistent validation before invoking the compiler.
Useful? React with 👍 / 👎.
| validate_header_token( | ||
| &profile.purpose, | ||
| "attribute release profile purpose", | ||
| 256, | ||
| )?; |
There was a problem hiding this comment.
Reflect the ASCII purpose restriction in the editor schema
The new header-safe validator rejects non-ASCII purposes, but the project authoring schema still references $defs.token for purpose (crates/registryctl/schemas/project-authoring/project.schema.json:167), whose pattern permits Unicode. An authored value such as identité_verification therefore appears valid in editor/schema tooling and fails only later during compilation; constrain this schema field to visible ASCII as well.
Useful? React with 👍 / 👎.
| @@ -1,7 +1,10 @@ | |||
| # syntax=docker/dockerfile:1.7 | |||
|
|
|||
| ARG REGISTRY_RELAY_FEATURES="attribute-release,crosswalk-runtime" | |||
There was a problem hiding this comment.
Preserve an explicit empty feature override
After making the Docker ARG non-empty by default, REGISTRY_RELAY_FEATURES= can no longer select the Dockerfile's explicit minimal build path through scripts/build-image.sh: that helper only adds --build-arg when the value is non-empty (lines 75–77), so an explicitly empty value is indistinguishable from an unset variable and silently builds the canonical features instead. Detect whether the variable is set rather than whether it is non-empty so operators can still request a no-feature image.
Useful? React with 👍 / 👎.
| relay_feature_profile="${repo_root}/crates/registry-relay/canonical-release-features.txt" | ||
| relay_release_features="$(<"${relay_feature_profile}")" | ||
| sh "${repo_root}/crates/registry-relay/scripts/validate-feature-profile.sh" \ | ||
| "${relay_release_features}" |
There was a problem hiding this comment.
Split the change along owning-area boundaries
This change couples Relay and Registryctl code with public-docs and release-pipeline modifications, including the release feature selection added here. The repository requires each change to stay within one owning area, so split the crates/, docs/site/, and release/ work into independently reviewable changes rather than landing this cross-area unit.
AGENTS.md reference: AGENTS.md:L76-L78
Useful? React with 👍 / 👎.
What
Why
Attribute release is the maintained Notary/Relay integration path. Shipping it as an optional variant would create multiple production profiles and leave the official image unable to exercise that path. The hardening in this change closes the gaps found while reviewing promotion readiness.
The initial CI run exposed a stale assurance invariant that treated every feature-gated route as optional and experimental. The checker now permits stable routes only behind Cargo features in the canonical release profile, while preserving the experimental requirement for optional feature gates.
Security
sourceauthorityprivate, no-storeVerification
just ciin Registry Relaycargo test --locked -p registryctl project_authoringpython3 -m unittest release/scripts/test_registry_release.pypython3 -m unittest release/scripts/test_check_release_relay_features.py release/scripts/test_check_release_image_oci_labels.pynode --test scripts/relay-release-contract.test.mjsindocs/sitecargo deny ... check banscargo tree --locked -p registry-relay --all-features -i celRefs #487
Follow-ups: #493, #494
Follow-up release evidence
After the next Registry Stack version is published, Solmara Lab still needs to pin the official Relay image by digest and record the live journey evidence. This PR prepares and verifies the canonical binary and image contract but cannot produce that future release digest.