feat(brand): plan repo metadata changes, dry-run by default - #23
Merged
Conversation
added 2 commits
July 27, 2026 20:03
Repo description, homepage and topics are the one marketing surface with no file behind them: git does not version them, markers cannot reach them, and they are what shows on the repo card, in GitHub search and in the org listing. So they drift silently and stay drifted — seven descriptions still advertise 41+ or 55+ models against a catalog of 66. This proposes the changes and writes nothing without --apply. Rollback stays restore-repo-metadata.mjs against the before-snapshot. The design constraint is that it NEVER writes prose it invented. A description is only ever edited by substituting a stale number for the published one; the sentence stays as whoever wrote it left it. That keeps the mechanical part mechanical and leaves authorship where it belongs. Topics are proposed rather than derived-and-trusted, and reading the first dry run is what caught the flaw in deriving them from repos.json's "shape": shape says how a repo ships, not what it is about. renovate-config is `md` for the same reason the x402 docs repos are, and would have been tagged x402/usdc. Overridden by name, and topics are additive so a human's existing choices are never removed. Homepage is only filled where repos.json states one. 33 repos have none and repos.json has no data for them; guessing a URL is not a gap this can close.
…ishes to The first pass filled homepage only where repos.json stated one, which was nowhere — 33 repos had none and repos.json had no data for them. But for a package repo the homepage is a fact, not a judgement call: take the name from the repo's own manifest, ask npm or PyPI whether that package exists, and use the package page if it does. A repo that publishes nothing still gets nothing. That is the line between deriving and inventing. 12 more repos now get one, each verified against the registry before it is proposed.
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.
Repo description / homepage / topics are the one marketing surface with no file behind them: git does not version them, markers cannot reach them, and they are what shows on the repo card, in GitHub search and in the org listing.
So they drift silently and stay drifted. Seven descriptions still advertise 41+ or 55+ models against a catalog of 66.
Writes nothing without
--applyRollback stays
restore-repo-metadata.mjsagainst the before-snapshot.It never writes prose it invented
A description is only ever edited by substituting a stale number for the published one. The sentence stays as whoever wrote it left it:
That keeps the mechanical part mechanical and leaves authorship where it belongs.
Reading the dry run caught a real flaw
I first derived topics from
repos.json'sshape. Shape says how a repo ships, not what it is about —renovate-configismdfor the same reason the x402 docs repos are, and would have been taggedx402, usdc. Overridden by name.Topics are additive only, so a human's existing choices are never removed, and only proposed where a repo has none at all.
What it cannot close
33 repos have no homepage and
repos.jsonhas no data for them. Guessing a URL is not a gap a script should close, so it fills only what is stated.Current plan