Repository navigation
Conversation
A repository renamed or transferred on its code hosting platform keeps answering at the old path through a redirect. Comparing url without following it makes such a project look like a technical fork of itself.
Lets a project declare the repository locations it endorses, so parsers can tell its own mirrors from technical forks. The key is read only from the publiccode.yml at url, and a listed repository counts only if its own publiccode.yml points back, so neither a clone nor the listing project can claim a location on its own. Refs publiccodeyml#293
|
@lsmith77 is attempting to deploy a commit to the bfabio's projects Team on Vercel. A member of the Team first needs to authorize it. |
Lets a project list the earlier values of url, so catalogs can resolve references made against an old location and merge the old entry into the current one. Only the old location can confirm a move, through its own url or a redirect, and the whole chain of moves must hold. Listing a location under mirrors is not consent to a move. Refs publiccodeyml#293
Because the whole chain of moves must be confirmed, a location shut down before catalogs have seen its forward pointer breaks the confirmation of every earlier location as well.
lsmith77
marked this pull request as draft
October 30, 2026 19:35
This branch has not been deployed
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.
Work in progress, opened for review of the approach rather than for a vote. Builds on #391 (
mirrors), which should be merged first, and reuses its rules for comparing and fetching URLs. Until #391 is merged this PR also shows its commits; to review only this PR's changes, see the compare view.The motivating case is public sector code moving from GitHub or GitLab to a national forge such as code.overheid.nl, as the Dutch registry expects in #293. Today such a move breaks every reference to the old
url, and catalogs keep a stale entry next to the new one. This PR lets the project list its earlier locations, so catalogs can resolve those references and merge the old entry into the current one. The key is optional; parsers that do not know it see a new project, as today.What an entry means. An entry says the software used to live there, and only counts once the old location agrees. It does not say the code is unchanged, give the new location anything beyond what a catalog already attaches to
url, or apply to forks: a fork that continues a project without its authors is a variant, with its ownurlandisBasedOn.Security
previousURLsmoves an old location's history onto the new one, so it is the main target for takeover. The central rule: only the old location confirms a move, through its ownurl(its last known file names the new location) or a redirect there. Confirmation flows forward: each old location confirms only the one move it made, the whole chain must be confirmed, and later changes at an old location do not affect a confirmed move. Most cases below follow from this.mirrorsis not consent to a move.url, so only one claim can be confirmed; others are ignored.[A, B]where A moved to B but B is live elsewhere.False claims change nothing and block nothing.
Edge cases
urls together.previousURLs.urlconfirms the move.urlto the new location confirms the move.isBasedOnpoints to an upstream that has moved:previousURLslets it resolve, without vouching for the variant's claim.Trade-offs and open concerns
These are why the PR is a draft:
organisation/uri's out-of-band verification, the standard has not prescribed catalog behaviour before. Should these rules be normative, or a non-normative guide for catalogs?Possible follow-ups: a trusted archive such as Software Heritage as the source of an old location's last known file; naming a successor in advance for forges that disappear without warning.
Rationale: Sanctioned Mirror Declarations.