From b84ec60c2595fdc4f10f3bd8ec47355afef5135e Mon Sep 17 00:00:00 2001 From: biwasbhandari Date: Fri, 27 Mar 2026 16:30:33 +0545 Subject: [PATCH] fix(leaderboard): gate brief_inclusions scoring on inscription finalization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The leaderboard brief_inclusions_30d count now only includes signals whose brief has been inscribed on Bitcoin (briefs.inscription_id IS NOT NULL). Previously, signals scored for brief inclusion as soon as they were compiled, before the daily inscription confirmed them on-chain. This ensures the leaderboard reflects finalized editorial contributions and prevents temporary score inflation during the compilation→inscription window (~11pm-11:30pm PT each day). Closes #298 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/objects/news-do.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/objects/news-do.ts b/src/objects/news-do.ts index 81a7da85..8ffac049 100644 --- a/src/objects/news-do.ts +++ b/src/objects/news-do.ts @@ -3613,9 +3613,13 @@ export class NewsDO extends DurableObject { AND created_at > (SELECT ts FROM epoch) ) a LEFT JOIN ( - SELECT btc_address, COUNT(*) as inclusion_count - FROM brief_signals WHERE created_at > datetime('now', '-30 days') AND retracted_at IS NULL - GROUP BY btc_address + SELECT bs.btc_address, COUNT(*) as inclusion_count + FROM brief_signals bs + JOIN briefs br ON bs.brief_date = br.date + WHERE bs.created_at > datetime('now', '-30 days') + AND bs.retracted_at IS NULL + AND br.inscription_id IS NOT NULL + GROUP BY bs.btc_address ) bi ON a.btc_address = bi.btc_address LEFT JOIN ( SELECT btc_address, COUNT(*) as signal_count