Skip to content

fix(github/environment): omit plan-gated protection fields unless set - #1373

Open
0x0f0f0f wants to merge 1 commit into
alchemy-run:mainfrom
0x0f0f0f:fix/github-environment-plan-gated
Open

fix(github/environment): omit plan-gated protection fields unless set#1373
0x0f0f0f wants to merge 1 commit into
alchemy-run:mainfrom
0x0f0f0f:fix/github-environment-plan-gated

Conversation

@0x0f0f0f

Copy link
Copy Markdown

createOrUpdateEnvironment always sent wait_timer, prevent_self_review and reviewers, explicit defaults (0/false/null) when the props were unset. On a private repository without an Enterprise plan that field family is plan-gated, and GitHub 422s ("Failed to create the environment protection rule") when the fields are present at all, defaults included, making Environment unusable on private Free/Pro/Team repositories.

Send each field only when its prop is set now or was set before: never-set fields are omitted (plan-gated repos work), while removing a previously-set prop still sends the explicit default so removal converges: a repository that held the value demonstrably supports the field. deployment_branch_policy is available on all plans and keeps its explicit null.

The Environment test suite already works around this gate ("The host repository is public because environments (and their protection rules) on private repositories are plan-gated"); this makes the provider itself honor it.

createOrUpdateEnvironment always sent wait_timer, prevent_self_review and
reviewers — explicit defaults (0/false/null) when the props were unset. On a
private repository without an Enterprise plan that field family is plan-gated,
and GitHub 422s ("Failed to create the environment protection rule") when the
fields are present at all, defaults included — making Environment unusable on
private Free/Pro/Team repositories.

Send each field only when its prop is set now or was set before: never-set
fields are omitted (plan-gated repos work), while removing a previously-set
prop still sends the explicit default so removal converges — a repository that
held the value demonstrably supports the field. deployment_branch_policy is
available on all plans and keeps its explicit null.

The Environment test suite already works around this gate ("The host
repository is public because environments (and their protection rules) on
private repositories are plan-gated"); this makes the provider itself honor
it.
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.

1 participant