Sprint1: pure-rule bucket classifier + scorer (taste before intelligence)
- athena/scoring.py: deterministic bucket taxonomy (SHIPPING, LOCAL AI, PROBLEM SOLVED, MODEL RELEASE, RESEARCH, BUSINESS, INFRASTRUCTURE, CULTURE, UNCATEGORIZED) + component scores (shipping/utility/ replication/enthusiast/novelty) with hype_penalty. No embeddings/LLM. - Idempotent schema migration: 12 new columns incl actionability_score (reserved). - attach_scoring() wired into pipeline.py AFTER store_entries, BEFORE render. - Backfilled all existing rows; verified at box: null->scored via live run. - Review report exposes every fired rule (editorial proof, not accuracy metric). - Human-review tally (Published/Rejected/Borderline) is manual only. Decision: founder directive 2026-07-15 — discover taxonomy before adding intelligence. Sprint 2 (Lens) blocked until manual review completes.
This commit is contained in:
+10
@@ -27,6 +27,10 @@ sys.path.insert(0, os.path.dirname(__file__))
|
||||
from adapters import SourceAdapter
|
||||
from adapters._store import upsert_entries
|
||||
|
||||
# Sprint 1 (2026-07-15): pure-rule bucket classifier + scorer.
|
||||
# Attaches immediately after ingest/dedup and before any rendering step.
|
||||
from athena import scoring as _scoring
|
||||
|
||||
# Adapter registry — add new adapters here (one line each)
|
||||
ADAPTERS = {
|
||||
"github": lambda: __import__("adapters.github", fromlist=["GitHubAdapter"]).GitHubAdapter(),
|
||||
@@ -273,6 +277,12 @@ def run_pipeline(sources: list[str] | None = None, limit: int = 20, dry_run: boo
|
||||
if src in source_stats:
|
||||
source_stats[src]["stored"] += 1
|
||||
|
||||
# --- Sprint 1 attach point: score after ingest/dedup, before render ---
|
||||
try:
|
||||
_scoring.attach_scoring(db_path)
|
||||
except Exception as e:
|
||||
print(f" ⚠ scoring attach failed: {e}")
|
||||
|
||||
# Verification
|
||||
if verify:
|
||||
print(f"\n [Verification]")
|
||||
|
||||
Reference in New Issue
Block a user