From 1a9a5ae9670a8b733f7f3f4e809783c17a7cf35e Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Sat, 3 Oct 2026 18:42:16 +0700 Subject: [PATCH] docs: record useSpotCommunityScore aggregation --- AGENTS.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 656011f..dd063df 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -717,7 +717,16 @@ session with **no other memory of this project**. So: the submit button is disabled) — a typo rarely has a photo. (2) The spot page shows a **Community verified / Unverified** badge computed from signals only *other* skaters can produce: community photos + `useSpotStatus` `reporterCount` - (kind 2259). The weather score was renamed **"Conditions · weather only"** + (kind 2259). **Community confidence aggregation (2026-10-03):** + `src/hooks/useSpotCommunityScore.ts` does ONE batched query for a spot's + engagement (photos 1063, status 2259, comments/tag-suggestions 1111, reactions + 7, zaps 9735, collections 30003), counts **distinct accounts** (never the + mapper), tier-weights costly signals (zap 3, photo/status 2, rest 1) with a + **per-account cap of 3**, and multiplies by each actor's **web-of-trust + real + activity** (`useBatchTrustScores`/`useBatchActivity`) so a ring of empty + accounts can't inflate it. Returns `level: unverified | seen | community` + + breakdown; `SpotDetailPage` shows a "why" line (`2 photos · 1 zap …`). The + weather score was renamed **"Conditions · weather only"** (in `SpotDetailPage` and the `SpotMap` popup) so it can't read as spot quality. (3) `useNotASpotReport` = one-tap **NIP-56 (1984)** report tagged `not-a-skate-spot` (NIP-56 `other` reason + our `L`/`l`/`t` taxonomy), used