Repository navigation
docs: refresh docs - #39
Merged
Merged
Conversation
Co-Authored-By: Joshua Li <14209781+joshuarli@users.noreply.github.com>
joshuarli
marked this pull request as ready for review
October 17, 2026 00:00
joshuarli
enabled auto-merge (squash)
October 17, 2026 00:00
joshuarli
approved these changes
Oct 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope: whole repo, no audience filter; part of a devinfra docs refresh.
The only doc was an 8-line README that said what the repo is but not how to use a mirrored image or add one. This PR adds that coverage. Markdown went from 8 lines to 64 lines, a net increase for new coverage.
Files
README.md(rewritten): purpose, the published image name for each entry, the add-or-update workflow, what CI does on PRs and onmain, and the license. Nothing was cut except informal wording.AGENTS.md(created): a thin router with the commands, two invariants, and a pointer to the README.main.pyare an external-quirk note about docker.io and tool-required# noqa: E501, so all of them stay.Claims and code evidence
ghcr.io/getsentry/image-mirror-<source with / replaced by ->:<tag>:dest_imginmain()sync.amd64andarm64are mirrored: theARCHSfilter inImage.update.updatere-resolves every entry, including mutable tags: it loops over all ofIMAGES. PR chore(pg): Add v18 postgres and run update #32 hit this.sync --dry-runon PRs andsyncafterdocker login ghcr.ioon pushes tomain:.github/workflows/main.yml.syncre-pushes all digests of an image when any one is missing: it computestodobut then loops overimg.digests.updatesilently does nothing when theIMAGESblock does not match its regex, becausere.subwith no match returns the source unchanged.Could not verify
pre-commithooks were not run. See checks.Code looks wrong (not changed)
updatecrashes with HTTP 400 on single-architecture images. Reproduced oncheckr/flagr:latest. In_digests, for theSINGLEcontent type, the blob request sendsAuthorization: Bearer. Docker Hub redirects to a presigned S3 URL, urllib forwards the header, and S3 rejects the doubled auth. Suggested fix: fetch the blob without following the redirect automatically, then re-request theLocationwithout the header. The README documents a manual workaround until this is fixed.ARCHScontains'arm64/v8', but_digestsreturns onlyplatform['architecture']with no variant, so that entry never matches. It is dead, and harmless.updateexits 0 without writing anything when the regex misses (see above). Raising when there is no match would enforce the AGENTS.md invariant.Candidates to enforce
IMAGESblock layout invariant: makeupdatefail when the regex does not match.Skipped
Checks run
python3 main.py --helpto confirm the subcommands and--dry-run.python3 main.py update --dry-runfailed oncheckr/flagr:latest. Calling_digestsdirectly reproduced the S3 400. A multi-arch entry (clickhouse/clickhouse-server:26.8.1.2041) resolved to the pinned digests.test -e).pre-commitwas not available in the sandbox (no pip), so I did not run the repo hooks.via @joshuarli.
--
View Junior Session [Sentry]