diff --git a/.claude/skills/searchable-events/references/searchable-kinds.md b/.claude/skills/searchable-events/references/searchable-kinds.md index 1a95ebd664..02761064ca 100644 --- a/.claude/skills/searchable-events/references/searchable-kinds.md +++ b/.claude/skills/searchable-events/references/searchable-kinds.md @@ -158,10 +158,11 @@ Separator legend: **NL** = `joinToString("\n")`, **SP** = `joinToString(" ")`. may hold encrypted private items in `content`, which must never be indexed. ‡ **Kind 38000 is shared** by NIP-87 mint recommendations and two app formats, and `EventFactory` -picks the class by tags: `MintRecommendationEvent` when the first `k` is 38172/38173 (or, with no -`k`, a non-blank `u`); else `BallotEvent` on a non-blank `election`; else `PredictionMarketEvent` -on a `market`, ≥2 `outcome`s, or `type` + `end`; else a plain, unsearchable `Event` (the spam -votes that make up most of the kind). Kind-level probes (`EventFactory.probe`) answer as +picks the class by tags: `MintRecommendationEvent` when any `k` is 38172/38173 (or, with no +`k`, a non-blank `u` or an `a` to a 38172/38173 address); else `BallotEvent` on a non-blank +`election`; else `PredictionMarketEvent` on a `market`, ≥2 `outcome`s, or `type` + `end`; else +`UnrecognizedKind38000Event` — addressable (stores still key it by `d`) but unsearchable (the +spam votes that make up most of the kind). Kind-level probes (`EventFactory.probe`) answer as `MintRecommendationEvent`. A market's `title()`/`description()` come from its `data` tag JSON, the `title` tag, or JSON `content`, in that order. diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/utils/EventFactory.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/utils/EventFactory.kt index b46d9aa31e..8e4e8e53c9 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/utils/EventFactory.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/utils/EventFactory.kt @@ -966,8 +966,8 @@ class EventFactory { * * For most kinds that is just [create] with no tags. It is not for kinds whose class is * chosen by tags, where a tagless event can land on a different class than the kind's - * real events. Kind 38000 is the case that matters: with no tags it is a plain [Event] - * (junk), yet every typed shape of it — mint recommendation, ballot, prediction market — + * real events. Kind 38000 is the case that matters: with no tags it is an + * [UnrecognizedKind38000Event] (junk, unsearchable), yet every typed shape of it — mint recommendation, ballot, prediction market — * is a searchable, renderable class, so it answers as its primary class. (The other * tag-split kinds, 39005 and 20001, already land on a typed class with no tags.) *