From 4d32622443e48acbfa985c3a0c48f9cf9a4c5876 Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Sat, 3 Oct 2026 09:43:58 +0700 Subject: [PATCH] docs: H14 fixed, H1 partial (schema + notice; reader supersede open) --- AGENTS.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 95f3969..015e6cb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1851,8 +1851,12 @@ keeps `stateRef` in sync cross-tab; the backup flag is per-account (`lib/backup.ts`). Listing detail / Events render `ErrorState` on outage. **Deferred (documented, NOT fixed).** -- `H1` — a spot "claim" CLONES rather than transferring (`claim-from` is written - but **never read**); needs a designed handoff/resolution, not a patch. +- `H1` — **PARTIAL**: `claim-from` now stores the original **coordinate** + (`30818:pubkey:d`, not an ambiguous bare pubkey), `SkateSpot` parses + `claimedFrom`/`claimReason`, and a claimed listing shows a "Claimed listing" + notice. **Reader-side supersede is still open** — gating it safely (only an + admin-approved private claim, or an aged original) is a design item; a wrong + rule would hide real spots. - `C5b` — **FIXED**: `src/lib/featuredVerification.ts` verifies a provider-authored NIP-57 receipt (cached provider lookup) and the tour/event/Lab list hooks rank only receipt-backed `featured` items; falls back to the self-asserted tag when @@ -1861,8 +1865,11 @@ keeps `stateRef` in sync cross-tab; the backup flag is per-account real payment can't be reused to inflate `paymentVerified`. - `H13` — **FIXED**: the offer seller is always the listing author (derived from the event pubkey), never a self-declared `role` tag. -- `H14` — an NWC timeout can still fall through to a second rail with no - `lookupInvoice`, risking a double payment. +- `H14` — **FIXED**: after an NWC `pay()` timeout, `useNWC` polls `lookupInvoice` + for settlement and, if still unknown, throws a coded error + (`PAYMENT_STATUS_UNKNOWN`). The callers that used to fall through to another + rail (`useZaps`, `usePurchasePro`, `PlatformFeePayment`) now stop and tell the + user to check their wallet — no automatic second payment. - Medium/Low **mostly fixed in a follow-up "tier 3" commit**: tour sponsor URL sanitized (XSS); stats persisted-cache reads null-guarded; Overpass no longer assumes `.elements`; `user-listings` query key memoized; Pro grant requires the @@ -1873,9 +1880,9 @@ keeps `stateRef` in sync cross-tab; the backup flag is per-account ``; EventCountdown reacts to language. - Still open (lower priority): manual Pro "paid" isn't receipt-verified; the background poll tokens are cleaned up server-side (register replaces per - pubkey) but `disable()` doesn't unregister; **H1** spot-claim transfer (design); - **H14** NWC double-pay; a few i18n leftovers (some StashPage literals) and - gray-500/600 contrast. + pubkey) but `disable()` doesn't unregister; **H1** reader-side spot supersede + (partial — schema + notice done); a few i18n leftovers (some StashPage + literals) and gray-500/600 contrast. ## Nostr Protocol Integration