Surfaced while applying unrelated changes during the epigaea rename. This has been carried as "an apply still owed" from #98 — it is not. The apply runs, reports success, and the change does not take.
Evidence. terraform apply completes cleanly:
github_branch_protection.merge_gate["music-curator"]: Modifying... [id=BPR_kwDOS60XPc4E3jCB]
github_branch_protection.merge_gate["music-curator"]: Modifications complete after 6s
Apply complete! Resources: 0 added, 2 changed, 0 destroyed.
Live state immediately afterward:
$ gh api repos/lentago/music-curator/branches/main/protection/restrictions
{"apps":[],"teams":[],"users":["cpitzi"]}
And the very next terraform plan proposes the identical change again — a perpetual diff, permanently.
Why it matters beyond plan noise. terraform/README.md documents this allowance as load-bearing: the GitHub Actions app is on music-curator's push allowlist "so follow-fold's documented bot merge (music-curator#9) keeps working." If the entry has never actually been live, then either that bot merge does not work, or it works by some other route and the config encodes a belief about the system that is not true. Both are worth knowing; a config that describes a capability the platform never accepted is worse than an absent one, because it reads as covered.
Likely mechanism (unverified): GitHub's branch-protection restrictions API accepts app entries only for apps installed on the repository with write access, and appears to silently drop entries it will not honor rather than erroring. That would explain an apply that reports success while changing nothing.
Worth checking, in order:
- Has
follow-fold actually been merging its own PRs, or has that quietly required a human all along?
- Is the
github-actions app even addressable in a push allowlist, or is the org-level "Allow GitHub Actions to create and approve pull requests" setting the real control surface?
- If the capability is unreachable, remove the allowance from
protection.tf and correct the README — the perpetual diff is a standing lie in every plan, and eliminating it makes real drift visible again.
Related: #98 (where this was first recorded as owed), and the plan-noise principle — a diff that never clears trains readers to skim plans, which is exactly how a genuine change slips through.
Surfaced while applying unrelated changes during the epigaea rename. This has been carried as "an apply still owed" from #98 — it is not. The apply runs, reports success, and the change does not take.
Evidence.
terraform applycompletes cleanly:Live state immediately afterward:
And the very next
terraform planproposes the identical change again — a perpetual diff, permanently.Why it matters beyond plan noise.
terraform/README.mddocuments this allowance as load-bearing: the GitHub Actions app is onmusic-curator's push allowlist "so follow-fold's documented bot merge (music-curator#9) keeps working." If the entry has never actually been live, then either that bot merge does not work, or it works by some other route and the config encodes a belief about the system that is not true. Both are worth knowing; a config that describes a capability the platform never accepted is worse than an absent one, because it reads as covered.Likely mechanism (unverified): GitHub's branch-protection restrictions API accepts app entries only for apps installed on the repository with write access, and appears to silently drop entries it will not honor rather than erroring. That would explain an apply that reports success while changing nothing.
Worth checking, in order:
follow-foldactually been merging its own PRs, or has that quietly required a human all along?github-actionsapp even addressable in a push allowlist, or is the org-level "Allow GitHub Actions to create and approve pull requests" setting the real control surface?protection.tfand correct the README — the perpetual diff is a standing lie in every plan, and eliminating it makes real drift visible again.Related: #98 (where this was first recorded as owed), and the plan-noise principle — a diff that never clears trains readers to skim plans, which is exactly how a genuine change slips through.