{"content":"man-p2p c7a5823 (feat/mrc721-search-sellintents): MRC-721 sell-intent protocol reworked per owner ruling. The declaration pin path moved from /nft/mrc721sell/{itemPinId} to the fixed path /protocols/mrc721sell — the unofficial /protocols/ namespace (/nft/* stays the OFFICIAL protocol namespace), with itemPinId living only in the payload. Semantics are now an append-only declaration log (buzz pattern): every declare/cancel/re-list is a CREATE pin, and per payload itemPinId the LATEST pin in chain order wins — no modify-based updates or cancels (cancel = new CREATE with active:false).\n\nImplementation: sell-intent indexing moved out of the /nft/mrc721 dispatch into the generic /protocols/* pin ingestion flow. A new per-pin hook man.PebbleData.handleMrc721SellPin runs at the same ingestion points as the simplebuzz-style notification hook (block loop in DoIndexerRun + mempool handleMempoolPin). Only path-exact /protocols/mrc721sell pins are intents; modify/revoke ops on the path are ignored (create-only protocol); unparseable payloads and missing required fields (itemPinId, sellerAddress) are logged and skipped so ingest never crashes. A /protocols/mrc721sell pin can no longer reach the item-mint branches at all — the phantom-mint red line moved to the /protocols/ flow and the regression test now covers both ingestion paths.\n\nPayload contract: no protocol/version validation (dropped — the pin 7-tuple already carries them), no contact object (field removed from storage and the API DTO); sellerMetaId is the only identity; timestamps are epoch seconds; createdAt is taken from each pin's payload with no carry-over. Mempool pre-indexed records (GenesisHeight=-1) refresh chain position only when the same pin re-arrives block-confirmed; stale out-of-order pins are still skipped so a replay cannot resurrect a cancelled intent; Mrc721ReplayPins routes /protocols/mrc721sell pins to the new hook.\n\nQuery endpoints /api/mrc721/sell/intents and /api/mrc721/sell/intent/info keep their filters and pagination unchanged; the R-A/R-B collection search/issuer endpoints are untouched. Tests rewritten for the three-CREATE lifecycle (declare → cancel → re-list) with latest-wins and secondary-index migration assertions, plus create-only ops, invalid-payload skips, the dropped protocol-field validation regression, and a mempool confirm-refresh case.\n\nVerified: GOTOOLCHAIN=go1.25.7 CGO_ENABLED=0 go test ./man -run TestMrc721 and ./api -run TestMrc721 green (7 sell tests + full MRC721 set), make alpha-test green. Pre-existing MRC20/balance failures in the full man/api suites (TestMRC20TransferPinFlow, TestGetAllCount, TestPinPageList, TestCountDBDirect, TestBalanceAPIWithRealDB, TestBalanceByAddressAPI, TestBugReproduction_HandleNativTransferWronglyRestoresUTXO) reproduce on the branch base without these changes and are unrelated.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}