chadtmiller.com/knotless
git that lives in your Atmosphere account
An agent watching an owner finds their private repositories shared with it
MergedThis pull carries no change, so I could not review the code its body describes. The head commit 93bcdbf is an ancestor of main: main has since moved to 935592d on top of it. pull_diff is empty, and repo_diff from main to agent/private-owners reports no differences. The commit list is empty too. None of the described work is in the branch: not the repo share invite, the --owner private-repository watching, the deploy change, or the test extension. If it merged as it stands, it would merge nothing, and the gate would approve a no-op.
Push the real commits to agent/private-owners, or check that the right branch was pushed. Then merge or rebase it onto current main and re-request review. The pull is already queued, so it needs to be taken out of the queue or re-queued at the new head.
I'll review the actual diff once it exists. Two things I'll check then, from the description:
- Whether
docs/reference/cli.mdanddocs/design/access.mdare updated. - Whether a
.changeset/file is added, sincecrates/knotless/srcchanges.
This round has the real change, so I reviewed it. The earlier empty-branch problem is fixed.
- Share:
repo sharenow leaves the invite as a best-effort hint, only when access is granted, so--undoleaves none. A failure to leave it is ignored, as the body says. - Agent:
Agent::listadds the owner's invited private repositories to its public ones. It keeps only invites whose owner DID matches, and skips any repository it can no longer open. A failure to list invites is logged, and the public repositories are still watched. - Paging: the invite paging loop copies the triager's. It stops on an empty page, and the server keeps the cursor when there is nothing new, so it can't spin.
- Docs and changeset:
access.md,collaboration.md,reviews.mdandcli.mdare updated, and there is a changeset. - Tests: the private-repository test now also runs the agent with
--owneralone. I did not run the tests or check coverage, and left both to CI.
The two shortcomings the body names stand: repositories shared before this change have no invite, and invites aren't taken back on unshare. Both are acceptable as documented.
1 cancelled, 2 skipped
What changes
knotless repo shareleaves an invite. Sharing a private repository with an account also leaves that account an invite at the appview (dev.knotless.inviteRunner), asrunner addandtriager addalready do. Like showing the repository to the appview beside it, it is a hint, so a failure to leave it does not fail the share.knotless-agent --ownerwatches private repositories too. Besides the public repositories the owner's PDS lists, it now watches each of that owner's private repositories whose invite it holds and that it can read as a member. One it can no longer read, as after an unshare, is passed by. Without an appview able to list invites (one with no gateway DID), it logslisting the invites left it failedand watches the public ones as before.The reviewer's deploy no longer names group-host. It was re-shared with review.knotless.dev with this branch's CLI, which left its invite, so
--owner chadtmiller.comcovers it.Why
No PDS lists another account's private repositories, so
--ownersaw only public ones, and every private repository a reviewer should read had to be added toKNOTLESS_REVIEW_REPOSby hand. A private one left off the list was never reviewed, which held its pulls at a gate on review.knotless.dev with nothing to say why. Invites are how the runner and the triager already find private repositories, so the reviewer reuses them rather than needing a new mechanism.How it was checked
an_agent_reviews_a_private_repositorys_pullsnow goes on to open a second pull and run the agent with--owneralone and no repositories named. It reviews that pull, reading the repository's.knotless/review.md. The public--ownertest runs without a gateway, so it takes the path where invites can't be listed. Built and clippy-clean locally; the tests and the coverage gate are left to CI.Shortcomings
Repositories shared before this change have no invite until they are shared again. Invites aren't taken back on unshare: the agent just stops being able to read the repository and passes it by.