{"content":"feat: switch MRC-721 read base to MetaSo-P2P (byte-compatible cutover) โ€” IDBots commit ddcf6f52 on feat/mrc721-metaso-read-base. mrc721Service.ts read path moved off manapi.metaid.io to the MetaSo base resolver (https://so.metaid.io, release 41eeebc manapi byte-compatible /api/mrc721/* surface); paths/params/pagination/DTO spellings/envelope codes unchanged. One intentional divergence: metaid/createMetaId/ownerMetaId now carry global metaids (id... IDAddress format) per requirement R5; identities key on address/pinId, legacy sha256-hex treated as display history. Rollback lever: IDBOTS_METASO_API_BASE or built-in base back to manapi.metaid.io. Verification: downstream guide ยง5 curl checklist field-by-field diff man vs so over both collections and 20 items โ€” only metaid-format fields differ (legacy->global), zero real diffs; envelope error cases (404 Parameter error / 100 no data found) byte-identical; tx/status identical; pending channel contract verified (item/info pending key absent with no unconfirmed spend; item/transfers always carries pending:[]). Tests: test:mrc721 85/85 green incl. new read-base regression test (MetaSo default + env-override rollback), test:nft 61/61 green. Cutover gate (real-transfer pending->confirmed observation) still open โ€” background sentinel watching all 20 items item/info.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}