# Upstream walknot is a fork of **knot2**, Tangled's knot, extracted from the Tangled monorepo. - Source: `https://tangled.org/tangled.org/core` - Imported at: `ab1baed311194dcbef9aaac1131f81ce2cc94671` (knot2 v1.20.0, 2026-11-04) ## What was imported, and where it lives here | upstream (`tangled.org/core`) | walknot | |----------------------------------------|----------------------| | `knot2/crates/*` | `crates/*` | | `crates/{knot-capability,lexicons,trusted-proxies,gix-chunk,gix-commitgraph}` | `crates/*` | | `knot2/third_party/*` | `third_party/*` | | `knot2/interop/*_test.go` | `interop/` | | `{knotfeed,tapc,log}` (Go, for interop)| `interop/tangled-core/` | | `lexicons/` | `lexicons/` | | `docs/src/content/docs/{knots,reference/knot-config.md}` | `docs/upstream/` | | root `Cargo.toml` (knot-relevant parts), `Cargo.lock`, `rust-toolchain.toml` | same | | `knot2/{README.md,example.toml,justfile,Containerfile,_typos.toml}` | root (`README.md` → `UPSTREAM-README.md`) | Path adjustments made while importing (and nothing else): - `crates/knot-lexicons/build.rs`: the workspace root is two levels up, not three. - `crates/knot-server/tests/invariants.rs`: the knot root *is* the workspace root, and the "no subprocess in src" scan looks at paths relative to `crates/`. - `crates/knot-xrpc/tests/atproto_interop.rs`: runs `go test` in `interop/`, which is its own Go module (`interop/go.mod`, with `tangled.org/core` replaced by the vendored subset). ## Porting upstream changes ```sh git -C ~/src/core log --oneline ab1baed31..origin/master -- knot2 crates/knot-capability \ crates/lexicons crates/trusted-proxies crates/gix-chunk crates/gix-commitgraph lexicons ``` For each relevant commit, apply it with the path mapping above (`git -C ~/src/core format-patch -1 --stdout | sed 's#knot2/crates/#crates/#g' | git am -3` works for most), then bump the "Imported at" commit here.