You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consolidate the release-promotion / repo-bootstrap tooling into petry-projects/.github so all org tooling + standards live in one canonical home (the #596 principle, extended). Agreed end-state; execution gated on the canary-rollout PR queue draining (see Sequencing).
Why
.github already owns the standards (rulesets in standards/rulesets/, lib/ring-pins.sh, the canonical 346L apply-repo-settings.sh). The orchestrators that apply them still live in .github-private, duplicated/divergent. .github-private is a public repo, so there's no secrecy reason to keep operator tooling there.
Delete.github-private/scripts/apply-repo-settings.sh (129L subset) — canonical is .github's 346L superset. Bootstrap then applies the fuller set (merge-settings + GHAS default-setup) — a latent-gap closure, confirmed acceptable.
De-dupescripts/lib/push-protection.sh (divergent shas across repos) — keep .github's.
Workflow-move checklist (canary-rollout.yml)
Secrets present in .github (GH_PAT_WORKFLOWS, release-manager App creds, etc.).
Triggers still valid once hosted in .github (schedule/dispatch).
Cross-repo promotion paths intact — note #1059/#1061 are already fixing cross-repo deployment-record 422s; let those land first so we move the fixed version.
release-manager App (id 4193127) installed on .github with needed perms (Issues:write gap flagged in #1081/#1085 area).
Sequencing (hard gate)
The subsystem currently has 8 open PRs in .github-private (#1010, #1037, #1046, #1061, #1066, #1078, #1084, #1085) + dependabot #1071, all touching these files, last-committed today. Do NOT start the move until that queue drains — otherwise every in-flight PR conflicts. This epic tracks the move; a companion effort is landing the queue.
Goal
Consolidate the release-promotion / repo-bootstrap tooling into
petry-projects/.githubso all org tooling + standards live in one canonical home (the #596 principle, extended). Agreed end-state; execution gated on the canary-rollout PR queue draining (see Sequencing).Why
.githubalready owns the standards (rulesets instandards/rulesets/,lib/ring-pins.sh, the canonical 346Lapply-repo-settings.sh). The orchestrators that apply them still live in.github-private, duplicated/divergent..github-privateis a public repo, so there's no secrecy reason to keep operator tooling there.Scope — move
.github-private→.githubscripts/bootstrap-new-repo.sh(+tests/test_bootstrap_new_repo.bats)scripts/canary-rollout.sh,scripts/lib/canary-rollout.sh(+tests/canary_rollout.bats).github/workflows/canary-rollout.ymlstandards/canary-rings.json(ring-membership registry — co-locate withlib/ring-pins.shalready in.github)docs/bootstrap/new-repo-validation.md,docs/release/versioning.md,docs/initiatives/canary-rollout-adr.mdReconcile / de-dupe (canonical =
.github).github-private/scripts/apply-rulesets.sh(the Consolidate the two file-driven apply-rulesets appliers into one (cross-repo bootstrap story) #596 duplicate) — callers use the canonical.githubapplier..github-private/scripts/apply-repo-settings.sh(129L subset) — canonical is.github's 346L superset. Bootstrap then applies the fuller set (merge-settings + GHAS default-setup) — a latent-gap closure, confirmed acceptable.scripts/lib/push-protection.sh(divergent shas across repos) — keep.github's.Workflow-move checklist (
canary-rollout.yml).github(GH_PAT_WORKFLOWS, release-manager App creds, etc.)..github(schedule/dispatch)..githubwith needed perms (Issues:write gap flagged in #1081/#1085 area).Sequencing (hard gate)
The subsystem currently has 8 open PRs in
.github-private(#1010, #1037, #1046, #1061, #1066, #1078, #1084, #1085) + dependabot #1071, all touching these files, last-committed today. Do NOT start the move until that queue drains — otherwise every in-flight PR conflicts. This epic tracks the move; a companion effort is landing the queue.Related