docs: record the own-scorer decision as deferred for later revision

Capture the recommendation in AGENTS.md (and mirror it in TRUST_SCORE.md):
do not build the cvm-server per-observer GrapeRank scorer yet. The full
confidence model is provider-side and consumed via NIP-85; the client has
a local confidence gate; the blockers are the per-observer signing key and
8-hop compute plus lifecycle/deploy/monitoring, with ~zero users making
the ROI negative. A house-perspective scorer is the cheaper path; revisit
when there are users, no trustworthy provider, or skate-specific signals
to bake in.
This commit is contained in:
SkateSpots 2026-10-09 18:57:41 +07:00
parent db7f4a2707
commit dde52eb1a7
2 changed files with 23 additions and 6 deletions

View file

@ -2575,12 +2575,27 @@ shared `filterAdminHidden` drops muted authors across every list; the flagged
notice has a Mute action. **Alerts landed:** `useNetworkAlerts` + `/alerts`
(`pages/NetworkAlertsPage.tsx`) list accounts you follow that trusted people
reported/muted, with Ignore/Unfollow/Mute/Report; Settings → Trust links to it
with a count (ignored set in `skatespots:trust:alerts-ignored`). Still open:
running our own GrapeRank-style scorer in `cvm-server` — the full confidence
model is provider-side today. Check
with a count (ignored set in `skatespots:trust:alerts-ignored`). Deferred: our
own GrapeRank-style scorer — see the dated note below. Check
`TRUST_SCORE.md` before touching `useTrustScore` / `useRelatrScore` /
`trustFilter`.
**Own GrapeRank-style scorer — DEFERRED (2026-10-09).** Do NOT build the
`cvm-server` per-observer scorer yet. The full confidence model is provider-side
and already consumed via NIP-85, and the client fallback now has a local
confidence gate (`useViewerGraph`, `FOF_MIN_RATERS`). Why hold: personalized
kind-30382 needs a **per-observer signing key** (server key custody or per-user
delegation — a trust/key-management burden, not a checkbox); an 8-hop traversal is
heavy without a graph store; plus a provider identity, the publish/delete
lifecycle, deploy to the external host and monitoring. With ~zero users the ROI is
negative. Cheaper path if a controlled score is ever wanted: a
**house-perspective** scorer (one key, one observer, computed on a schedule,
publishes kind-30382) — Settings → Trust's provider choice consumes it with no
client change. **Revisit when:** there are users, no trustworthy provider exists,
or there are skate-specific signals (vouches, trade attestations) worth baking
into a score only we can compute. The client is already provider-ready
(`useTrustAssertions` + kind-10040 choice), so this decision costs nothing today.
**Keep the door open (cheap):** admin keys and relay sets must stay *data you can
swap*, not constants. Hardcoded `ADMIN_PUBKEYS` is fine now — converting it later
is a small refactor, not a trap.

View file

@ -91,9 +91,11 @@ flagged notice's reporter breakdown, and Settings → Trust.
`deriveLocalScore` returns `verified` only at `FOF_MIN_RATERS` (2) or more. A
lone endorsement no longer reads as trust.
- Provider assertions are unaffected: the full GrapeRank confidence model lives
in the provider and we consume it via NIP-85. Running our own scorer (planned
for `cvm-server`, publishing kind-30382) remains the open item — it is the only
way to get the real confidence gate and a server-published score.
in the provider and we consume it via NIP-85. Running our own scorer is
**deferred** — see the dated decision in `AGENTS.md` ("Own GrapeRank-style
scorer — DEFERRED"): the per-observer signing key and 8-hop compute are the
blockers, and the client is already provider-ready. A house-perspective scorer
(one key, one observer) is the cheaper path if ever wanted.