From 143a63c520dbef15e0128e3c4c1f7d81437ce862 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 12:03:59 +0000 Subject: [PATCH] refactor(quartz): move GrapeRank web-of-trust algorithm into quartz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The GrapeRank engine, TrustGraph (compact int-CSR) and TrustGraphBuilder are pure Nostr-social-graph computation over HexKeys — no UI, no Compose, and no commons-only dependency. They're a utility for implementing the NIP-85 rank assertions quartz already models, so they belong in quartz rather than commons. Move commons/wot -> quartz experimental/graperank (package com.vitorpamplona.quartz.experimental.graperank), including both commonTest suites, and repoint the CLI import. TrustGraphBuilder was already protocol-agnostic (takes HexKey lists; the caller does the event->edge extraction), so nothing had to change but the package. Makes the algorithm reusable by the Android app for spam/trust filtering without pulling in commons. --- .../vitorpamplona/amethyst/cli/commands/GrapeRankCommand.kt | 6 +++--- .../quartz/experimental/graperank}/GrapeRank.kt | 2 +- .../quartz/experimental/graperank}/TrustGraph.kt | 2 +- .../quartz/experimental/graperank}/TrustGraphBuilder.kt | 2 +- .../quartz/experimental/graperank}/GrapeRankTest.kt | 2 +- .../quartz/experimental/graperank}/TrustGraphBuilderTest.kt | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) rename {commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot => quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank}/GrapeRank.kt (99%) rename {commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot => quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank}/TrustGraph.kt (98%) rename {commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot => quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank}/TrustGraphBuilder.kt (98%) rename {commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot => quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank}/GrapeRankTest.kt (99%) rename {commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot => quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank}/TrustGraphBuilderTest.kt (98%) diff --git a/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/GrapeRankCommand.kt b/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/GrapeRankCommand.kt index dc344d4429..0f8cb76c73 100644 --- a/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/GrapeRankCommand.kt +++ b/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/GrapeRankCommand.kt @@ -26,9 +26,9 @@ import com.vitorpamplona.amethyst.cli.DataDir import com.vitorpamplona.amethyst.cli.Output import com.vitorpamplona.amethyst.commons.defaults.Constants import com.vitorpamplona.amethyst.commons.defaults.DefaultIndexerRelayList -import com.vitorpamplona.amethyst.commons.wot.GrapeRank -import com.vitorpamplona.amethyst.commons.wot.GrapeRankParams -import com.vitorpamplona.amethyst.commons.wot.TrustGraphBuilder +import com.vitorpamplona.quartz.experimental.graperank.GrapeRank +import com.vitorpamplona.quartz.experimental.graperank.GrapeRankParams +import com.vitorpamplona.quartz.experimental.graperank.TrustGraphBuilder import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/GrapeRank.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/GrapeRank.kt similarity index 99% rename from commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/GrapeRank.kt rename to quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/GrapeRank.kt index c5674317c8..3744d52b41 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/GrapeRank.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/GrapeRank.kt @@ -18,7 +18,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.commons.wot +package com.vitorpamplona.quartz.experimental.graperank import androidx.compose.runtime.Immutable import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraph.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraph.kt similarity index 98% rename from commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraph.kt rename to quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraph.kt index b84063b87c..ad78a6e56a 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraph.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraph.kt @@ -18,7 +18,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.commons.wot +package com.vitorpamplona.quartz.experimental.graperank import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraphBuilder.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraphBuilder.kt similarity index 98% rename from commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraphBuilder.kt rename to quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraphBuilder.kt index 55a223949b..7b3f12fbe4 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraphBuilder.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraphBuilder.kt @@ -18,7 +18,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.commons.wot +package com.vitorpamplona.quartz.experimental.graperank import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot/GrapeRankTest.kt b/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank/GrapeRankTest.kt similarity index 99% rename from commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot/GrapeRankTest.kt rename to quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank/GrapeRankTest.kt index d9a3282a4f..4219095809 100644 --- a/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot/GrapeRankTest.kt +++ b/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank/GrapeRankTest.kt @@ -18,7 +18,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.commons.wot +package com.vitorpamplona.quartz.experimental.graperank import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.math.abs diff --git a/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraphBuilderTest.kt b/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraphBuilderTest.kt similarity index 98% rename from commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraphBuilderTest.kt rename to quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraphBuilderTest.kt index 01b9fb6cb3..f27e064273 100644 --- a/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/wot/TrustGraphBuilderTest.kt +++ b/quartz/src/commonTest/kotlin/com/vitorpamplona/quartz/experimental/graperank/TrustGraphBuilderTest.kt @@ -18,7 +18,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.commons.wot +package com.vitorpamplona.quartz.experimental.graperank import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.test.Test