Artifact Registry: integrate Brand-List Validator on the slug-claim (Lease) path
Summary
Wire the validator into AR's Lease step so brand-reserved slugs are rejected at claim time.
Note: Split out from #193 (closed), which now tracks the MVP mechanical wiring (client, config, startup probe) delivered in !833 (merged). This issue covers the slug-claim business logic.
Deliverables
- Query the validator during Lease, alongside the protocol-reserved and not-claimed/leased checks
- Fail-closed: validator unreachable or 5xx -> Lease rejected (customer can retry)
- SaaS-only: behind config; Self-Managed/Dedicated run unconfigured and skip the check
- Opaque rejection: indistinguishable from other availability reasons (protocol-reserved, taken, cross-tenant)
- Client timeout tuned for the one-shot Lease path
- Tests: brand-reserved slug rejected at Lease; validator-down -> fail closed; Self-Managed config skips the check
Acceptance
Lease integrates the validator; fail-closed verified; SaaS-only gating; opaque rejection; tests green.
Dependencies
Builds on the MVP mechanical wiring (#193 (closed), !833 (merged)). BLV service contract #191 (closed), deployed endpoint #192 (closed).
References
ADR-015 Slug Policy. Registration flow: Lease step. BLV epic &22428, S17 REST management API epic &22341.
🤖 Triage Note (Artifact Registry Triage Assistant)This issue has been automatically classified as
type::featurebased on its title and description.Reasoning: The issue describes the addition of new business logic — integrating the Brand-List Validator into the slug-claim (Lease) path. This includes new behaviours such as fail-closed validation, SaaS-only feature gating, opaque rejection semantics, and client timeout tuning. These are net-new capabilities being added to the system, which clearly places this in the
type::featurecategory rather than a bug fix or maintenance task.The following labels have been applied:
type::featureCategory:Artifact Registrydevops::packagegroup::package registryIf this classification doesn't seem right, please feel free to update the labels and let us know. Thank you!
🙏