Skip to content

Restructure Policy into per-repository restrictions and overrides#62

Open
ericmj wants to merge 1 commit into
mainfrom
policy-rules
Open

Restructure Policy into per-repository restrictions and overrides#62
ericmj wants to merge 1 commit into
mainfrom
policy-rules

Conversation

@ericmj
Copy link
Copy Markdown
Member

@ericmj ericmj commented Jun 7, 2026

Replace the ordered Rule list with a repeated RepositoryPolicy, one entry per repository the policy constrains (in practice "hexpm" and the org's own repository). Each entry has:

  • restriction — baseline advisory_min_severity / retirement_reasons / cooldown limits applied to every release in the repository
  • overrides — per-package ALLOW/DENY with an optional requirement

For each candidate release the client matches the entry for its repository, then evaluates overrides (most specific requirement wins; ALLOW bypasses the restriction, DENY blocks), then the restriction. An ALLOW override is exempt from the restriction; everything else in the repository is subject to it. The Filter, Rule, oneof action, and Availability messages are gone.

visibility is unchanged. Regenerate hex_pb_policy.erl and update the policy test fixtures.

Replace the ordered Rule list with a repeated RepositoryPolicy, one entry
per repository the policy constrains (in practice "hexpm" and the org's own
repository). Each entry has:

  * restriction — baseline advisory_min_severity / retirement_reasons /
    cooldown limits applied to every release in the repository
  * overrides — per-package ALLOW/DENY with an optional requirement

For each candidate release the client matches the entry for its repository,
then evaluates overrides (most specific requirement wins; ALLOW bypasses the
restriction, DENY blocks), then the restriction. An ALLOW override is exempt
from the restriction; everything else in the repository is subject to it. The
Filter, Rule, oneof action, and Availability messages are gone.

Restriction imports package.proto and types advisory_min_severity and
retirement_reasons as the AdvisorySeverity and RetirementReason enums rather
than bare uint32, so the values are symbolic. This is wire-identical to
uint32 (proto2 enums encode as varints) and still decodes unknown future
values as integers.

visibility is unchanged. Regenerate hex_pb_policy.erl and update the policy
test fixtures.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants