| … | … | @@ -67,12 +67,28 @@ still carries), and already had the appview `commitOps`. Findings that settled t |
| 67 | 67 | layers; `DidPeer` gained the optional write/session/blob relay + getRepoStatus/describeRepo/handle. |
| 68 | 68 | ALL existing contracts preserved (add/onconnection/get/ready — router+commitops green; favela loads |
| 69 | 69 | clean + appview-ingest green under bare). Ported co-owned-front-thrash → test/co-owned.test.mjs. |
| 70 | | - ▢ 1b — repoint the bridge: `server-bare.js`/`server.js`/`pds-serve.js` import the shared |
| 71 | | `DidPeerRouter` (owns-swarm + join + relay + rpc). Bridge suite + `npm run smoke` green, THEN delete |
| 72 | | `pds/lib/peer-front.js`, `peer-router.js`, `did-peer.js` (+ their tests). ⚠ verify the front's write |
| 73 | | RPC + FleetRelay wiring end-to-end here (1a added them but only the read/freshest path is unit-tested). |
| 70 | - ◑ 1b — repoint the bridge. Split into 1b-now (done) + 1b-cleanup (pending): |
| 71 | - ✅ 1b-now (2026-07-23, atproto-bridge commit c96e0ce, atproto-did-peer 0.2.1 commit 2702b56): |
| 72 | `pds-serve.js` now constructs the shared `DidPeerRouter` (owns-swarm + injectable `join` + relay + |
| 73 | `rpc:true` + `resolveVerifyKey`). `resolvePlcVerifyKey` moved to `pds/lib/verify-key.js` (keeps |
| 74 | atproto-identity out of the shared module's runtime deps). ci.yaml vendors atproto-did-peer; declared |
| 75 | in pds/package.json; linked by SIBLING SYMLINK (canonical — NOT `npm install`, which drifts the |
| 76 | ^-ranged deps). VERIFIED: migrated `membrane.test.js` + `membrane-only.test.js` construct the shared |
| 77 | router EXACTLY as pds-serve does and drive the full HTTP membrane (reads + createSession-over-rpc + |
| 78 | describeServer/listRepos/resolveHandle + 404s + UDS status). Full pds suite green 46/46, 188/188. |
| 79 | Bug found + fixed here: `DidPeerRouter.front()` must WAIT for a verified head (freshest-of-ready) — a |
| 80 | single front() call (no retry) was resolving to a head-less front (0.2.1). |
| 81 | ⚠ ENV NOTE: `npm run smoke` is blocked LOCALLY by a pre-existing bare 1.26 < 1.27 mismatch |
| 82 | (bare-fetch@3.2.0 → bare-performance@2.1.1 engine). Not our regression; the test suite (brittle-node, |
| 83 | under node) is the working gate. The committed pds lockfile is pre-existingly stale (npm ci fails); |
| 84 | the repo installs via `npm install --production` at ROOT + the cp -rL vendor step (CI never installs |
| 85 | in pds/). Siblings are symlinks — never `npm install` a sibling (it drifts bare-fetch). |
| 86 | - ▢ 1b-cleanup — migrate the remaining 12 bridge tests off peer-router.js/peer-front.js/did-peer.js |
| 87 | (some now redundant with atproto-did-peer's own suite), then DELETE those 3 lib files + the dead |
| 88 | `front-peer.mjs` (uses the removed PeerFront.discover). Also fold in hyper-social #10/#11 here |
| 89 | (never fold the relay from a front with `rpcConnected:false`). |
| 74 | 90 | - ▢ 1c — repoint favela: mostly free; migrate co-owned reads to `front()` freshest-selection. |
| 75 | | - ▢ 1d — fold in hyper-social #10/#11 (never fold the relay from a front with `rpcConnected:false`). |
| 91 | - ▢ 1d — (folded into 1b-cleanup) hyper-social #10/#11. |
| 76 | 92 | |
| 77 | 93 | ## PHASE 2 — migration, rehearsed on a SNAPSHOT (never hot) |
| 78 | 94 | Per the wj62 discipline (`reconcileFromCar` on FRESH storage; rocksdb hot-copy is inconsistent): |