# Prior art ## pds.js `@pdsjs/git` `@pdsjs/git` stored a repository as one record holding every ref, plus a chain of git bundles. Any two pushes to the repository contended on that one record. knotless splits refs into records with a compare-and-swap each, and replaces bundles with self-contained packs that arrive inline with the listing. ## Tangled Tangled keeps git on separate servers ("knots") and the social records in the PDS. knotless keeps git in the PDS as well. Its server, `knotless-serve`, is optional: a cache that anyone can run and nobody has to trust, and a gateway that only the owners who delegate to it trust. ## Anthropic's Scion Scion ("Redesigning source control at Anthropic", October 2026) replaced git inside Anthropic once agents pushed merges past 30,000 a day. These of its lessons carry over: - Clients are online, so fetch by immutable hash through tiers of caches (`knotless-serve`, the object API). - Shared mutable state should be a compare-and-swap on one row (one record per ref). - Refs are the scaling problem, so agents should work on their own branches. - A working copy is optional (`knotless commit`). ## Cursor Origin Cursor Origin keeps git's wire protocol and builds the agent-facing forge around it. `knotless-serve` makes the same bet for reads: plain git clients, with no special client required.