Skip to content

ops(metadata): provision least-privilege repository settings writer #1579

Description

@seonghobae

Operational blocker

PR #1576 adds the organization-owned desired-state reconciler for repository descriptions, GitHub Topics, and GitHub Pages settings. Audit mode needs no write credential, but live apply mode intentionally fails closed until a dedicated repository-settings identity exists.

Do not reuse reviewer/model/provider credentials or silently broaden the ordinary workflow GITHUB_TOKEN.

Required authority

Provision a dedicated GitHub App installation token path or other approved short-lived credential exposed to the protected central workflow as CWL_REPOSITORY_METADATA_TOKEN with the minimum permissions needed by the managed repositories:

  • repository Administration: write for PATCH /repos/{owner}/{repo} description/homepage changes and PUT /repos/{owner}/{repo}/topics;
  • repository Pages: write plus Administration write only where GitHub Pages creation/update is enabled in the desired-state manifest;
  • no Issues/PR/review/merge/release/package/Actions-secret/model-provider authority unless independently justified.

Prefer a GitHub App restricted to the explicit managed repository set over a long-lived personal token. Keep the credential unavailable to pull-request code and model processes.

Acceptance

  1. PR feat(metadata): reconcile repository descriptions, topics, and Pages #1576 integrates through normal protected governance with exact-head quality/security/review evidence.
  2. Repository Metadata Reconciliation audit mode reports expected drift on a protected-main run.
  3. Apply mode obtains the dedicated credential without exposing it in logs/artifacts and updates one canary repository's description/topics.
  4. A fresh live REST read proves the exact description/topics now match config/repository-metadata.json.
  5. When a repository's Pages intent is later enabled, the same path creates/updates GitHub Pages and a fresh Pages endpoint read proves the published source/settings; source/workflow definition alone is not completion evidence.
  6. Revoking or removing the dedicated identity makes apply fail closed and leaves audit mode usable.

This issue owns external credential/App provisioning only; desired-state semantics and reconciler implementation remain in #1576.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ci-cdCI, GitHub Actions, checks, release, or supply chainenhancementNew feature or requestpriority: highHigh-priority or P1 worksecuritystatus: blockedBlocked by conflict, dependency, or required prerequisitetype: maintenanceMaintenance, build, dependency, or operational upkeep

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions