Split from T413213, when deleting a tag it is properly deleted on the Gerrit replicas.
Summary
The github replica has mirror = false in which case the ref deletion is not pushed because it does not match the push refspec. However if we set mirror = true, the push refspec is not looked at and that would delete other refs that might be present on GitHub such as pull requests (which are under refs/pull/.
The replication logs for the other Gerrit replicas:
[2026-01-07 11:14:56,125] Push to gerrit2@gerrit2002.wikimedia.org:/srv/gerrit/git/mediawiki/core.git references: RemoteRefUpdate{refSpec=null:refs/tags/list, status=NOT_ATTEMPTED, id=(null)..AnyObjectId[0000000000000000000000000000000000000000], force=yes, delete=yes, ffwd=no} [CONTEXT PLUGIN="replication" project="mediawiki/core" pushOneId="82254395" request="REST /r/*/mediawiki%2Fcore/*/list" ]
[2026-01-07 11:14:56,131] Push to gerrit@gerrit2003.wikimedia.org:/srv/gerrit/git/mediawiki/core.git references: RemoteRefUpdate{refSpec=null:refs/tags/list, status=NOT_ATTEMPTED, id=(null)..AnyObjectId[0000000000000000000000000000000000000000], force=yes, delete=yes, ffwd=no} [CONTEXT PLUGIN="replication" project="mediawiki/core" pushOneId="e2fd1ffa" request="REST /r/*/mediawiki%2Fcore/*/list" ]They pushes the refspec null:refs/tags/list which did delete the tag. I have verified on the bare repo on each of the hosts).
However For GitHub the list tag was still present! The replication log states:
[2026-01-07 11:15:05,984] Replication to git@github.com:wikimedia/mediawiki-core started... [CONTEXT PLUGIN="replication" project="mediawiki/core" pushOneId="a24de74a" request="REST /r/*/mediawiki%2Fcore/*/list" ] [2026-01-07 11:15:06,123] Replication to git@github.com:wikimedia/mediawiki-core completed in 139ms, 15000ms delay, 0 retries [CONTEXT PLUGIN="replication" project="mediawiki/core" pushOneId="a24de74a" request="REST /r/*/mediawiki%2Fcore/*/list" ]
But the tag was still present! The replication to GitHub is configured to push heads and tags:
[remote "github"]
authGroup = mediawiki-replication
createMissingRepositories = false
maxRetries = 50
mirror = false
projects = ^(?:(?!apps\\/).)*$
push = +refs/heads/*:refs/heads/* # <------ for branches
push = +refs/tags/*:refs/tags/* # <------ for tags
remoteNameStyle = dash
replicatePermissions = false
rescheduleDelay = 15
threads = 2
url = git@github.com:wikimedia/${name}But the tag deletion has clearly NOT been replicated since the tag was still shown and I went to delete it manually.
There is something off in the replication config. The reference is https://gerrit.wikimedia.org/r/plugins/replication/Documentation/config.md and it might be related to:
remote.NAME.mirror
If true, replication will remove remote branches that are absent locally or invisible to the replication (for example read access denied via authGroup option).
By default, false, do not remove remote branches.
The GitHub configuration has mirror = false while the two Gerrit replicas have mirror = true. I would need to read the replication plugin code to see whether that affects tags as well.