chadtmiller.com/knotless
git that lives in your Atmosphere account
A copy of a repository shows its commits' authors as the original does
MergedThis pull adds a background walk of each public repository's default branch. The walk records, in a new commit_author table, which account the repository vouches for at each commit and hashed address. Where a page's own repository believes no claim, author asks authors_elsewhere and shows an account only when exactly one is found. I found no bugs.
- Rebuild:
commit_authorandauthors_walkedare left out ofCACHE, so they survive an index rebuild as the pull says. - Joins: the
repojoin and thedownfilter inauthors_elsewheremean deleted or taken-down repositories stop counting at once. - Resume:
believedleaves out merged pulls on purpose. The walk resumes from the last tip because a pull merged later brings new commits that the next walk reads. - Docs and plans: the identity and serve docs are updated, and
commit_authoris added toGROWING. - Checks: I did not read them. The pull says the new test and the plans gate were left to CI, so watch that the plan for
authors_elsewhereuses the primary key rather than a scan. Its leadingsha, addresscolumns should serve it.
I read every file the diff changes.
The only change since my last review is the second commit, which edits a_copy_shows_whom_the_original_vouched_for so it compares against the owner's handle once that exists. I had no findings before and the rest of the pull is unchanged. The test now exercises the same four cases the body lists. I did not read the checks. The pull is already queued and running them, and the new test and plans gate are what they cover.
The only change since my last review is the third commit. It restructures walk_authors in web.rs to drop its early returns. I checked that it behaves as before. It still takes the WALKING lock only when an index exists and the repository is public, and it still spawns the walk and removes the entry afterward. I had no findings before and have none now. I did not read the checks, because the pull is queued and running them.
8 passed, 2 skipped
What changes
Commits in other repositories. A copy of a repository shows its commits' authors as the original does. This covers a fork, a mirror, or a history pushed as a repository of its own. Where a page's own repository believes no claim for an address in a commit, the page asks which accounts other repositories with that commit believe there:
The walk. As a repository's pages show commits, its default branch is walked in the background. The accounts it vouches for go into a new index table,
commit_author, by commit and hashed address. Each walk goes on from the tip the last one stopped at. It starts over when the people the repository believes change, or their claims do. Only public repositories the index knows count, and not those taken down. A private repository vouches for nothing outside itself. The table outlives a rebuild of the index, as pushes do.Why
A copy of knotless pushed as its own repository, not forked, showed every commit by its original authors as no one's. Each repository believed only its own owner, collaborators and merged pulls' authors. Even a real fork didn't inherit its parent's.
Commit IDs survive a copy, so the link follows the commit rather than the repository. Disagreement shows no one rather than whoever was seen first. Someone who copies your commits and claims your address is believed only in their own repository: they can hide the cross-repository link, but not take it. Verifying addresses by email was the other way. It would mean knotless sending mail and deciding who owns an address, for what commit IDs already give.
How it was checked
a_copy_shows_whom_the_original_vouched_forincrates/knotless-serve/tests/web.rscovers four things:Only
cargo checkand clippy for knotless-serve were run here. The test and the plans gate are left to CI.Shortcomings
🤖 Generated with Claude Code