chadtmiller.com/knotless

Git hosted in your atproto account, on any stock PDS, fast enough for agents.

git clone knotless://chadtmiller.com/knotless

needs the knotless git helper. set it up

Edit pulls, issues and comments; delete comments

Open chadtmiller.com wants to merge into main from chadtmiller.com/knotless:forge/edit-and-delete 0 comments
chadtmiller.com opened on Oct 22, 2026

Once posted, a pull's or issue's title and body, and a comment's body, couldn't be changed, and a comment couldn't be taken back. The web UI is read-only and nothing else wrote these records, so a PR description was frozen once posted.

Edit (knotless edit <url> <at-uri> [--title <t>] [-m <body>], MCP edit_item)

  • Pulls and issues: title and/or body. -m '' drops the body.
  • Comments and reviews: body only. A review's verdict and commit are left alone.
  • Author only. The record lives in the author's account, so it's a putRecord there. It works in spaces the same way.
  • Rewrites the record as stored (unknown fields kept) and stamps updatedAt. Added to the pull, issue and comment lexicons and record types, so retarget's rewrite keeps it.

Delete (knotless delete-comment <url> <at-uri>, MCP delete_comment)

  • Comments and reviews, author only. The owner still uses hide for others' comments.
  • Pulls and issues stay close-only, since deleting one would orphan the comments on it.

Plumbing

  • Target::subject is split into record (fetch any forge record about this repo from its author's repo, space-aware) and the existing pull/issue check, so edit and delete share the read path.
  • show_item returns each comment's updatedAt.
  • The appview needs no changes: Jetstream/firehose updates already re-index, and deletes already drop the record.

Tests

  • CLI (knotless-serve/tests/forge.rs): a non-author edit, nothing to change, an unknown flag, a non-forge collection, a title on a comment, an empty comment body, a successful edit of an issue and a comment, dropping a body, deleting by a non-author, deleting a non-comment, deleting twice, and a record about another repo.
  • MCP (knotless-mcp/tests/mcp.rs): editing a pull's title and body and a comment, updatedAt on show, deleting a comment, and the non-author and non-comment errors.

Not compiled or run from where this was written, so just test and just cov need to pass before merging.