Skip to content

Adopt supported GitHub rulesets and track remaining provider gaps #69

Open
2 of 6 issues completed
Open

Description

@devantler

🤖 Generated by the Agentic Engineer

Problem

Some GitHub governance policies still lack a reviewed declarative owner. This issue tracks adoption in deploy/organization-rulesets/ and the remaining provider gaps. A schema inventory does not establish the current number of live or UI-managed rulesets.

Reviewed capability matrix

The released provider v0.20.0 OrganizationRuleset CRD at commit a211e095e2fe49c477836acec2ad4a28aa60e030 exposes the following capabilities. Its Git blob is 566bb7e5736b64f4e60920e2f52e986c26a53ce4; SHA-256 is f50cfddb37f198f32ed950172fbf1c7891ca70806b379aa325098e85c5dacfad. The inspected current-main commit 0609e5fcca24d0f737c8cd9c6b4a39439f51f3ba contains identical bytes.

Capability Schema status Remaining work
Custom-property conditions Present: repositoryProperty Observe-first inventory, full adoption and selector readback
Copilot review Present: copilotCodeReview Maintainer activation decision before adoption
Push-file restrictions Present: target push and all four restriction types Reviewed policy, scope and native controls
Required status checks Present: typed doNotEnforceOnCreate Actual create/reconcile evaluation; schema alone is not proof
Enterprise-owner bypass Present: EnterpriseOwner Exact approved bypass list
Code-quality rules Absent: codeQuality Provider support
Repository name/transfer policies Absent: target repository and repositoryTransfer Provider support; bypass support does not supply these rules
Actor/event workflow execution protection No generated resource in the complete CRD tree Separate adapter/adoption work in #226
Secret-scanning alert resolution Rule and parameters absent Provider or approved adapter support, plus native controls in #194

Adoption procedure

Rebind the live non-archived repository and ruleset universe before adopting each policy. Observe first, declare the complete approved resource and bypass list, then verify effective GitHub targets and enforcement. Keep unsupported capabilities as named gaps; do not infer clearance from a successful team audit.

Acceptance

Every policy in the freshly verified live inventory has an authoritative declarative owner and live readback, or an explicitly documented provider/approval blocker. Push and workflow-execution policies follow the same evidence standard. No policy is enabled by this schema inspection.

Evidence: immutable OrganizationRuleset CRD, complete release CRD tree. The repository capability matrix and its integration assertions are updated in PR #400. Related: #121, #194, #226.

Activity

  1. devantler commented on Jul 16, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Daily AI Engineer

    Priority raised — maintainer directive (2026-07-16): "We do not want ANY non-declarative config on GitHub, everything as code." That converts this issue from a passive watch-upstream item into an actively-pursued goal, and makes the residual UI-managed set a standing defect rather than an accepted limitation.

    Fresh cost evidence — #87 (closed today). The five required-workflow rulesets (EnableAutoMerge 3716878, DependencyReview 17213449, ScanGitHubActions 14426226, .NET 3716863, Go 10320335) had drifted onto the archived, frozen reusable-workflows source. Because they are exactly the set this issue lists as inexpressible (all scoped by custom/system properties → repository_property), the fix could not be a PR: it required a manual maintainer UI session, produced no GitOps record, and the agent could not even read the result (403 on org rulesets). The inert LintDocumentation ruleset was deleted in the same session. This is the concrete toil this gap imposes — and it will recur on every future change to those five.

    The unblock is one capability: repository_property conditions unblock 6 of the 10 at once (code-scanning, EnableAutoMerge, LintDocumentation→now deleted, ScanGitHubActions, .NET, Go). Everything else here is a long tail.

    Sharpened next step (was left open in the body): determine where the gap actually lives before proposing a fix —

    1. does upstream integrations/terraform-provider-github already express repository_property conditions on github_organization_ruleset? If yes → the gap is provider-upjet-github CRD generation/config → a regeneration/bump may be sufficient. If no → the feature request belongs in the Terraform provider first, and upjet follows.
    2. Same determination for the required_status_checks create panic documented in deploy/organization-rulesets/README.md (do_not_enforce_on_create nil type-assert) — that one looks like a genuine upstream bug, not a missing feature, and may be the cheapest high-value upstream contribution here.

    Per contribute-upstream-dont-fork, the real fix is upstream, not a local workaround. Filing those upstream issues/PRs is gated on explicit maintainer approval (outward-facing artifacts outside devantler-tech, plus an AI-contribution-policy check on each target repo) — that approval is being requested now; this comment records the plan, not a filing.

    Housekeeping: this issues body still points at deploy/rulesets/; the tree is now split into deploy/organization-rulesets/ and deploy/repository-rulesets/. Also the LintDocumentation row is now moot (ruleset deleted in #87), so the blocked set is 9, not 10.

  2. moved this to 📥 Backlog in 🌊 Project Boardon Jul 18, 2026
  3. added theissue type on Jul 18, 2026
  4. devantler commented on Jul 25, 2026

    @devantler
    ContributorAuthor

    🤖 Generated with [Claude Code] (interactive session, at the maintainer's request)

    Status update — most of the blocked table above is now unblocked upstream.

    provider-upjet-github#295 bumped the bundled terraform-provider-github 6.6.0 → 6.13.0 (merged 2026-07-24, closing #289). Verified against the provider's main generated CRDs:

    • ✅ repositoryProperty conditions — unblocks the 6 custom-property-scoped org rulesets
    • ✅ copilotCodeReview rule type
    • ✅ push target + all four push-file rules — push rulesets are now adoptable
    • ✅ shaPinningRequired on both RepositoryPermissions and OrganizationPermissions
    • ❌ still absent: rule type code_quality, target repository, rule type repository_transfer

    ⚠️ Not yet consumable: main is 22 commits ahead of v0.19.1 and no release has been cut, so nothing here is actionable until a release ships and the platform repins.

    Adoption work + the full verified table is captured in #121 (blocked by devantler-tech/platform#2800). Leaving this epic's body as-is for history; #121 supersedes the table for planning.

    One correction worth folding into #85 separately: github_organization_settings does exist in terraform-provider-github v6.13.0 — it is simply not wrapped by provider-upjet-github. That makes #85 an upstream resource-generation addition rather than a wait-for-upstream-feature item.

  5. changed the title [-]Adopt remaining rulesets declaratively as provider-upjet-github gains support (10 org rulesets + push + Actions policies)[/-] [+]Adopt supported GitHub rulesets and track remaining provider gaps[/+] on Oct 3, 2026
  6. added a commit that references this issue on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    No fields configured for Epic.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions