Resolve GitHub mirror lookup failures for three repositories #738

Open
opened 2026-08-03 20:56:21 +00:00 by coilyco-ops · 1 comment
Member

The fleet-wide Forgejo-to-GitHub mirror dry run under infrastructure#737 discovered 34 Forgejo-canonical repositories after excluding the GitHub-canonical Homebrew tap. Thirty-one targets resolve a repository-scoped token and the controller can evaluate their refs.

For these three targets, the GitHub App installation lookup returned 404:

  • coilyco-flight-deck/ward-qa-fixture
  • coilyco-gaming/sirens-echo
  • coilysiren/voice-corpus

An authenticated GitHub repository lookup also returned 404 for each exact counterpart. That evidence does not establish one shared root cause. Depending on the repository, the counterpart may be absent, inaccessible to the observing identity, renamed, intentionally Forgejo-only, or outside the App installation's selected repository set.

The controller fails closed and temporarily skips these three failing targets so the other 31 can mirror. Resolve each repository independently:

  1. Confirm whether a matching GitHub counterpart should exist.
  2. Confirm its owner, name, and visibility.
  3. Confirm whether it should participate in the Forgejo-canonical mirror fleet.
  4. If it should mirror, make the counterpart and App access available.
  5. Remove only that repository's exclusion, run the bounded dry run, and verify the Forgejo and GitHub default-branch SHAs.

The interactive label remains appropriate because one or more resolutions may require a human policy choice or an external GitHub administration action.

The fleet-wide Forgejo-to-GitHub mirror dry run under infrastructure#737 discovered 34 Forgejo-canonical repositories after excluding the GitHub-canonical Homebrew tap. Thirty-one targets resolve a repository-scoped token and the controller can evaluate their refs. For these three targets, the GitHub App installation lookup returned 404: * `coilyco-flight-deck/ward-qa-fixture` * `coilyco-gaming/sirens-echo` * `coilysiren/voice-corpus` An authenticated GitHub repository lookup also returned 404 for each exact counterpart. That evidence does not establish one shared root cause. Depending on the repository, the counterpart may be absent, inaccessible to the observing identity, renamed, intentionally Forgejo-only, or outside the App installation's selected repository set. The controller fails closed and temporarily skips these three failing targets so the other 31 can mirror. Resolve each repository independently: 1. Confirm whether a matching GitHub counterpart should exist. 2. Confirm its owner, name, and visibility. 3. Confirm whether it should participate in the Forgejo-canonical mirror fleet. 4. If it should mirror, make the counterpart and App access available. 5. Remove only that repository's exclusion, run the bounded dry run, and verify the Forgejo and GitHub default-branch SHAs. The `interactive` label remains appropriate because one or more resolutions may require a human policy choice or an external GitHub administration action.
coilyco-ops changed title from Install the GitHub mirror App on three remaining repositories to Resolve GitHub mirror lookup failures for three repositories 2026-08-03 21:05:07 +00:00
Author
Member

2026-08-12 recheck of the three excluded targets

coilyco-gaming/sirens-echo now has a GitHub counterpart. It did not when this
issue was written.

  • https://api.github.com/repos/coilyco-gaming/sirens-echo returns 200.
  • Visibility public, created 2026-08-10T20:08:38Z, which is after this issue.
  • GitHub head is d04fed9e dated 2026-08-10, the initial public release commit.
    Forgejo is at ca137615, so the counterpart exists and is already behind.
  • It carries no .github/workflows directory, so it would not hit the
    workflow-permission wall that is currently blocking three other repositories.

The other two still return 404 unauthenticated, which does not separate absent
from private, so their states are unchanged as far as this evidence goes:

  • coilyco-flight-deck/ward-qa-fixture - 404
  • coilysiren/voice-corpus - 404, and the repository is described as private,
    so 404 is the expected unauthenticated response either way.

What blocks re-enabling sirens-echo

The exclusion was recorded for an App installation lookup 404, not merely a
missing repository, so the counterpart existing does not prove the App can
reach it. That cannot be tested from outside, because repo_scope in
scripts/forgejo_github_mirror_sync.py applies the skip set before --repo,
so an excluded repository cannot be dry-run even when scoped to explicitly.

Removing it from DEFAULT_SKIP_REPOS speculatively would convert a clean skip
into a hard failure if the installation still does not cover it, so that was
not done. Either confirm the App installation includes the repository, or let
--repo override the skip set so exclusions become testable.

## 2026-08-12 recheck of the three excluded targets `coilyco-gaming/sirens-echo` now has a GitHub counterpart. It did not when this issue was written. * `https://api.github.com/repos/coilyco-gaming/sirens-echo` returns 200. * Visibility public, created 2026-08-10T20:08:38Z, which is after this issue. * GitHub head is `d04fed9e` dated 2026-08-10, the initial public release commit. Forgejo is at `ca137615`, so the counterpart exists and is already behind. * It carries no `.github/workflows` directory, so it would not hit the workflow-permission wall that is currently blocking three other repositories. The other two still return 404 unauthenticated, which does not separate absent from private, so their states are unchanged as far as this evidence goes: * `coilyco-flight-deck/ward-qa-fixture` - 404 * `coilysiren/voice-corpus` - 404, and the repository is described as private, so 404 is the expected unauthenticated response either way. ## What blocks re-enabling sirens-echo The exclusion was recorded for an App *installation lookup* 404, not merely a missing repository, so the counterpart existing does not prove the App can reach it. That cannot be tested from outside, because `repo_scope` in `scripts/forgejo_github_mirror_sync.py` applies the skip set before `--repo`, so an excluded repository cannot be dry-run even when scoped to explicitly. Removing it from `DEFAULT_SKIP_REPOS` speculatively would convert a clean skip into a hard failure if the installation still does not cover it, so that was not done. Either confirm the App installation includes the repository, or let `--repo` override the skip set so exclusions become testable.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/infrastructure#738
No description provided.