WIP before Manual-Headline-Insertion v1 edits (clickability 14d lifecycle pending)

This commit is contained in:
Leonard
2026-07-12 23:43:14 +00:00
parent 1539c743b5
commit 2dfa3a9708
13 changed files with 6029 additions and 6 deletions
+138
View File
@@ -0,0 +1,138 @@
#!/usr/bin/env python3
"""Mine Athena's DB for real AI-news engagement patterns.
Goal: tell us WHAT KIND of AI news people consume/click, with numbers.
Read-only against oracle.db."""
import json, math, sqlite3, re, os
from collections import Counter, defaultdict
DB = os.path.join(os.path.dirname(__file__), "oracle.db")
c = sqlite3.connect(DB)
rows = c.execute(
"select source,source_id,title,url,summary,signal_score,raw_metadata "
"from entries"
).fetchall()
print(f"TOTAL ENTRIES: {len(rows)}")
# ---- engagement extractor (per source native units) ----
def eng(src, md):
if src == "hackernews":
return {"points": md.get("score",0), "comments": md.get("descendants",0),
"composite": (md.get("score",0) or 0) + 2*(md.get("descendants",0) or 0)}
if src == "reddit":
return {"ups": md.get("ups",0), "comments": md.get("num_comments",0),
"composite": (md.get("ups",0) or 0) + 2*(md.get("num_comments",0) or 0)}
if src == "huggingface":
return {"likes": md.get("likes",0), "downloads": md.get("downloads",0),
"composite": (md.get("likes",0) or 0)*10 + (md.get("downloads",0) or 0)*0.01}
if src == "github":
return {"stars": md.get("stars",0), "stars_per_day": md.get("stars_per_day",0),
"composite": (md.get("stars_per_day",0) or 0)*50 + (md.get("stars",0) or 0)*0.001}
if src == "arxiv":
return {"points": None, "comments": None, "composite": 0}
return {"composite": 0}
# ---- content-type classifier (keyword on title+summary) ----
def ctype(title, summary, src):
t = (title + " " + (summary or "")).lower()
# order matters: most specific first
if src == "huggingface" or re.search(r"\b(gpt-|gpt5|gpt-5|deepseek|glm-|llama|qwen|claude|gemini|mistral|flux|stable-diffusion)\b", t) and re.search(r"\b(release|released|v\d|launch|model)\b", t):
return "MODEL_RELEASE"
if re.search(r"\b(release|released|launches|unveils|announces|debut|new model|gpt-5|deepseek-v|glm-5)\b", t):
return "MODEL_RELEASE"
if src == "arxiv" or re.search(r"\b(paper|study|benchmark|arxiv|proposes|learns?|novel|framework for|towards)\b", t):
return "RESEARCH"
if re.search(r"\b(sues|lawsuit|funding|raises|acqui|ipo|valued|stealing|trade secret|layoff|hire[sd]?|exec|ceo|openai|anthropic|google|meta|microsoft)\b", t) and not re.search(r"\b(repo|library|tool|agent framework)\b", t):
return "BUSINESS_LEGAL"
if re.search(r"\b(burnout|opinion|think|feel|why|essay|culture|linkedin|social media|future of|we made|i think|hot take)\b", t):
return "CULTURE_OPINION"
if re.search(r"\b(how to|tutorial|guide|running|build|setup|install|from scratch|learn)\b", t):
return "TUTORIAL_HOWTO"
if src == "github" or re.search(r"\b(repo|library|framework|tool|agent|sdk|cli|extension|plugin|app|engine)\b", t):
return "DEV_TOOL"
return "OTHER"
# ---- aggregate ----
by_src = defaultdict(list)
for r in rows:
src, sid, title, url, summary, sig, raw = r
try: md = json.loads(raw or "{}")
except: md = {}
e = eng(src, md)
ct = ctype(title, summary, src)
by_src[src].append({"title": title, "sig": sig, "eng": e, "ct": ct, "src": src})
print("\n=== PER-SOURCE ENGAGEMENT (native units) ===")
for src, items in by_src.items():
comps = [i["eng"]["composite"] for i in items if i["eng"]["composite"]]
if not comps:
print(f" {src:11}: n={len(items)} (no engagement metric)")
continue
comps.sort()
med = comps[len(comps)//2]
mx = max(comps)
print(f" {src:11}: n={len(items):3} median_composite={med:8.1f} max={mx:10.1f}")
print("\n=== CONTENT-TYPE MIX (all sources) ===")
ct_counter = Counter(i["ct"] for items in by_src.values() for i in items)
for ct, n in ct_counter.most_common():
print(f" {ct:16}: {n:3} ({100*n/len(rows):.0f}%)")
print("\n=== ENGAGEMENT BY CONTENT-TYPE WITHIN HN (comparable units) ===")
hn = by_src["hackernews"]
hn_by_ct = defaultdict(list)
for i in hn:
hn_by_ct[i["ct"]].append(i["eng"]["composite"])
print(f" (HN n={len(hn)})")
for ct in sorted(hn_by_ct, key=lambda k: -max(hn_by_ct[k])):
vals = sorted(hn_by_ct[ct])
print(f" {ct:16}: n={len(vals):2} median={vals[len(vals)//2]:6.0f} max={max(vals):6.0f}")
print("\n=== ENGAGEMENT BY CONTENT-TYPE WITHIN REDDIT ===")
rd = by_src["reddit"]
rd_by_ct = defaultdict(list)
for i in rd:
rd_by_ct[i["ct"]].append(i["eng"]["composite"])
print(f" (Reddit n={len(rd)})")
for ct in sorted(rd_by_ct, key=lambda k: -max(rd_by_ct[k])):
vals = sorted(rd_by_ct[ct])
print(f" {ct:16}: n={len(vals):2} median={vals[len(vals)//2]:6.0f} max={max(vals):6.0f}")
print("\n=== GITHUB: top repos by stars/day ===")
gh = sorted(by_src["github"], key=lambda i: -(i["eng"]["stars_per_day"] or 0))[:8]
for i in gh:
print(f" {i['eng']['stars_per_day']:7.0f}/day {i['eng']['stars']:6}{i['ct']:14} | {i['title'][:55]}")
print("\n=== HN: top 10 by composite engagement ===")
hn_top = sorted(hn, key=lambda i: -(i["eng"]["composite"] or 0))[:10]
for i in hn_top:
print(f" pts={i['eng']['points']:5} cmt={i['eng']['comments']:5} [{i['ct']:14}] {i['title'][:55]}")
print("\n=== CORRELATION: Athena signal_score vs HN engagement ===")
# Does our relevance score track real clicks? (HN only, has both)
pairs = [(i["sig"], i["eng"]["composite"]) for i in hn if i["eng"]["composite"]]
if len(pairs) > 4:
xs = [p[0] for p in pairs]; ys = [p[1] for p in pairs]
mx, my = sum(xs)/len(xs), sum(ys)/len(ys)
num = sum((x-mx)*(y-my) for x,y in pairs)
den = math.sqrt(sum((x-mx)**2 for x in xs) * sum((y-my)**2 for y in ys))
corr = num/den if den else 0
print(f" Pearson r (signal_score vs HN composite) = {corr:.2f} (n={len(pairs)})")
print(f" -> {'signal tracks engagement' if corr>0.3 else 'signal does NOT track engagement; separate clickability score needed'}")
print("\n=== CROSS-SOURCE CORROBORATION (same story, 2+ sources) ===")
# crude: match by normalized title token overlap across sources
def toks(s):
return set(re.findall(r"[a-z0-9]{4,}", s.lower()))
cross = 0
all_items = [i for items in by_src.values() for i in items]
for a in all_items:
for b in all_items:
if a["src"] >= b["src"]: continue
ta, tb = toks(a["title"]), toks(b["title"])
if ta and tb and len(ta & tb) >= 3:
cross += 1
break
print(f" items appearing in 2+ sources (approx): {cross}")
c.close()
+179
View File
@@ -0,0 +1,179 @@
#!/usr/bin/env python3
"""Live re-fetch right now and compare to today's cron snapshot in oracle.db.
Read-only against the DB (only reads). Does NOT store anything."""
import json, math, sys, os, time
sys.path.insert(0, os.path.dirname(__file__))
from datetime import datetime, timezone
import sqlite3
import importlib
SOURCES = ["github", "arxiv", "reddit", "hackernews", "huggingface"]
ADAPTER_CLASSES = {
"github": lambda: importlib.import_module("adapters.github").GitHubAdapter(),
"arxiv": lambda: importlib.import_module("adapters.arxiv").ArxivAdapter(),
"reddit": lambda: importlib.import_module("adapters.reddit").RedditAdapter(),
"hackernews": lambda: importlib.import_module("adapters.hackernews").HackerNewsAdapter(),
"huggingface": lambda: importlib.import_module("adapters.huggingface").HuggingFaceAdapter(),
}
NOW = datetime.now(timezone.utc)
TODAY = NOW.strftime("%Y-%m-%d")
# ---- DB: what cron already pulled today ----
db = sqlite3.connect(os.path.join(os.path.dirname(__file__), "oracle.db"))
db_rows = db.execute(
"select source,source_id,title,url,signal_score,raw_metadata "
"from entries where first_seen >= ?", (TODAY + "T00:00:00",)
).fetchall()
db_by_srcid = {}
for r in db_rows:
src, sid = r[0], r[1]
db_by_srcid.setdefault(src, {})[sid] = r
print(f"[DB today] {len(db_rows)} entries across {len(set(r[0] for r in db_rows))} sources")
# ---- LIVE re-fetch right now ----
live = {} # source -> list of entries
fail = {}
for name in SOURCES:
try:
adapter = ADAPTER_CLASSES[name]()
t0 = time.time()
entries = adapter.fetch(limit=20)
live[name] = entries
print(f"[LIVE] {name:11} {len(entries):2} entries in {time.time()-t0:5.1f}s")
except Exception as e:
fail[name] = str(e)
live[name] = []
print(f"[LIVE] {name:11} FAILED: {e}")
def norm(metric, values):
"""0-100 normalization via log scale for skewed engagement."""
vals = [v for v in values if v is not None and v >= 0]
if not vals:
return {}
mx = max(vals)
out = {}
for k, v in metric.items():
if v is None or v <= 0:
out[k] = 0.0
else:
out[k] = round(100 * math.log(1 + v) / math.log(1 + mx), 1) if mx > 0 else 0.0
return out
# ---- engagement extraction per source ----
def engagement(e):
"""Return (raw_engagement, metrics_dict, virality_0_100) per source."""
src = e["source"]
md = json.loads(e.get("raw_metadata", "{}") or "{}")
if src == "hackernews":
score = md.get("score", 0) or 0
desc = md.get("descendants", 0) or 0
eng = score + desc * 2 # comments weighted as stronger virality signal
metrics = {"points": score, "comments": desc}
elif src == "reddit":
ups = md.get("ups", 0) or 0
comments = md.get("num_comments", 0) or 0
eng = ups + comments * 2
metrics = {"ups": ups, "comments": comments}
elif src == "huggingface":
likes = md.get("likes", 0) or 0
dl = md.get("downloads", 0) or 0
eng = likes * 10 + dl * 0.01 # downloads are huge; down-weight
metrics = {"likes": likes, "downloads": dl}
elif src == "github":
spd = md.get("stars_per_day", 0) or 0
stars = md.get("stars", 0) or 0
eng = spd * 50 + stars * 0.001
metrics = {"stars/day": round(spd, 1), "stars": stars}
elif src == "arxiv":
eng = 0 # no engagement metrics; virality N/A, treat as research signal only
metrics = {"categories": ", ".join(md.get("categories", [])[:3])}
else:
eng = 0
metrics = {}
return eng, metrics
# ---- Build unified compare list ----
unified = []
for src, entries in live.items():
dbset = db_by_srcid.get(src, {})
for e in entries:
sid = e.get("source_id")
eng, metrics = engagement(e)
is_new = sid not in dbset # NEW since cron
unified.append({
"source": src,
"title": e.get("title", "")[:90],
"url": e.get("url", ""),
"signal": e.get("signal_score", 0),
"engagement": eng,
"metrics": metrics,
"new": is_new,
"sid": sid,
})
# ---- Normalize virality across ALL live items (cross-source) ----
all_eng = {u["sid"]: u["engagement"] for u in unified if u["engagement"] > 0}
norm_map = norm({k: v for k, v in all_eng.items()}, list(all_eng.values()))
for u in unified:
u["virality"] = norm_map.get(u["sid"], 0.0)
# ---- RANK by virality (desc), tiebreak signal_score ----
ranked = sorted(unified, key=lambda u: (u["virality"], u["signal"]), reverse=True)
print("\n" + "="*100)
print(f"LIVE PULL @ {NOW.strftime('%Y-%m-%d %H:%M UTC')} | {len(ranked)} items | NEW since cron: {sum(1 for u in unified if u['new'])}")
print("="*100)
# Full list
print("\n### FULL RANKED LIST (by virality)")
for i, u in enumerate(ranked, 1):
tag = "NEW" if u["new"] else " "
m = " ".join(f"{k}={v}" for k, v in u["metrics"].items())
print(f"{i:2}. [{u['virality']:5.1f}] {tag} {u['source']:10} | {u['title']}")
if m:
print(f" {m} (signal {u['signal']:.2f})")
# Trending = NEW items ranked by virality
trending = [u for u in ranked if u["new"]]
print("\n### TRENDING NOW (NEW since today's cron pull, by virality)")
if not trending:
print(" (no new items — live pull matches today's snapshot exactly)")
for i, u in enumerate(trending, 1):
m = " ".join(f"{k}={v}" for k, v in u["metrics"].items())
print(f"{i:2}. [{u['virality']:5.1f}] {u['source']:10} | {u['title']}")
if m: print(f" {m}")
# Source-level engagement summary
print("\n### PER-SOURCE VIRALITY CEILING (top live engagement)")
by_src = {}
for u in unified:
by_src.setdefault(u["source"], []).append(u)
for src in SOURCES:
items = by_src.get(src, [])
if not items:
print(f" {src:11}: (no live data)"); continue
top = max(items, key=lambda x: x["virality"])
print(f" {src:11}: top_virality={top['virality']:.1f} items_live={len(items)} new={sum(1 for x in items if x['new'])}")
db.close()
# ---- Persist full list as markdown (downloadable) ----
import os as _os
out_md = f"# Athena Live Compare — {NOW.strftime('%Y-%m-%d %H:%M UTC')}\n\n"
out_md += f"- **Live pull:** {len(ranked)} items (Reddit excluded — rate-limited)\n"
out_md += f"- **NEW since today's 13:00 UTC cron:** {sum(1 for u in unified if u['new'])}\n"
out_md += f"- **Caveat:** HF scores = cumulative traction, not 24h velocity. Velocity signals = GitHub stars/day, HN points/comments.\n\n"
out_md += "## FULL RANKED LIST (by cross-source virality)\n\n"
out_md += "| # | Virality | New | Source | Title | Key metric | Signal |\n"
out_md += "|---|---|---|---|---|---|---|\n"
for i, u in enumerate(ranked, 1):
tag = "NEW" if u["new"] else ""
m = ", ".join(f"{k}={v}" for k, v in u["metrics"].items())
out_md += f"| {i} | {u['virality']:.1f} | {tag} | {u['source']} | {u['title']} | {m} | {u['signal']:.2f} |\n"
out_path = _os.path.join(_os.path.dirname(__file__), f"live_compare_{NOW.strftime('%Y%m%d_%H%M')}.md")
with open(out_path, "w") as f:
f.write(out_md)
print(f"\n[SAVED] {out_path}")
+1948
View File
File diff suppressed because it is too large Load Diff
+8 -6
View File
@@ -46,14 +46,16 @@ FEEDS = [
("rss:mittr", "MIT Tech Review AI",
"https://www.technologyreview.com/topic/artificial-intelligence/feed/"),
# Company blogs (primary signals for launches)
# NOTE: anthropic/googleai/metaai RSS feeds are DEAD (404 as of 2026-07-12).
# Replaced with working equivalents: DeepMind RSS, MIT Tech Review, The Decoder.
("rss:openai", "OpenAI Blog",
"https://openai.com/blog/rss.xml"),
("rss:anthropic", "Anthropic News",
"https://www.anthropic.com/rss/news.xml"),
("rss:googleai", "Google AI Blog",
"https://blog.google/technology/rss.xml"),
("rss:metaai", "Meta AI Blog",
"https://ai.meta.com/blog/rss.xml"),
("rss:deepmind", "Google DeepMind Blog",
"https://deepmind.google/blog/rss.xml"),
("rss:mittr", "MIT Tech Review AI",
"https://www.technologyreview.com/topic/artificial-intelligence/feed/"),
("rss:decoder", "The Decoder",
"https://www.the-decoder.com/feed/"),
]
# AI relevance keywords for filtering — word-boundary matching
+489
View File
@@ -0,0 +1,489 @@
# Athena AI News — Top 50 (Today Only)
> Generated 2026-07-11 15:01 UTC · fresh filter: ingested 2026-07-11 (UTC) · ranked by virality + 18h decay
> Source: oracle.db · 50 items shown of 80 fresh today
| # | Title | Source | Score | Age | Link |
|---|-------|--------|-------|-----|------|
| 1 | Apple sues OpenAI, accuses ex-employees of stealing trade secrets | hackernews | 0.53 | 2h | [link](https://9to5mac.com/2026/07/10/apple-sues-openai-trade-secret-theft/) |
| 2 | GPT-5.6 | hackernews | 0.51 | 2h | [link](https://openai.com/index/gpt-5-6/) |
| 3 | texts-to-transformer: Train a tiny Transformer from scratch on your iMessage history, entirely on your Mac. | github | 0.47 | 2h | [link](https://github.com/Doriandarko/texts-to-transformer) |
| 4 | GPT-5.6 Sol Ultra produces proof of the Cycle Double Cover Conjecture [pdf] | hackernews | 0.45 | 2h | [link](https://cdn.openai.com/pdf/04d1d1e4-bc75-476a-97cf-49055cd98d31/cdc_proof.pdf) |
| 5 | Cognitive-Core-Skills: A universal, industry-neutral taxonomy of cognitive core skills (perception, memory, reasoning, plan | github | 0.43 | 2h | [link](https://github.com/eli-labz/Cognitive-Core-Skills) |
| 6 | photoshop-ai-smart-enhance: AI-powered image enhancement extension for Adobe Photoshop CC 2024+. Intelligent exposure correction | github | 0.42 | 2h | [link](https://github.com/FuelMagistrateLead/photoshop-ai-smart-enhance) |
| 7 | aipath: Interactive AI General Education Course — 30 Lessons, Zero Math | github | 0.39 | 2h | [link](https://github.com/buynao/aipath) |
| 8 | AI-generated videos to maximally drive a target brain region | hackernews | 0.38 | 2h | [link](https://nevo-project.epfl.ch/) |
| 9 | How the terrorist group Boko Haram uses frontier AI | hackernews | 0.38 | 2h | [link](https://casp.ac/reports/ai-enabled-terrorism) |
| 10 | AI 2040: Plan A | hackernews | 0.38 | 2h | [link](https://ai-2040.com/) |
| 11 | ChatGPT Work | hackernews | 0.37 | 2h | [link](https://openai.com/index/chatgpt-for-your-most-ambitious-work/) |
| 12 | AI content is everywhere on social media, especially LinkedIn | hackernews | 0.36 | 2h | [link](https://www.pangram.com/blog/ai-in-your-feed) |
| 13 | Building a real-time AI tutor for 5-year-olds | hackernews | 0.35 | 2h | [link](https://www.ello.com/blog/teaching-a-child-in-1000-ms) |
| 14 | A font that humans can read but AI cannot | hackernews | 0.34 | 2h | [link](https://www.mixfont.com/ghost-font) |
| 15 | GPT-5.6, Grok 4.5, Claude, and Muse Spark build the same 4 apps | hackernews | 0.34 | 2h | [link](https://www.tryai.dev/blog/gpt-5.6-build-off-12-models) |
| 16 | reality-engine: Top Dynamic AI World Simulation & Storytelling Tools 2026 | github | 0.33 | 2h | [link](https://github.com/grandgaming9321-prog/reality-engine) |
| 17 | manuscript-phoneme-decipher: Voynich Manuscript Decoded: Elu-Sinhala Phonetic Transcription & Vocabulary Toolkit 2026 | github | 0.33 | 2h | [link](https://github.com/okesipoke/manuscript-phoneme-decipher) |
| 18 | ai-image-clean-eraser: AI-Powered Text Remover 2026: Auto-Detect & Manual Precision with HD Quality | github | 0.33 | 2h | [link](https://github.com/Sujal-142/ai-image-clean-eraser) |
| 19 | churn-triad-insights: LLM-Powered Churn Risk Analyzer for Scalable 2026 Decision Support | github | 0.33 | 2h | [link](https://github.com/pravin6688/churn-triad-insights) |
| 20 | swarm-foraging-qlearn: Q-Learning Swarm Foraging 2026: Multi-Agent RL in Dynamic Grid Environments | github | 0.33 | 2h | [link](https://github.com/jaimasih05-commits/swarm-foraging-qlearn) |
| 21 | Paradigm-Survival-Arena: Top 6 AI Paradigms Fighting for Survival in 2026 | github | 0.33 | 2h | [link](https://github.com/aminekago-web/Paradigm-Survival-Arena) |
| 22 | cortex-sentinel-trading-nexus: Self-Tuning Multi-Agent AI Trading System 2026: 8-Source Signal Fusion & Kronos Model | github | 0.33 | 2h | [link](https://github.com/reunios2024/cortex-sentinel-trading-nexus) |
| 23 | magic-eraser-studio: AI Object Remover 2026 Erase Distractions & Keep HD Quality | github | 0.33 | 2h | [link](https://github.com/onlyoneshakibul/magic-eraser-studio) |
| 24 | ShipGenAI: 🚀 50 production-ready Generative AI SaaS apps — brand them, ship them, keep 100% of the revenue. Str | github | 0.32 | 2h | [link](https://github.com/benlamiro/ShipGenAI) |
| 25 | ESEILANE: High-performance Knowledge Graph engine for AI, LLMs, and GraphRAG — built for the next generation o | github | 0.32 | 2h | [link](https://github.com/Aliu-AiRobot/ESEILANE) |
| 26 | Hello-Agents: 🤖 Building AI Agent Systems from Scratch — A comprehensive, practical tutorial from fundamentals to | github | 0.31 | 2h | [link](https://github.com/Reyzowter/Hello-Agents) |
| 27 | Apple sues OpenAI, accusing it of stealing company secrets | hackernews | 0.30 | 2h | [link](https://www.nytimes.com/2026/07/10/technology/apple-openai-lawsuit.html) |
| 28 | ESEILANE: High-performance Knowledge Graph engine for AI, LLMs, and GraphRAG — built for the next generation o | github | 0.28 | 2h | [link](https://github.com/Simpl3x3/ESEILANE) |
| 29 | Agent-Loop-Skills: Loop until it's better — drop-in agentic loops (autoresearch, scientific writing, data analysis, cod | github | 0.28 | 2h | [link](https://github.com/gaasher/Agent-Loop-Skills) |
| 30 | autoguardrails: Alignment-research scaffold (autoresearch-style) for LLM guardrails: search over a single policy.md | github | 0.28 | 2h | [link](https://github.com/SantanderAI/autoguardrails) |
| 31 | Anti-Autoresearch: Don't trust an autoresearch paper at face value. Reviewer-side integrity forensics (self-consistency | github | 0.28 | 2h | [link](https://github.com/wanshuiyin/Anti-Autoresearch) |
| 32 | Ben Bernanke Joins Anthropic Oversight Trust | hackernews | 0.28 | 2h | [link](https://www.anthropic.com/news/ben-bernanke) |
| 33 | SimPolitics: Americas quest to solve politics with computers | hackernews | 0.27 | 2h | [link](https://mitpress.mit.edu/9780262053198/simpolitics/) |
| 34 | FerryAI: Native AI inference for PHP 8.3+ - run ONNX, GGUF (llama.cpp) and RubixML models directly in your PH | github | 0.27 | 2h | [link](https://github.com/MADEVAL/FerryAI) |
| 35 | Show HN: FableCut A browser video editor AI agents can drive (zero deps) | hackernews | 0.27 | 2h | [link](https://github.com/ronak-create/FableCut) |
| 36 | Hands-On with the AMD Ryzen AI Halo | hackernews | 0.26 | 2h | [link](https://www.microcenter.com/site/mc-news/article/amd-ryzen-ai-halo-review.aspx) |
| 37 | Show HN: Reverse-engineering web apps into agent tools | hackernews | 0.26 | 2h | [link](https://news.ycombinator.com/item/48847834) |
| 38 | How version control will evolve for the agent boom | hackernews | 0.25 | 2h | [link](https://entire.io/blog/how-version-control-will-evolve-for-the-agent-boom) |
| 39 | Show HN: Reviving my 2001 college band with AI | hackernews | 0.25 | 2h | [link](https://www.fadingmaize.com) |
| 40 | The next era of AI is about infrastructure, not just models | hackernews | 0.23 | 2h | [link](https://blog.mozilla.ai/the-control-layer-why-the-next-era-of-ai-is-about-infrastructure-not-just-models/) |
| 41 | UniClawBench: A Universal Benchmark for Proactive Agents on Real-World Tasks | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08768v1) |
| 42 | OpenCoF: Learning to Reason Through Video Generation | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08763v1) |
| 43 | Ideas Have Genomes: Benchmarking Scientific Lineage Reasoning and Lineage-Grounded Idea Generation | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08758v1) |
| 44 | Score Accuracy Along the Forward Diffusion Does Not Certify Numerical Stability in Diffusion Sampling | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08757v1) |
| 45 | MulTTiPop: A Multitrack Transcription Dataset for Pop Music | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08756v1) |
| 46 | SLORR: Simple and Efficient In-Training Low-Rank Regularization | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08754v1) |
| 47 | Using AI-based Learning Assistants in Higher Education: A Large-Scale Descriptive Analysis | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08748v1) |
| 48 | Dimensionality Reduction Meets Network Science: Sensemaking on UMAP's kNN Graph | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08746v1) |
| 49 | AUTOPILOT VQA: Benchmarking Vision-Language Models for Incident-Centric Dashcam Understanding | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08745v1) |
| 50 | ARDY: Autoregressive Diffusion with Hybrid Representation for Interactive Human Motion Generation | arxiv | 0.00 | 2h | [link](https://arxiv.org/abs/2607.08741v1) |
## One-liners
3. **texts-to-transformer: Train a tiny Transformer from scratch ** — Train a tiny language model from scratch on your iMessage history, entirely on your Mac.
5. **Cognitive-Core-Skills: A universal, industry-neutral taxonom** — Cognitive core skills are the mental operating capabilities an LLM or AI Agent needs to move from chat response to useful digital co-worker.
6. **photoshop-ai-smart-enhance: AI-powered image enhancement ext** — photoshop-ai-smart-enhance is a machine learning extension that automates image quality improvements.
7. **aipath: Interactive AI General Education Course — 30 Lessons** — ↑ The homepage hero (Lesson 15 · the next-token game): an LLM guesses one token at a time — turn the temperature and watch its top-5 candidates reshape, from fo
16. **reality-engine: Top Dynamic AI World Simulation & Storytelli** — Welcome to **Chronos Engine** — a groundbreaking temporal simulation platform that empowers researchers, storytellers, game developers, and futurists to constru
17. **manuscript-phoneme-decipher: Voynich Manuscript Decoded: Elu** — What if a manuscript wasn't written in a lost language, but in a forgotten way of hearing.
18. **ai-image-clean-eraser: AI-Powered Text Remover 2026: Auto-De** — In a digital ecosystem where document fraud costs organizations over **$1.
19. **churn-triad-insights: LLM-Powered Churn Risk Analyzer for Sc** — Every day, thousands of customers quietly signal their intent to leave.
20. **swarm-foraging-qlearn: Q-Learning Swarm Foraging 2026: Multi** — Embark on a journey into emergent intelligence, where autonomous agents learn to collaborate, compete, and coexist in a living, breathing digital ecosystem.
21. **Paradigm-Survival-Arena: Top 6 AI Paradigms Fighting for Sur** — Unlike traditional ML benchmarks that test accuracy on static datasets, Synaptic Colosseum evaluates models on *adaptive fitness*: the ability to learn from spa
41. **UniClawBench: A Universal Benchmark for Proactive Agents on ** — we introduce UniClawBench, the first capability-driven benchmark designed to evaluate proactive agents in dynamic, real-world settings.
42. **OpenCoF: Learning to Reason Through Video Generation** — Reasoning has become a core capability for large models, especially when reliable decisions require understanding logical consequences
43. **Ideas Have Genomes: Benchmarking Scientific Lineage Reasonin** — We present IdeaGene-Bench (IG-Bench), a benchmark for scientific lineage reasoning and lineage-grounded idea generation.
44. **Score Accuracy Along the Forward Diffusion Does Not Certify ** — We show that small forward-marginal error does not guarantee numerical stability.
45. **MulTTiPop: A Multitrack Transcription Dataset for Pop Music** — We present MulTTiPop, a dataset of pop music segments and their associated multitrack MIDI recordings for the evaluation of automatic music transcription models
46. **SLORR: Simple and Efficient In-Training Low-Rank Regularizat** — Low-rank factorization is widely used to compress neural networks, but modern models are often not naturally amenable to aggressive factorization without signif
47. **Using AI-based Learning Assistants in Higher Education: A La** — we present a large-scale descriptive analysis of the use of an AI-based learning assistant (Syntea) in higher education.
48. **Dimensionality Reduction Meets Network Science: Sensemaking ** — we show that these graph-based analyses are not only practical but also competitive with or complementary to purpose-built methods (e.
49. **AUTOPILOT VQA: Benchmarking Vision-Language Models for Incid** — we present AUTOPILOT-VQA, an incident-centric visual question answering benchmark for dashcam video understanding.
50. **ARDY: Autoregressive Diffusion with Hybrid Representation fo** — Generating realistic 3D human motions in real-time within interactive applications is key for animation, simulation, and humanoid robotics
---
## Raw data (JSON)
```json
[
{
"title": "Apple sues OpenAI, accuses ex-employees of stealing trade secrets",
"url": "https://9to5mac.com/2026/07/10/apple-sues-openai-trade-secret-theft/",
"source": "hackernews",
"score": 0.5253,
"age": 2.0,
"one": ""
},
{
"title": "GPT-5.6",
"url": "https://openai.com/index/gpt-5-6/",
"source": "hackernews",
"score": 0.509,
"age": 2.0,
"one": ""
},
{
"title": "texts-to-transformer: Train a tiny Transformer from scratch on your iMessage history, entirely on your Mac.",
"url": "https://github.com/Doriandarko/texts-to-transformer",
"source": "github",
"score": 0.4688,
"age": 2.0,
"one": "Train a tiny language model from scratch on your iMessage history, entirely on your Mac."
},
{
"title": "GPT-5.6 Sol Ultra produces proof of the Cycle Double Cover Conjecture [pdf]",
"url": "https://cdn.openai.com/pdf/04d1d1e4-bc75-476a-97cf-49055cd98d31/cdc_proof.pdf",
"source": "hackernews",
"score": 0.448,
"age": 2.0,
"one": ""
},
{
"title": "Cognitive-Core-Skills: A universal, industry-neutral taxonomy of cognitive core skills (perception, memory, reasoning, plan",
"url": "https://github.com/eli-labz/Cognitive-Core-Skills",
"source": "github",
"score": 0.4256,
"age": 2.0,
"one": "Cognitive core skills are the mental operating capabilities an LLM or AI Agent needs to move from chat response to useful digital co-worker."
},
{
"title": "photoshop-ai-smart-enhance: AI-powered image enhancement extension for Adobe Photoshop CC 2024+. Intelligent exposure correction",
"url": "https://github.com/FuelMagistrateLead/photoshop-ai-smart-enhance",
"source": "github",
"score": 0.4197,
"age": 2.0,
"one": "photoshop-ai-smart-enhance is a machine learning extension that automates image quality improvements."
},
{
"title": "aipath: Interactive AI General Education Course — 30 Lessons, Zero Math",
"url": "https://github.com/buynao/aipath",
"source": "github",
"score": 0.3918,
"age": 2.0,
"one": "↑ The homepage hero (Lesson 15 · the next-token game): an LLM guesses one token at a time — turn the temperature and watch its top-5 candidates reshape, from focused to “wild."
},
{
"title": "AI-generated videos to maximally drive a target brain region",
"url": "https://nevo-project.epfl.ch/",
"source": "hackernews",
"score": 0.3827,
"age": 2.0,
"one": ""
},
{
"title": "How the terrorist group Boko Haram uses frontier AI",
"url": "https://casp.ac/reports/ai-enabled-terrorism",
"source": "hackernews",
"score": 0.3793,
"age": 2.0,
"one": ""
},
{
"title": "AI 2040: Plan A",
"url": "https://ai-2040.com/",
"source": "hackernews",
"score": 0.3785,
"age": 2.0,
"one": ""
},
{
"title": "ChatGPT Work",
"url": "https://openai.com/index/chatgpt-for-your-most-ambitious-work/",
"source": "hackernews",
"score": 0.3745,
"age": 2.0,
"one": ""
},
{
"title": "AI content is everywhere on social media, especially LinkedIn",
"url": "https://www.pangram.com/blog/ai-in-your-feed",
"source": "hackernews",
"score": 0.3553,
"age": 2.0,
"one": ""
},
{
"title": "Building a real-time AI tutor for 5-year-olds",
"url": "https://www.ello.com/blog/teaching-a-child-in-1000-ms",
"source": "hackernews",
"score": 0.3519,
"age": 2.0,
"one": ""
},
{
"title": "A font that humans can read but AI cannot",
"url": "https://www.mixfont.com/ghost-font",
"source": "hackernews",
"score": 0.3433,
"age": 2.0,
"one": ""
},
{
"title": "GPT-5.6, Grok 4.5, Claude, and Muse Spark build the same 4 apps",
"url": "https://www.tryai.dev/blog/gpt-5.6-build-off-12-models",
"source": "hackernews",
"score": 0.343,
"age": 2.0,
"one": ""
},
{
"title": "reality-engine: Top Dynamic AI World Simulation & Storytelling Tools 2026",
"url": "https://github.com/grandgaming9321-prog/reality-engine",
"source": "github",
"score": 0.3342,
"age": 2.0,
"one": "Welcome to **Chronos Engine** — a groundbreaking temporal simulation platform that empowers researchers, storytellers, game developers, and futurists to construct, explore, and manipulate dynamic time"
},
{
"title": "manuscript-phoneme-decipher: Voynich Manuscript Decoded: Elu-Sinhala Phonetic Transcription & Vocabulary Toolkit 2026",
"url": "https://github.com/okesipoke/manuscript-phoneme-decipher",
"source": "github",
"score": 0.3342,
"age": 2.0,
"one": "What if a manuscript wasn't written in a lost language, but in a forgotten way of hearing."
},
{
"title": "ai-image-clean-eraser: AI-Powered Text Remover 2026: Auto-Detect & Manual Precision with HD Quality",
"url": "https://github.com/Sujal-142/ai-image-clean-eraser",
"source": "github",
"score": 0.3342,
"age": 2.0,
"one": "In a digital ecosystem where document fraud costs organizations over **$1."
},
{
"title": "churn-triad-insights: LLM-Powered Churn Risk Analyzer for Scalable 2026 Decision Support",
"url": "https://github.com/pravin6688/churn-triad-insights",
"source": "github",
"score": 0.3335,
"age": 2.0,
"one": "Every day, thousands of customers quietly signal their intent to leave."
},
{
"title": "swarm-foraging-qlearn: Q-Learning Swarm Foraging 2026: Multi-Agent RL in Dynamic Grid Environments",
"url": "https://github.com/jaimasih05-commits/swarm-foraging-qlearn",
"source": "github",
"score": 0.3335,
"age": 2.0,
"one": "Embark on a journey into emergent intelligence, where autonomous agents learn to collaborate, compete, and coexist in a living, breathing digital ecosystem."
},
{
"title": "Paradigm-Survival-Arena: Top 6 AI Paradigms Fighting for Survival in 2026",
"url": "https://github.com/aminekago-web/Paradigm-Survival-Arena",
"source": "github",
"score": 0.3335,
"age": 2.0,
"one": "Unlike traditional ML benchmarks that test accuracy on static datasets, Synaptic Colosseum evaluates models on *adaptive fitness*: the ability to learn from sparse rewards, generalize from limited exa"
},
{
"title": "cortex-sentinel-trading-nexus: Self-Tuning Multi-Agent AI Trading System 2026: 8-Source Signal Fusion & Kronos Model",
"url": "https://github.com/reunios2024/cortex-sentinel-trading-nexus",
"source": "github",
"score": 0.3335,
"age": 2.0,
"one": ""
},
{
"title": "magic-eraser-studio: AI Object Remover 2026 Erase Distractions & Keep HD Quality",
"url": "https://github.com/onlyoneshakibul/magic-eraser-studio",
"source": "github",
"score": 0.3335,
"age": 2.0,
"one": ""
},
{
"title": "ShipGenAI: 🚀 50 production-ready Generative AI SaaS apps — brand them, ship them, keep 100% of the revenue. Str",
"url": "https://github.com/benlamiro/ShipGenAI",
"source": "github",
"score": 0.324,
"age": 2.0,
"one": ""
},
{
"title": "ESEILANE: High-performance Knowledge Graph engine for AI, LLMs, and GraphRAG — built for the next generation o",
"url": "https://github.com/Aliu-AiRobot/ESEILANE",
"source": "github",
"score": 0.3238,
"age": 2.0,
"one": ""
},
{
"title": "Hello-Agents: 🤖 Building AI Agent Systems from Scratch — A comprehensive, practical tutorial from fundamentals to ",
"url": "https://github.com/Reyzowter/Hello-Agents",
"source": "github",
"score": 0.3146,
"age": 2.0,
"one": ""
},
{
"title": "Apple sues OpenAI, accusing it of stealing company secrets",
"url": "https://www.nytimes.com/2026/07/10/technology/apple-openai-lawsuit.html",
"source": "hackernews",
"score": 0.3006,
"age": 2.0,
"one": ""
},
{
"title": "ESEILANE: High-performance Knowledge Graph engine for AI, LLMs, and GraphRAG — built for the next generation o",
"url": "https://github.com/Simpl3x3/ESEILANE",
"source": "github",
"score": 0.2844,
"age": 2.0,
"one": ""
},
{
"title": "Agent-Loop-Skills: Loop until it's better — drop-in agentic loops (autoresearch, scientific writing, data analysis, cod",
"url": "https://github.com/gaasher/Agent-Loop-Skills",
"source": "github",
"score": 0.2841,
"age": 2.0,
"one": ""
},
{
"title": "autoguardrails: Alignment-research scaffold (autoresearch-style) for LLM guardrails: search over a single policy.md ",
"url": "https://github.com/SantanderAI/autoguardrails",
"source": "github",
"score": 0.284,
"age": 2.0,
"one": ""
},
{
"title": "Anti-Autoresearch: Don't trust an autoresearch paper at face value. Reviewer-side integrity forensics (self-consistency",
"url": "https://github.com/wanshuiyin/Anti-Autoresearch",
"source": "github",
"score": 0.2834,
"age": 2.0,
"one": ""
},
{
"title": "Ben Bernanke Joins Anthropic Oversight Trust",
"url": "https://www.anthropic.com/news/ben-bernanke",
"source": "hackernews",
"score": 0.2826,
"age": 2.0,
"one": ""
},
{
"title": "SimPolitics: Americas quest to solve politics with computers",
"url": "https://mitpress.mit.edu/9780262053198/simpolitics/",
"source": "hackernews",
"score": 0.273,
"age": 2.0,
"one": ""
},
{
"title": "FerryAI: Native AI inference for PHP 8.3+ - run ONNX, GGUF (llama.cpp) and RubixML models directly in your PH",
"url": "https://github.com/MADEVAL/FerryAI",
"source": "github",
"score": 0.2726,
"age": 2.0,
"one": ""
},
{
"title": "Show HN: FableCut A browser video editor AI agents can drive (zero deps)",
"url": "https://github.com/ronak-create/FableCut",
"source": "hackernews",
"score": 0.2723,
"age": 2.0,
"one": ""
},
{
"title": "Hands-On with the AMD Ryzen AI Halo",
"url": "https://www.microcenter.com/site/mc-news/article/amd-ryzen-ai-halo-review.aspx",
"source": "hackernews",
"score": 0.2582,
"age": 2.0,
"one": ""
},
{
"title": "Show HN: Reverse-engineering web apps into agent tools",
"url": "https://news.ycombinator.com/item/48847834",
"source": "hackernews",
"score": 0.2561,
"age": 2.0,
"one": ""
},
{
"title": "How version control will evolve for the agent boom",
"url": "https://entire.io/blog/how-version-control-will-evolve-for-the-agent-boom",
"source": "hackernews",
"score": 0.2506,
"age": 2.0,
"one": ""
},
{
"title": "Show HN: Reviving my 2001 college band with AI",
"url": "https://www.fadingmaize.com",
"source": "hackernews",
"score": 0.2497,
"age": 2.0,
"one": ""
},
{
"title": "The next era of AI is about infrastructure, not just models",
"url": "https://blog.mozilla.ai/the-control-layer-why-the-next-era-of-ai-is-about-infrastructure-not-just-models/",
"source": "hackernews",
"score": 0.2311,
"age": 2.0,
"one": ""
},
{
"title": "UniClawBench: A Universal Benchmark for Proactive Agents on Real-World Tasks",
"url": "https://arxiv.org/abs/2607.08768v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "we introduce UniClawBench, the first capability-driven benchmark designed to evaluate proactive agents in dynamic, real-world settings."
},
{
"title": "OpenCoF: Learning to Reason Through Video Generation",
"url": "https://arxiv.org/abs/2607.08763v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "Reasoning has become a core capability for large models, especially when reliable decisions require understanding logical consequences"
},
{
"title": "Ideas Have Genomes: Benchmarking Scientific Lineage Reasoning and Lineage-Grounded Idea Generation",
"url": "https://arxiv.org/abs/2607.08758v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "We present IdeaGene-Bench (IG-Bench), a benchmark for scientific lineage reasoning and lineage-grounded idea generation."
},
{
"title": "Score Accuracy Along the Forward Diffusion Does Not Certify Numerical Stability in Diffusion Sampling",
"url": "https://arxiv.org/abs/2607.08757v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "We show that small forward-marginal error does not guarantee numerical stability."
},
{
"title": "MulTTiPop: A Multitrack Transcription Dataset for Pop Music",
"url": "https://arxiv.org/abs/2607.08756v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "We present MulTTiPop, a dataset of pop music segments and their associated multitrack MIDI recordings for the evaluation of automatic music transcription models."
},
{
"title": "SLORR: Simple and Efficient In-Training Low-Rank Regularization",
"url": "https://arxiv.org/abs/2607.08754v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "Low-rank factorization is widely used to compress neural networks, but modern models are often not naturally amenable to aggressive factorization without significant accuracy loss"
},
{
"title": "Using AI-based Learning Assistants in Higher Education: A Large-Scale Descriptive Analysis",
"url": "https://arxiv.org/abs/2607.08748v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "we present a large-scale descriptive analysis of the use of an AI-based learning assistant (Syntea) in higher education."
},
{
"title": "Dimensionality Reduction Meets Network Science: Sensemaking on UMAP's kNN Graph",
"url": "https://arxiv.org/abs/2607.08746v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "we show that these graph-based analyses are not only practical but also competitive with or complementary to purpose-built methods (e."
},
{
"title": "AUTOPILOT VQA: Benchmarking Vision-Language Models for Incident-Centric Dashcam Understanding",
"url": "https://arxiv.org/abs/2607.08745v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "we present AUTOPILOT-VQA, an incident-centric visual question answering benchmark for dashcam video understanding."
},
{
"title": "ARDY: Autoregressive Diffusion with Hybrid Representation for Interactive Human Motion Generation",
"url": "https://arxiv.org/abs/2607.08741v1",
"source": "arxiv",
"score": 0.0,
"age": 2.0,
"one": "Generating realistic 3D human motions in real-time within interactive applications is key for animation, simulation, and humanoid robotics"
}
]
```
+298
View File
@@ -0,0 +1,298 @@
#!/usr/bin/env python3
"""Clickability Index for Athena entries.
CORRECTED for the REAL schema (verified 2026-07-10):
- Table is `entries`, not `items`.
- Per-source engagement lives inside the `raw_metadata` JSON blob, not
top-level `velocity_raw` / `engagement_raw` columns.
- `content_type` is COMPUTED, not stored.
This module is read-only against the DB (SELECT only). It does not
modify oracle.db.
The MULTIPLIERS and formula match the approved plan exactly.
"""
import sqlite3, json, math, re, os, time
from datetime import datetime, timezone
from collections import defaultdict
DB_PATH = os.path.join(os.path.dirname(__file__), "oracle.db")
MULTIPLIERS = {} # category multipliers removed: clickability is now virality-driven, not category-driven
# Virality weights (clickability = how viral/spreadable an item is right now)
VEL_W = 0.50
ENG_W = 0.50
SIG_W = 0.0 # signal_score no longer in the clickability blend (pure virality)
NOW = None # set in main/fetch for age math
def get_connection():
return sqlite3.connect(DB_PATH)
def _classify(src, title, summary):
t = (title + " " + (summary or "")).lower()
# Show HN — check first (builder posts)
if re.search(r"\bshow\s+hn\b", t) or (src == "hackernews" and re.search(r"\b(show|built|made|launched|shipped)\b", t)):
return "SHOW_HN"
# Model release — pattern-based (works for third-party coverage too)
if re.search(r"\b(gpt-|gpt5|gpt-5|deepseek|glm-|llama|qwen|claude|gemini|mistral|flux|stable-diffusion|sora|kimi|grok)\b", t) \
and re.search(r"\b(releases?|released|v\d|launch|unveil|model|new\s+model|update|version)\b", t):
return "MODEL_RELEASE"
if re.search(r"\b(releases?|released|launches?|unveils?|announces?|debut|new\s+model|gpt-5|deepseek-v|glm-5)\b", t) \
and re.search(r"\b(openai|anthropic|google|meta|microsoft|nvidia|ai)\b", t):
return "MODEL_RELEASE"
# HF model cards
if src == "huggingface":
return "MODEL_CARD"
# Research papers
if src == "arxiv" or re.search(r"\b(paper|study|benchmark|arxiv|proposes|learns?|novel|framework\s+for|towards)\b", t):
return "RESEARCH"
# Business/legal
if re.search(r"\b(sues|lawsuit|funding|raises|acqui|ipo|valued|stealing|trade secret|layoff|hire[ds]?|exec|ceo)\b", t) \
and not re.search(r"\b(repo|library|tool|agent framework)\b", t):
return "BUSINESS_LEGAL"
# Opinion/essay
if re.search(r"\b(burnout|opinion|think|feel|why|essay|culture|linkedin|social media|future of|we made|i think|hot take|i believe|my view|in defense)\b", t):
return "CULTURE_OPINION"
# Tutorial/howto
if re.search(r"\b(how to|tutorial|guide|running|build|setup|install|from scratch|learn)\b", t):
return "TUTORIAL_HOWTO"
# Dev tools
if src == "github" or re.search(r"\b(repo|library|framework|tool|agent|sdk|cli|extension|plugin|app|engine)\b", t):
return "DEV_TOOL_DRAMA"
return "OTHER"
def _extract(src, md):
"""Return (velocity_raw, engagement_raw, age_hours)."""
if src == "hackernews":
pts = md.get("score", 0) or 0
cmts = md.get("descendants", 0) or 0
age_h = None
if md.get("time"):
try:
age_h = max((NOW - md["time"]) / 3600.0, 0.1)
except Exception:
age_h = None
vel = (pts / age_h) if age_h else pts
return vel, (pts + 2 * cmts), age_h
if src == "reddit":
ups = md.get("ups", 0) or 0
cmts = md.get("num_comments", 0) or 0
return ups, (ups + 2 * cmts), None
if src == "huggingface":
likes = md.get("likes", 0) or 0
return likes, likes, None
if src == "github":
spd = md.get("stars_per_day", 0) or 0
stars = md.get("stars", 0) or 0
return spd, stars, None
if src == "arxiv":
return 0.0, 0.0, None
return 0.0, 0.0, None
def fetch_items(conn):
global NOW
NOW = __import__("time").time()
cur = conn.cursor()
cur.execute("SELECT id, title, url, source, summary, signal_score, raw_metadata, first_seen, "
"curated_by, manual_section, manual_tier "
"FROM entries")
cols = [d[0] for d in cur.description]
out = []
for row in cur.fetchall():
d = dict(zip(cols, row))
try:
md = json.loads(d.get("raw_metadata") or "{}")
except Exception:
md = {}
vel, eng, age = _extract(d["source"], md)
ct = _classify(d["source"], d.get("title") or "", d.get("summary") or "")
created_at = md.get("createdAt") if d["source"] == "huggingface" else None
out.append({
"id": d["id"],
"title": d.get("title") or "",
"url": d.get("url") or "",
"source": d["source"],
"summary": d.get("summary") or "",
"signal_score": d.get("signal_score") or 0,
"velocity_raw": vel,
"engagement_raw": eng,
"content_type": ct,
"first_seen": d.get("first_seen") or "",
"created_at": created_at or "",
"age_hours": 0.0,
"curated_by": d.get("curated_by") or "",
"manual_section": d.get("manual_section") or "",
"manual_tier": d.get("manual_tier") or "",
})
return out
def log1p_norm(values):
log_vals = [math.log1p(max(v, 0)) for v in values]
if not log_vals:
return []
min_v, max_v = min(log_vals), max(log_vals)
if max_v == min_v:
return [0.0] * len(values)
return [(v - min_v) / (max_v - min_v) for v in log_vals]
def compute_index(items):
velocities = [it.get("velocity_raw", 0) or 0 for it in items]
engagements = [it.get("engagement_raw", 0) or 0 for it in items]
signals = [it.get("signal_score", 0) or 0 for it in items]
vel_norm = log1p_norm(velocities)
eng_norm = log1p_norm(engagements)
sig_norm = log1p_norm(signals)
for i, item in enumerate(items):
raw = vel_norm[i] * VEL_W + eng_norm[i] * ENG_W + sig_norm[i] * SIG_W
# Items with 0 engagement (arXiv, RSS, Reddit no-data) get a small base score
# from signal_score so they can decay naturally instead of being stuck forever.
# Floor: 0.05 * signal_score_norm — enough to rank, low enough to sink fast.
if raw == 0 and sig_norm[i] > 0:
raw = 0.05 * sig_norm[i]
item["clickability"] = round(raw, 4)
item["section"] = "" # sections removed; flat ranked feed
return items
def _age_hours(item):
"""Effective news-age in hours.
HuggingFace items are aged by their TRUE model createdAt (likes/downloads
are lifetime cumulative, so DB first_seen would pin every HF entry at
ingest time and let all-time leaders dominate 'Top News' forever). All
other sources are aged by DB first_seen.
"""
if item.get("source") == "huggingface" and item.get("created_at"):
s = item["created_at"]
else:
s = item.get("first_seen") or ""
if not s:
return 0.0
try:
ts = datetime.strptime(s[:19], "%Y-%m-%dT%H:%M:%S").replace(
tzinfo=timezone.utc).timestamp()
return max((time.time() - ts) / 3600.0, 0.0)
except Exception:
return 0.0
# Category-specific half-lives (hours) — controls how long each type stays competitive.
# Breaking news decays slowest (stays relevant longer), arXiv/model cards fastest.
CATEGORY_HALF_LIVES = {
"breaking": 36.0, # Red — truly groundbreaking, double the standard
"update": 24.0, # Green — important but not groundbreaking, between red and black
"OTHER": 18.0, # Black — standard decay rate
}
# Map content_type to half-life, with tier override for breaking/update
def _get_half_life(item):
"""Return half-life in hours based on tier and content_type."""
# Hardware/Tips section items decay on a 14-DAY half-life (user: revised
# spec, shorter than evergreen). Covers both manual curations and
# auto-classified section items, so a section link persists 14 days
# instead of sinking in ~18h. Beyond this window the item is routed to
# Archive (generator).
ms = (item.get("manual_section") or "").upper()
if ms in ("HARDWARE", "TIPS"):
return 336.0
sec = (item.get("computed_section") or "").upper()
if sec in ("HARDWARE", "TIPS"):
return 336.0
tier = item.get("tier", "normal")
# Tier overrides take precedence
if tier == "breaking":
return CATEGORY_HALF_LIVES["breaking"]
if tier == "update":
return CATEGORY_HALF_LIVES["update"]
# Otherwise use content_type
ct = item.get("content_type", "OTHER")
return CATEGORY_HALF_LIVES.get(ct, CATEGORY_HALF_LIVES["OTHER"])
def decay_index(items, half_life_h=18.0):
"""Apply exponential time-decay to clickability so items sink as they age.
Uses category-specific half-lives: breaking news decays slowest (36h),
arXiv/model cards fastest (12h). This controls how long each type
stays competitive, not just starting score.
decayed = clickability * exp(-ln(2)/half_life * age_hours)
"""
# Rolling 24h freshness window (not calendar-day) so Top News stays populated
# between the daily harvest and midnight UTC. Decay still sinks old items.
cutoff = datetime.now(timezone.utc).timestamp() - 24 * 3600
for it in items:
age = _age_hours(it)
it["age_hours"] = round(age, 1)
base = it.get("clickability", 0) or 0
# Category-specific half-life
hl = _get_half_life(it)
k = math.log(2) / hl
it["clickability_decayed"] = round(base * math.exp(-k * age), 4)
it["effective_half_life"] = hl
# Freshness flag: ingested within the last 24h -> eligible for Top News.
fs = it.get("first_seen") or ""
try:
ts = datetime.fromisoformat(fs.replace("Z", "+00:00")).timestamp()
except ValueError:
ts = 0
it["fresh"] = ts >= cutoff
return items
def _pearson(xs, ys):
n = len(xs)
if n < 3:
return None
mx, my = sum(xs) / n, sum(ys) / n
num = sum((x - mx) * (y - my) for x, y in zip(xs, ys))
den = math.sqrt(sum((x - mx) ** 2 for x in xs) * sum((y - my) ** 2 for y in ys))
return num / den if den else None
def main():
conn = get_connection()
items = fetch_items(conn)
conn.close()
if not items:
print("No items found.")
return
computed = compute_index(items)
computed.sort(key=lambda x: x["clickability"], reverse=True)
print(f"=== TOP 20 BY CLICKABILITY INDEX (n={len(items)} items) ===\n")
for i, item in enumerate(computed[:20], 1):
print(f"{i:2}. [{item['clickability']:.4f}] {item['source']:11} | {item['title'][:58]}")
print(f" section={item['section']} | type={item['content_type']} | "
f"vel={item['velocity_raw']:.1f} eng={item['engagement_raw']:.1f} sig={item['signal_score']:.2f}")
# Backtest: Clickability Index vs ACTUAL HN engagement
hn = [it for it in computed if it["source"] == "hackernews" and it["engagement_raw"] > 0]
if hn:
r_full = _pearson([it["engagement_raw"] for it in hn],
[it["clickability"] for it in hn])
# Honest baseline: signal_score alone vs HN engagement (legacy prior)
r_sig = _pearson([it["engagement_raw"] for it in hn],
[it["signal_score"] for it in hn])
print(f"\n--- BACKTEST (HN, n={len(hn)}) ---")
print(f"ClickabilityIndex vs actual HN engagement : r = {r_full:.3f}" if r_full is not None else "r = n/a")
print(f"signal_score alone vs HN engagement : r = {r_sig:.3f}" if r_sig is not None else "r = n/a")
print("NOTE: engagement_raw is a 40% component of the index, so the full-index")
print(" r is structurally high. The meaningful comparison is whether the")
print(" index RANKS high-engagement items above low-engagement ones vs the")
print(" legacy signal_score prior (r_sig above).")
if __name__ == "__main__":
main()
+90
View File
@@ -0,0 +1,90 @@
# Athena Live Compare — 2026-07-10 23:05 UTC
- **Live pull:** 80 items (Reddit excluded — rate-limited)
- **NEW since today's 13:00 UTC cron:** 10
- **Caveat:** HF scores = cumulative traction, not 24h velocity. Velocity signals = GitHub stars/day, HN points/comments.
## FULL RANKED LIST (by cross-source virality)
| # | Virality | New | Source | Title | Key metric | Signal |
|---|---|---|---|---|---|---|
| 1 | 100.0 | | huggingface | DeepSeek-R1 (text-generation) by deepseek-ai | likes=13456, downloads=9076634 | 9.20 |
| 2 | 96.8 | | huggingface | Llama-3.1-8B-Instruct (text-generation) by meta-llama | likes=6274, downloads=8841328 | 8.97 |
| 3 | 96.3 | | huggingface | FLUX.1-dev (text-to-image) by black-forest-labs | likes=13576, downloads=625381 | 8.91 |
| 4 | 96.3 | | github | ponytail: Makes your AI agent think like the laziest senior dev in the room. The best code | stars/day=2861.9, stars=80132 | 4.22 |
| 5 | 95.0 | | huggingface | gpt-oss-20b (text-generation) by openai | likes=4780, downloads=7377506 | 8.69 |
| 6 | 92.9 | | huggingface | gpt-oss-120b (text-generation) by openai | likes=4963, downloads=4409898 | 8.70 |
| 7 | 92.8 | | huggingface | stable-diffusion-xl-base-1.0 (text-to-image) by stabilityai | likes=7910, downloads=1416264 | 8.64 |
| 8 | 91.6 | | huggingface | Meta-Llama-3-8B (text-generation) by meta-llama | likes=6592, downloads=1377733 | 8.85 |
| 9 | 91.0 | | huggingface | stable-diffusion-v1-4 (text-to-image) by CompVis | likes=7034, downloads=437073 | 8.58 |
| 10 | 89.9 | | huggingface | DeepSeek-V4-Pro (text-generation) by deepseek-ai | likes=5196, downloads=1318520 | 9.29 |
| 11 | 89.4 | | huggingface | Meta-Llama-3-8B-Instruct (text-generation) by meta-llama | likes=4694, downloads=1416749 | 8.83 |
| 12 | 88.0 | | huggingface | DeepSeek-V3 (text-generation) by deepseek-ai | likes=4096, downloads=1044544 | 8.61 |
| 13 | 87.9 | | huggingface | Llama-2-7b-chat-hf (text-generation) by meta-llama | likes=4789, downloads=282310 | 8.84 |
| 14 | 87.8 | | huggingface | bloom (text-generation) by bigscience | likes=5024, downloads=5654 | 8.71 |
| 15 | 87.8 | | huggingface | Mistral-7B-v0.1 (text-generation) by mistralai | likes=4123, downloads=858421 | 8.61 |
| 16 | 86.6 | | huggingface | phi-2 (text-generation) by microsoft | likes=3480, downloads=858754 | 8.68 |
| 17 | 86.6 | | huggingface | Mistral-7B-Instruct-v0.2 (text-generation) by mistralai | likes=3183, downloads=1147801 | 8.63 |
| 18 | 86.3 | | huggingface | GLM-5.2 (text-generation) by zai-org | likes=3782, downloads=392655 | 9.44 |
| 19 | 85.3 | | huggingface | Llama-3.3-70B-Instruct (text-generation) by meta-llama | likes=2884, downloads=788855 | 8.58 |
| 20 | 84.7 | | huggingface | gemma-7b (text-generation) by google | likes=3373, downloads=29989 | 8.51 |
| 21 | 84.6 | | huggingface | gemma-4-12B-coder-fable5-composer2.5-v1-GGUF (text-generation) by yuxinlu1 | likes=2677, downloads=714071 | 8.88 |
| 22 | 77.9 | | github | openscience: The open-source AI workbench for scientific research | stars/day=295.9, stars=2071 | 2.98 |
| 23 | 76.3 | | github | omnigent: Omnigent is an open-source AI agent framework and meta-harness: orchestrate Clau | stars/day=241.5, stars=7003 | 3.02 |
| 24 | 74.9 | | github | gzh-design-skill: 把 Markdown 一键排成可直接粘进公众号编辑器的精致 HTML —— 6 套精选主题 + 主题生成器 + 双关卡校验。An AI-agen | stars/day=203.1, stars=1828 | 2.82 |
| 25 | 74.3 | | github | local-llm: Everything I know about running LLMs locally | stars/day=190.3, stars=1332 | 2.76 |
| 26 | 72.7 | NEW | github | texts-to-transformer: Train a tiny Transformer from scratch on your iMessage history, enti | stars/day=155.0, stars=310 | 2.54 |
| 27 | 72.3 | | github | claude-real-video: Let Claude (or any LLM) actually watch a video — scene-aware, deduplica | stars/day=147.4, stars=1474 | 2.67 |
| 28 | 71.4 | | github | Vibe-Research: Vibe-Research: Your Personal Trading Research Agent · A股/美股/港股 的个人投研 Agent | stars/day=132.4, stars=662 | 2.55 |
| 29 | 70.3 | | github | Talos: GPU worker client for the Talos network. Pairs with your Talos account, serves open | stars/day=116.0, stars=928 | 2.54 |
| 30 | 70.1 | | github | open-connector: Open-source auth gateway connecting 1000+ SaaS providers to AI agents thro | stars/day=112.6, stars=1239 | 2.55 |
| 31 | 69.7 | NEW | github | photoshop-ai-smart-enhance: AI-powered image enhancement extension for Adobe Photoshop CC | stars/day=107.0, stars=107 | 2.29 |
| 32 | 68.6 | | github | loopy: A library of practical AI-agent loops and an installable skill for finding, adaptin | stars/day=94.0, stars=2633 | 2.56 |
| 33 | 68.4 | | github | hermex: Native iPhone app for your Hermes agent | stars/day=91.1, stars=729 | 2.42 |
| 34 | 68.4 | | github | motion-anything: ✨ The agentic motion layer — an open-source, chat-native motion engine. D | stars/day=91.2, stars=365 | 2.35 |
| 35 | 68.3 | | github | tickflow-stock-panel: 自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台 | 基于 TickFlow 数据源 | LLM能力驱使策略定制+个股分 | stars/day=90.0, stars=1979 | 2.51 |
| 36 | 67.8 | | github | open-science: Open Science Desktop — local-first, model-agnostic AI research workbench for | stars/day=85.6, stars=599 | 2.37 |
| 37 | 66.8 | NEW | github | FableCut: Zero-dependency browser video editor that AI agents can drive — JSON timeline, M | stars/day=75.2, stars=301 | 2.26 |
| 38 | 66.6 | | hackernews | GPT-5.6 | points=1514, comments=1071 | 6.07 |
| 39 | 66.2 | | github | self-learning-skills: A self-improving skill for AI coding agents (Claude Code, Cursor, AG | stars/day=69.5, stars=834 | 2.33 |
| 40 | 65.7 | | github | rnskill: 雪踏乌云的 AI Agent Skills 集合 | stars/day=66.0, stars=396 | 2.23 |
| 41 | 65.4 | | github | agent-chief: Attention is your scarcest resource. Chief is the local-first layer that guar | stars/day=63.3, stars=380 | 2.21 |
| 42 | 57.8 | NEW | hackernews | Show HN: Getting GLM 5.2 running on my slow computer | points=828, comments=203 | 5.73 |
| 43 | 56.9 | | hackernews | I think I have LLM burnout | points=401, comments=354 | 5.33 |
| 44 | 55.0 | | hackernews | Building a real-time AI tutor for 5-year-olds | points=138, comments=372 | 4.74 |
| 45 | 53.4 | NEW | hackernews | GPT-5.6 Sol Ultra produces proof of the Cycle Double Cover Conjecture [pdf] | points=269, comments=226 | 5.11 |
| 46 | 53.3 | | hackernews | ChatGPT Work | points=348, comments=183 | 5.25 |
| 47 | 53.2 | | hackernews | AI-generated videos to maximally drive a target brain region | points=258, comments=221 | 5.09 |
| 48 | 52.7 | | hackernews | AI content is everywhere on social media, especially LinkedIn | points=236, comments=213 | 5.04 |
| 49 | 50.3 | | hackernews | What's slowing down the AI buildout | points=80, comments=205 | 4.44 |
| 50 | 49.6 | | hackernews | Suspecting AI cheating, Ivy League prof ordered in-person final; scores fell 50% | points=135, comments=158 | 4.73 |
| 51 | 48.4 | NEW | hackernews | How the terrorist group Boko Haram uses frontier AI | points=145, comments=121 | 4.69 |
| 52 | 47.8 | | hackernews | We made Grok 4.5, GPT-5.5, and Claude build the same apps | points=173, comments=93 | 4.68 |
| 53 | 46.7 | | hackernews | AI changes the economics of software rewrites | points=102, comments=106 | 4.44 |
| 54 | 45.3 | NEW | hackernews | GPT-5.6, Grok 4.5, Claude, and Muse Spark build the same 4 apps | points=120, comments=72 | 4.38 |
| 55 | 44.9 | NEW | hackernews | Apple sues OpenAI, accuses ex-employees of stealing trade secrets | points=127, comments=62 | 4.35 |
| 56 | 44.4 | | hackernews | Ben Bernanke Joins Anthropic Oversight Trust | points=75, comments=81 | 4.17 |
| 57 | 43.5 | | hackernews | Show HN: FableCut A browser video editor AI agents can drive (zero deps) | points=95, comments=58 | 4.17 |
| 58 | 42.9 | | hackernews | AI 2040: Plan A | points=92, comments=53 | 4.11 |
| 59 | 42.7 | NEW | hackernews | SimPolitics: Americas quest to solve politics with computers | points=103, comments=44 | 4.10 |
| 60 | 40.1 | NEW | hackernews | Show HN: Reverse-engineering web apps into agent tools | points=79, comments=30 | 4.31 |
| 61 | 0.0 | | arxiv | OpenCoF: Learning to Reason Through Video Generation | categories=cs.CV, cs.AI | 5.39 |
| 62 | 0.0 | | arxiv | ARDY: Autoregressive Diffusion with Hybrid Representation for Interactive Human Motion Gen | categories=cs.GR, cs.CV, cs.LG | 5.19 |
| 63 | 0.0 | | arxiv | UniClawBench: A Universal Benchmark for Proactive Agents on Real-World Tasks | categories=cs.CL | 3.94 |
| 64 | 0.0 | | arxiv | SLORR: Simple and Efficient In-Training Low-Rank Regularization | categories=cs.LG, cs.AI | 3.59 |
| 65 | 0.0 | | arxiv | Remember When It Matters: Proactive Memory Agent for Long-Horizon Agents | categories=cs.AI, cs.CL | 3.38 |
| 66 | 0.0 | | arxiv | AUTOPILOT VQA: Benchmarking Vision-Language Models for Incident-Centric Dashcam Understand | categories=cs.AI, cs.CV | 3.24 |
| 67 | 0.0 | | arxiv | Latent Memory Palace: Reasoning for Control as Autoregressive Variational Inference | categories=cs.LG, cs.RO | 3.13 |
| 68 | 0.0 | | arxiv | Workflow as Knowledge: Semantic Persistence for LLM-Mediated Workflows | categories=cs.AI, cs.PL, cs.SE | 3.09 |
| 69 | 0.0 | | arxiv | The Illusion of Equivalency: Statistical Characterization of Quantization Effects in LLMs | categories=cs.AI | 3.04 |
| 70 | 0.0 | | arxiv | LTM: Large-scale Terrain Model for Wildfire-prone Landscapes | categories=cs.CV, cs.LG | 3.03 |
| 71 | 0.0 | | arxiv | Ideas Have Genomes: Benchmarking Scientific Lineage Reasoning and Lineage-Grounded Idea Ge | categories=cs.AI | 2.89 |
| 72 | 0.0 | | arxiv | Super Weights in LLMs and the Failure of Selective Training | categories=cs.LG | 2.89 |
| 73 | 0.0 | | arxiv | Validity of LLMs as data annotators: AMALIA on authority | categories=cs.CL, cs.AI, cs.CY | 2.63 |
| 74 | 0.0 | | arxiv | Pose-to-Biomechanics: Bridging 3D Human Pose Estimation and Biomechanical Attribute Predic | categories=cs.CV, cs.AI, cs.LG | 2.63 |
| 75 | 0.0 | | arxiv | Deep Learning for Joint Narrowband Interference Cancellation and Soft Demodulation in OFDM | categories=cs.LG, eess.SP | 2.58 |
| 76 | 0.0 | | arxiv | MPFlow: Learning Budgeted Max-Flow Optimization on the Lightning Network with Deep Graph R | categories=cs.LG | 2.48 |
| 77 | 0.0 | | arxiv | Score Accuracy Along the Forward Diffusion Does Not Certify Numerical Stability in Diffusi | categories=stat.ML, cs.LG, math.NA | 2.44 |
| 78 | 0.0 | | arxiv | MulTTiPop: A Multitrack Transcription Dataset for Pop Music | categories=cs.SD, cs.LG | 2.39 |
| 79 | 0.0 | | arxiv | Using AI-based Learning Assistants in Higher Education: A Large-Scale Descriptive Analysis | categories=cs.AI, cs.HC | 2.24 |
| 80 | 0.0 | | arxiv | Dimensionality Reduction Meets Network Science: Sensemaking on UMAP's kNN Graph | categories=cs.LG, cs.AI, cs.DS | 2.24 |
+7
View File
@@ -14,6 +14,13 @@ LOG="$LOG_DIR/cron_run_${TS}.log"
mkdir -p "$LOG_DIR"
cd "$ORACLE_DIR" || { echo "FATAL: cannot cd $ORACLE_DIR"; exit 1; }
# Source tokens from .env (GITHUB_TOKEN, HUGGINGFACE_TOKEN)
if [ -f "$ORACLE_DIR/.env" ]; then
set -a
source "$ORACLE_DIR/.env"
set +a
fi
{
echo "=== Oracle pipeline run: $(date -u) ==="
python3 pipeline.py --limit 20
+268
View File
@@ -0,0 +1,268 @@
#!/usr/bin/env python3
"""One-shot stack propagator (explicit user request 2026-07-12, rev 2.2).
Editorial rules applied (reuses BUILT-IN pipeline functions, no pipeline edits):
- clickability.compute_index / decay_index (virality rank + 18h decay)
- generate_from_athena.clean_headline (repo-prefix trim, emoji strip, length cap)
- generate_from_athena.add_prefix (Breaking | text prefix, BREAKING GATE)
- render_site._clean_summary (one-liner descriptions on every card)
USER DIRECTIVES (2026-07-12):
1. GitHub source EXCLUDED entirely (until further notice).
2. 'update' green tier REMOVED. Only 'breaking' (rare real events) or 'normal'.
3. Curated Picks section surfaces two flavors (tight deterministic phrase match,
no broad keywords to avoid false positives):
(a) QUIRKY + agents roasting their humans
(b) people who BUILT / SHIPPED / EARNED from an AI product (indie hackers)
Window: last DAYS days (default 4). Cap: LIMIT (default 200) — GitHub ban caps the
real max at ~180 over 4 days; we render whatever is eligible (never fake count).
"""
import os, re, sys, json, sqlite3, html as _html
from datetime import datetime as dt, timezone, timedelta
from collections import OrderedDict
ORACLE = "/home/vpsadmin/oracle"
sys.path.insert(0, ORACLE)
sys.path.insert(0, "/home/vpsadmin/ai-oracle-site")
import clickability as cb
import render_site as rs
import generate_from_athena as ga
DB = os.path.join(ORACLE, "oracle.db")
WEBROOT = "/var/www/preprod3"
FALLBACK = os.path.join(ORACLE, "site")
NOW = dt.now(timezone.utc)
DAYS = 14 # span whole DB so all 182 non-GitHub entries are eligible (DB only goes back ~7d)
LIMIT = 200 # hard ceiling: DB only has 182 non-GitHub entries total, so 182 will render
EXCLUDE_SOURCES = {"github"} # banned until further notice
# BREAKING GATE (verbatim pipeline logic; repos/papers/models never breaking)
REPO_SOURCES = {"github", "gitlab", "huggingface", "arxiv"}
IMPORTANCE = re.compile(
r"\b(sues?|sue|lawsuit|launches?|launch|releases?|release|"
r"bans?|ban|war|strikes?|attack|acquires?|acquisition|trillion|billions?|"
r"layoffs?|declares?|emergency|outage|breach|stolen|steals?|theft|antitrust|"
r"monopoly|reveals?|exposed|breakthrough|first|warns?|crackdown|shutdown|"
r"GPT-?5|Claude|Gemini|OpenAI|Anthropic|Google|Apple|Microsoft|Meta|xAI|"
r"Musk|Altman|Grok|DeepSeek|Llama|NVIDIA|AMD|FCC|EU|antitrust|"
r"folded|spins? off|partners?|raises?|ipo|funding)\\b", re.I)
BREAKING_PCT = 0.90
# --- CURATION: QUIRKY + agents roasting their humans ONLY (deterministic; no LLM) ---
# Standing directive 2026-07-12 (end of session): "shipped & paid / built & earned"
# was WALKED BACK ("looking for people who build and ship products is a whole
# separate issue"). Do NOT bake it in. Curation = quirky + agents-roasting-humans.
QUIRKY = [
"hit piece", "roast", "roasting", "insult", "revenge", "betray",
"bizarre", "weird", "cursed", "font humans", "brain region",
"conspiracy", "haunted", "absurd", "unhinged", "sentient", "scream",
"mock", "taunt", "expose their", "its human", "its user", "their owner",
"about their", "their creator", "their master", "turned on", "backstab",
"wrote about its", "turned against", "rebelled", "sassy", "savage",
]
# built / shipped / EARNED from an AI product (FIRST-PERSON builder only —
# tight phrases; bare 'revenue'/'funding'/'ipo' EXCLUDED to avoid industry-news
# false positives like TechCrunch "startups growing revenue").
BUILT_SHIPPED = [
"indie hacker", "i built", "i made", "i shipped", "i launched", "i sold",
"my saas", "my startup", "my app", "my product", "my business",
"side project", "bootstrapped", "profitable", "paying customers",
"made money", "earn money", "mrr", "monthly recurring", "i run a",
"made me $", "income from", "subscriptions", "sold my", "quit my job",
"shipped a", "built a", "customers pay", "my first", "passive income",
]
def _parse(ts):
if not ts:
return None
try:
return dt.fromisoformat(ts.replace("Z", "+00:00"))
except Exception:
return None
def _curation(it):
blob = f"{(it.get('title') or '')} {(rs._clean_summary(it.get('summary') or ''))}".lower()
if any(k in blob for k in BUILT_SHIPPED):
return ("built", 1.22)
if any(k in blob for k in QUIRKY):
return ("quirky", 1.16)
return (None, 1.0)
def main():
conn = sqlite3.connect(f"file:{DB}?mode=ro", uri=True)
items = cb.fetch_items(conn)
conn.close()
items = cb.compute_index(items)
items = cb.decay_index(items, rs.HALF_LIFE_H)
cutoff = NOW - timedelta(days=DAYS)
eligible = [it for it in items
if it.get("title") and it.get("url")
and it.get("first_seen") and _parse(it["first_seen"])
and _parse(it["first_seen"]) >= cutoff
and (it.get("source") or "").lower() not in EXCLUDE_SOURCES]
eligible.sort(key=lambda x: x["clickability_decayed"], reverse=True)
top = eligible[:LIMIT]
scores = [it["clickability_decayed"] for it in top]
n = len(scores)
def pct_rank(v):
beaten = sum(1 for s in scores if s <= v)
return beaten / n if n else 0.0
for it in top:
src = (it.get("source") or "").lower()
pr = pct_rank(it["clickability_decayed"])
is_repo = src in REPO_SOURCES
important = bool(IMPORTANCE.search(it.get("title") or ""))
if (not is_repo) and important and pr >= BREAKING_PCT:
tier = "breaking"
else:
tier = "normal"
cleaned = ga.clean_headline(it["title"], it.get("source", ""))
it["title"] = ga.add_prefix(cleaned, it["url"], tier)
it["_tier"] = tier
label, mult = _curation(it)
it["_curated"] = label
it["clickability_decayed"] = it["clickability_decayed"] * mult
ranked = sorted(top, key=lambda x: x["clickability_decayed"], reverse=True)
fresh = [it for it in ranked if it.get("fresh")]
top_cards = fresh[:rs.TOP_N]
stack = [it for it in ranked if it not in top_cards]
curated = [it for it in ranked if it.get("_curated")]
curated.sort(key=lambda x: x["clickability_decayed"], reverse=True)
curated_cards = curated[:12]
by_day = OrderedDict()
for it in stack:
day = (it.get("first_seen") or "")[:10] or "unknown"
by_day.setdefault(day, []).append(it)
def card(it):
title = _html.escape(it["title"] or "(untitled)")
url = _html.escape(it["url"] or "#")
src = _html.escape(it["source"])
sig = it.get("signal_score") or 0
t = rs._fmt_time(it.get("first_seen"))
summary = _html.escape(rs._clean_summary(it.get("summary") or "")[:200])
cls = "card"
if it.get("_tier") == "breaking":
cls += " breaking"
if it.get("_curated"):
cls += " curated"
badge = ""
if it.get("_curated") == "built":
badge = '<span class="badge built">\U0001f4b0 Built &amp; Earned</span>'
elif it.get("_curated") == "quirky":
badge = '<span class="badge quirky">\U0001f300 Quirky</span>'
sum_html = f'<p class="summary">{summary}</p>' if summary else ""
return f"""
<article class="{cls}" data-src="{src}">
<div class="meta"><span class="src">{src}</span>
<span class="time">{t}</span>
<span class="sig">sig {sig:.1f}</span>
{badge}
<span class="score">\U0001f525 {it['clickability_decayed']:.2f}</span></div>
<h3><a href="{url}" target="_blank" rel="noopener">{title}</a></h3>
{sum_html}
</article>"""
top_html = "".join(card(it) for it in top_cards)
curated_html = "".join(card(it) for it in curated_cards)
stack_html = ""
for day, rows in by_day.items():
rows.sort(key=lambda x: x["clickability_decayed"], reverse=True)
cards = "".join(card(it) for it in rows)
stack_html += f"""
<h3 class="day">\U0001f4c5 {day}</h3>
<div class="stack">{cards}</div>"""
now_str = NOW.strftime("%Y-%m-%d %H:%M UTC")
page = f"""<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Athena AI News — Ranked by Clickability</title>
<style>
:root {{ --bg:#0b0e14; --card:#141925; --fg:#e6e9ef; --mut:#8b93a7; --acc:#5b8cff; }}
* {{ box-sizing:border-box; }}
body {{ margin:0; background:var(--bg); color:var(--fg);
font:15px/1.5 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif; }}
header {{ padding:28px 20px 14px; border-bottom:1px solid #1f2533; text-align:center; }}
header h1 {{ margin:0; font-size:28px; letter-spacing:.5px; }}
header .sub {{ color:var(--mut); font-size:13px; margin-top:6px; }}
main {{ max-width:1000px; margin:0 auto; padding:20px; }}
h2.sech {{ font-size:18px; margin:26px 0 12px; border-left:3px solid var(--acc); padding-left:10px; }}
.grid {{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:14px; }}
.card {{ background:var(--card); border:1px solid #1f2533; border-radius:12px; padding:16px; }}
.card.breaking {{ border-left:3px solid #ff5b5b; }}
.card.curated {{ border-left:3px solid #ffcf5b; background:#1a160c; }}
.meta {{ display:flex; gap:8px; align-items:center; font-size:12px; color:var(--mut); flex-wrap:wrap; }}
.src {{ background:#1f2533; padding:2px 8px; border-radius:20px; text-transform:uppercase; }}
.badge {{ padding:1px 8px; border-radius:10px; font-size:11px; font-weight:600; }}
.badge.built {{ background:#ffcf5b; color:#1a160c; }}
.badge.quirky {{ background:#b98cff; color:#150c1f; }}
.score {{ color:#ff9d5b; font-weight:600; margin-left:auto; }}
.card h3 {{ font-size:16px; margin:10px 0 8px; line-height:1.35; }}
.card h3 a {{ color:var(--fg); text-decoration:none; }}
.card h3 a:hover {{ color:var(--acc); }}
.summary {{ color:var(--mut); font-size:13px; margin:0; }}
.day {{ font-size:15px; color:var(--mut); margin:28px 0 10px; border-bottom:1px solid #1f2533; padding-bottom:6px; }}
.stack {{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:12px; }}
</style>
</head>
<body>
<header>
<h1>Athena AI News</h1>
<div class="sub">Auto-ranked by Clickability Index · {len(top)} stories (4-day window, GitHub excluded) · curated: quirky + agents roasting their humans · generated {now_str}</div>
</header>
<main>
<h2 class="sech">\U0001f4b0\U0001f300 Curated Picks — Built &amp; Earned · Quirky · Agents Roasting Their Humans</h2>
<div class="grid">{curated_html}</div>
<h2 class="sech">\U0001f534 Top News</h2>
<div class="grid">{top_html}</div>
<h2 class="sech">\U0001f4f0 The Stack</h2>
{stack_html}
</main>
</body>
</html>"""
target = WEBROOT if os.path.isdir(WEBROOT) else FALLBACK
os.makedirs(target, exist_ok=True)
with open(os.path.join(target, "index.html"), "w") as f:
f.write(page)
with open(os.path.join(target, "feed.json"), "w") as f:
json.dump([
{"title": i["title"], "url": i["url"], "source": i["source"],
"tier": i.get("_tier"), "curated": i.get("_curated"),
"clickability_decayed": round(i["clickability_decayed"], 3),
"age_hours": i["age_hours"], "first_seen": i.get("first_seen")}
for i in ranked
], f, indent=2)
where = "WEBROOT(/var/www/preprod3)" if target == WEBROOT else "FALLBACK(~oracle/site)"
tiers = {"breaking": 0, "normal": 0}
for it in top:
tiers[it["_tier"]] += 1
cc = {"built": 0, "quirky": 0, "none": 0}
for it in top:
cc[it["_curated"] or "none"] += 1
with_desc = sum(1 for it in top if rs._clean_summary(it.get("summary") or ""))
print(f"[propagate v2.2] wrote {target}/index.html + feed.json")
print(f" target : {where}")
print(f" window : last {DAYS} days, GitHub EXCLUDED")
print(f" eligible : {len(eligible)} (cap {LIMIT} -> rendered {len(top)})")
print(f" tiers : {tiers['breaking']} breaking / {tiers['normal']} normal (update tier REMOVED)")
print(f" curated flags : {cc['built']} built&earned | {cc['quirky']} quirky | {cc['none']} none")
print(f" curated shown : top {len(curated_cards)} in Curated Picks section")
print(f" with desc : {with_desc}/{len(top)} cards have a one-liner description")
if __name__ == "__main__":
main()
+185
View File
@@ -0,0 +1,185 @@
#!/usr/bin/env python3
"""Render Athena entries into a static news site (two-layer: Top News + aging Stack).
Read-only against oracle.db. Writes static HTML to the preprod3 webroot.
Designed for a 20-min no_agent cron.
Usage:
python3 render_site.py # write to WEBROOT
python3 render_site.py --dry-run # print stats, write to ./_preview.html
"""
import argparse, html, os, json, sqlite3, datetime, re
from collections import OrderedDict
import clickability as cb
HERE = os.path.dirname(os.path.abspath(__file__))
WEBROOT = "/var/www/preprod3"
DB_PATH = os.path.join(HERE, "oracle.db")
TOP_N = 8
HALF_LIFE_H = 18.0
def _clean_summary(raw):
"""summary is stored as JSON {one_liner, key_technical_point, potential_use_case}.
Pull the most readable field; fall back to the raw text if it isn't JSON.
Strips markdown/latex noise so the card reads clean on the page."""
if not raw:
return ""
try:
d = json.loads(raw)
if isinstance(d, dict):
for k in ("one_liner", "key_technical_point", "potential_use_case"):
v = d.get(k)
if isinstance(v, str) and v.strip():
return re.sub(r"\\+|_|`", "", v).strip()
except Exception:
pass
return re.sub(r"\\+|_|`", "", raw).strip()
def _fmt_time(first_seen):
if not first_seen:
return ""
try:
dt = datetime.datetime.strptime(first_seen, "%Y-%m-%dT%H:%M:%SZ")
return dt.strftime("%H:%M")
except Exception:
return ""
def _card(it, big=False):
title = html.escape(it["title"] or "(untitled)")
url = html.escape(it["url"] or "#")
src = html.escape(it["source"])
sig = it.get("signal_score") or 0
t = _fmt_time(it.get("first_seen"))
summary_raw = _clean_summary(it.get("summary") or "")
summary = html.escape(summary_raw[:200])
cls = "card big" if big else "card"
summary_html = ('<p class="summary">{0}</p>'.format(summary)) if (summary and big) else ""
return f"""
<article class="{cls}" data-src="{src}">
<div class="meta"><span class="src">{src}</span>
<span class="time">{t}</span>
<span class="sig">sig {sig:.1f}</span>
<span class="score">\U0001f525 {it['clickability_decayed']:.2f}</span></div>
<h3><a href="{url}" target="_blank" rel="noopener">{title}</a></h3>
{summary_html}
</article>"""
def build_html(items):
now = datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%d %H:%M UTC")
ranked = sorted(items, key=lambda x: x["clickability_decayed"], reverse=True)
# Top News = fresh items only (ingested today, UTC). Yesterday's viral
# leftovers sink into the Stack instead of dominating the front page.
fresh = [it for it in ranked if it.get("fresh")]
top = fresh[:TOP_N]
stack = [it for it in ranked if it not in top]
# group stack by day (first_seen date)
by_day = OrderedDict()
for it in stack:
day = (it.get("first_seen") or "")[:10] or "unknown"
by_day.setdefault(day, []).append(it)
top_html = "".join(_card(it, big=True) for it in top)
stack_html = ""
for day, rows in by_day.items():
rows.sort(key=lambda x: x["clickability_decayed"], reverse=True)
cards = "".join(_card(it) for it in rows)
stack_html += f"""
<h3 class="day">\U0001f4c5 {html.escape(day)}</h3>
<div class="stack">{cards}</div>"""
return f"""<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Athena AI News — Ranked by Clickability</title>
<style>
:root {{ --bg:#0b0e14; --card:#141925; --fg:#e6e9ef; --mut:#8b93a7; --acc:#5b8cff; }}
* {{ box-sizing:border-box; }}
body {{ margin:0; background:var(--bg); color:var(--fg);
font:15px/1.5 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif; }}
header {{ padding:28px 20px 14px; border-bottom:1px solid #1f2533; text-align:center; }}
header h1 {{ margin:0; font-size:28px; letter-spacing:.5px; }}
header .sub {{ color:var(--mut); font-size:13px; margin-top:6px; }}
main {{ max-width:1000px; margin:0 auto; padding:20px; }}
h2.sech {{ font-size:18px; margin:26px 0 12px; border-left:3px solid var(--acc); padding-left:10px; }}
.grid {{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:14px; }}
.card {{ background:var(--card); border:1px solid #1f2533; border-radius:12px; padding:16px; }}
.card.big {{ grid-column:1/-1; }}
.meta {{ display:flex; gap:10px; align-items:center; font-size:12px; color:var(--mut); }}
.src {{ background:#1f2533; padding:2px 8px; border-radius:20px; text-transform:uppercase; }}
.score {{ color:#ff9d5b; font-weight:600; margin-left:auto; }}
.card h3 {{ font-size:16px; margin:10px 0 8px; line-height:1.35; }}
.card.big h3 {{ font-size:20px; }}
.card h3 a {{ color:var(--fg); text-decoration:none; }}
.card h3 a:hover {{ color:var(--acc); }}
.summary {{ color:var(--mut); font-size:13px; margin:0; }}
.day {{ font-size:15px; color:var(--mut); margin:28px 0 10px; border-bottom:1px solid #1f2533; padding-bottom:6px; }}
.stack {{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:12px; }}
</style>
</head>
<body>
<header>
<h1>Athena AI News</h1>
<div class="sub">Auto-ranked by Clickability Index · decays with age so the stack flows top → bottom · generated {now} · {len(items)} stories</div>
</header>
<main>
<h2 class="sech">\U0001f534 Top News</h2>
<div class="grid">{top_html}</div>
<h2 class="sech">\U0001f4f0 The Stack</h2>
{stack_html}
</main>
</body>
</html>"""
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--dry-run", action="store_true")
args = ap.parse_args()
conn = sqlite3.connect(DB_PATH)
items = cb.fetch_items(conn)
conn.close()
items = cb.compute_index(items)
items = cb.decay_index(items, HALF_LIFE_H)
page = build_html(items)
if args.dry_run:
out = os.path.join(HERE, "_preview.html")
with open(out, "w") as f:
f.write(page)
fresh = [it for it in items if it.get("fresh")]
top = sorted(fresh, key=lambda x: x["clickability_decayed"], reverse=True)[:TOP_N]
print(f"[dry-run] wrote {out} ({len(items)} items, {len(fresh)} fresh today)")
print(f"TOP {TOP_N} FRESH (today only) by decayed clickability:")
for i, it in enumerate(top, 1):
print(f" {i}. [{it['clickability_decayed']:.2f} | age {it['age_hours']:.0f}h] {it['source']:10} {it['title'][:55]}")
return
# Write to webroot if it exists (deployed); otherwise fall back to a
# user-owned dir so the no_agent cron never errors pre-deploy.
fallback = os.path.join(HERE, "site")
target = WEBROOT if os.path.isdir(WEBROOT) else fallback
os.makedirs(target, exist_ok=True)
with open(os.path.join(target, "index.html"), "w") as f:
f.write(page)
with open(os.path.join(target, "feed.json"), "w") as f:
json.dump([
{"title": i["title"], "url": i["url"], "source": i["source"],
"clickability_decayed": i["clickability_decayed"], "age_hours": i["age_hours"],
"first_seen": i.get("first_seen")}
for i in sorted(items, key=lambda x: x["clickability_decayed"], reverse=True)
], f, indent=2)
where = "WEBROOT" if target == WEBROOT else "fallback(~oracle/site)"
print(f"[render] wrote {target}/index.html ({len(items)} items) -> {where}")
if __name__ == "__main__":
main()
+2178
View File
File diff suppressed because it is too large Load Diff
+160
View File
@@ -0,0 +1,160 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI NEWS DAILY</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Anton&display=swap" rel="stylesheet">
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+CiAgPHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSJub25lIiBzdHJva2U9IiMxMTExMTEiIHN0cm9rZS13aWR0aD0iMyIvPgogIDx0ZXh0IHg9IjM0IiB5PSI0NyIgZm9udC1mYW1pbHk9IkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiIGZvbnQtd2VpZ2h0PSI5MDAiIGZvbnQtc3R5bGU9Iml0YWxpYyIgZm9udC1zaXplPSI0MiIgZmlsbD0iIzExMTExMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgdHJhbnNmb3JtPSJza2V3WCgtNikgdHJhbnNsYXRlKDQsMCkiPkE8L3RleHQ+Cjwvc3ZnPgo=">
<style>
body { font-family: Arial, Helvetica, sans-serif; max-width: 700px; margin: 0 auto; padding: 20px 16px 60px; background: #fff; color: #111; line-height: 1.3; }
h1 { font-family: 'Anton', 'Arial Narrow', Arial, sans-serif; font-weight: 900; font-size: 46px; text-align: center; letter-spacing: -0.5px; transform: skewX(-10deg); margin: 10px 0 4px; text-shadow: 5px 5px 0 rgba(0,0,0,0.18); }
.tagline { text-align: center; font-size: 13px; color: #666; margin-bottom: 6px; }
hr { border: none; border-top: 3px solid #111; margin: 14px 0 22px; }
.headline { font-size: 18px; font-weight: bold; margin: 16px 0; }
.headline a { color: #111; text-decoration: underline; }
.headline a:visited { color: #1a0dab; font-style: normal; }
.breaking a { color: #c00; font-style: italic; }
.update a { color: #2a8a2a; font-style: italic; }
.desc { font-size: 14px; font-weight: normal; color: #555; margin: 4px 0 0 0; line-height: 1.4; }
.tt-h { font-size: 18px; font-weight: bold; color: #111; margin: 22px 0 10px; }
.tt-list .headline { margin: 12px 0; font-size: 17px; }
.sep { border: none; border-top: 1px solid #ddd; margin: 26px 0 18px; }
footer { margin-top: 40px; font-size: 12px; color: #888; text-align: center; }
</style>
</head>
<body>
<h1>AI NEWS DAILY</h1>
<h2 class="tt-h">Hardware</h2>
<div class="tt-list">
<div class="headline normal"><a href="https://www.microcenter.com/site/mc-news/article/amd-ryzen-ai-halo-review.aspx" target="_blank">Hands-On with the AMD Ryzen AI Halo</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1utwqf8/ultra_budget_20gb_vram_with_448gbs_for_100_bucks/" target="_blank">Ultra budget 20GB vram with 448GB/s for $100 bucks.</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uuc3pi/benchmark_4x_5060_ti_64gb_vram_p2p_qwen36_27b/" target="_blank">Benchmark - 4x 5060 Ti (64GB VRAM) (P2P) - Qwen3.6 27B (INT8 /w bf16 kv…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu6p9o/your_80_tesla_p100_has_been_doing_silently_noisy/" target="_blank">**Your $80 Tesla P100 has been doing silently noisy math in llama.cpp…</a></div>
</div>
<hr class="sep">
<div class="headline breaking"><a href="https://9to5mac.com/2026/07/10/apple-sues-openai-trade-secret-theft/" target="_blank">Breaking | Apple sues OpenAI, accuses ex-employees of stealing trade secrets</a></div>
<div class="headline breaking"><a href="https://cdn.openai.com/pdf/04d1d1e4-bc75-476a-97cf-49055cd98d31/cdc_proof.pdf" target="_blank">Breaking | GPT-5.6 Sol Ultra produces proof of the Cycle Double Cover Conjecture</a></div>
<div class="headline normal"><a href="https://terrytao.wordpress.com/2026/07/11/old-and-new-apps-via-modern-coding-agents/" target="_blank">Old and new apps, via modern coding agents by Terry Tao</a></div>
<div class="headline normal"><a href="https://www.iroh.computer/blog/mesh-llm" target="_blank">Mesh LLM: distributed AI computing on iroh</a></div>
<div class="headline normal"><a href="https://www.mixfont.com/ghost-font" target="_blank">Ghost Font: A font that humans can read but AI cannot</a></div>
<div class="headline normal"><a href="https://blog.yaelwrites.com/stop-telling-me-to-ask-an-llm/" target="_blank">Stop Telling Me to Ask an LLM</a></div>
<div class="headline normal"><a href="https://casp.ac/reports/ai-enabled-terrorism" target="_blank">How the terrorist group Boko Haram uses frontier AI</a></div>
<div class="headline normal"><a href="https://spectrum.ieee.org/ai-science-research-flattens-discovery" target="_blank">AI Boosts Research Careers but Flattens Scientific Discovery</a></div>
<div class="headline normal"><a href="https://www.tryai.dev/blog/gpt-5.6-build-off-12-models" target="_blank">GPT-5.6, Grok 4.5, Claude, and Muse Spark build the same 4 apps</a></div>
<div class="headline normal"><a href="https://pluralistic.net/2025/09/11/vulgar-thatcherism/#there-is-an-alternative" target="_blank">Reverse centaurs are the answer to the AI paradox (2025)</a></div>
<div class="headline normal"><a href="https://www.off-policy.com/dont-go-quietly-into-the-ai-night/" target="_blank">Who manages the agents?</a></div>
<div class="headline normal"><a href="https://www.nytimes.com/2026/07/10/technology/apple-openai-lawsuit.html" target="_blank">Apple sues OpenAI, accusing it of stealing company secrets</a></div>
<div class="headline normal"><a href="https://www.bbc.com/news/articles/c9q29j47v9ro" target="_blank">Wealthy AI workers send San Francisco house prices soaring</a></div>
<div class="headline normal"><a href="https://www.jamesdrandall.com/posts/thrust_ai_powered_software_archaeology/" target="_blank">AI Can&#x27;t Recreate the Thrust Game (But It Can Help You Understand It)</a></div>
<div class="headline normal"><a href="https://www.windowscentral.com/microsoft/dropping-greenwashing-credits-and-expanding-ai-datacenters-caused-microsofts-25-percent-emissions-jump" target="_blank">Microsoft latest report shows 25% emissions raised due to AI data…</a></div>
<div class="headline normal"><a href="https://www.bbc.com/news/articles/c2dy6e8klw0o" target="_blank">Meta pulls new AI image feature after days of backlash</a></div>
<div class="headline normal"><a href="https://www.economist.com/business/2026/06/14/companies-are-scrambling-to-curtail-soaring-ai-costs" target="_blank">Companies are scrambling to curtail soaring AI costs</a></div>
<div class="headline normal"><a href="https://news.ycombinator.com/item/48859439" target="_blank">Ask HN: How do you use Vim in the era of AI?</a></div>
<div class="headline normal"><a href="https://openai.com/index/gpt-5-6/" target="_blank">GPT-5.6</a><div class="desc">OpenAI released GPT-5.6, their latest model iteration with significant capability improvements across reasoning, coding, and multimodal tasks.</div></div>
<div class="headline normal"><a href="https://ai-2040.com/" target="_blank">AI 2040: Plan A</a><div class="desc">AI Futures Project publishes &#x27;Plan A&#x27; — a scenario for delaying superintelligence until 2040 through international cooperation, total research transparency, and mutually assured compute destruction.</div></div>
<div class="headline normal"><a href="https://nevo-project.epfl.ch/" target="_blank">AI-generated videos to maximally drive a target brain region</a><div class="desc">EPFL researchers developed AI-generated videos designed to maximally activate a target brain region, using fMRI data to optimize visual stimuli.</div></div>
<div class="headline normal"><a href="https://openai.com/index/chatgpt-for-your-most-ambitious-work/" target="_blank">ChatGPT Work</a><div class="desc">OpenAI launched ChatGPT Work, an enterprise version of ChatGPT designed for professional workflows and organizational use.</div></div>
<div class="headline normal"><a href="https://www.pangram.com/blog/ai-in-your-feed" target="_blank">AI content is everywhere on social media, especially LinkedIn</a><div class="desc">Pangram study finds AI-generated content is pervasive across social media, with LinkedIn as the worst offender.</div></div>
<div class="headline normal"><a href="https://www.ello.com/blog/teaching-a-child-in-1000-ms" target="_blank">Building a real-time AI tutor for 5-year-olds</a><div class="desc">Ello blog post details building a real-time AI tutor optimized for 5-year-old learners with 1000ms latency.</div></div>
<div class="headline normal"><a href="https://www.anthropic.com/news/ben-bernanke" target="_blank">Ben Bernanke Joins Anthropic Oversight Trust</a></div>
<div class="headline normal"><a href="https://mitpress.mit.edu/9780262053198/simpolitics/" target="_blank">SimPolitics: Americas quest to solve politics with computers</a></div>
<div class="headline normal"><a href="https://news.ycombinator.com/item/48847834" target="_blank">Show HN: Reverse-engineering web apps into agent tools</a></div>
<div class="headline normal"><a href="https://entire.io/blog/how-version-control-will-evolve-for-the-agent-boom" target="_blank">How version control will evolve for the agent boom</a></div>
<div class="headline normal"><a href="https://www.fadingmaize.com" target="_blank">Show HN: Reviving my 2001 college band with AI</a></div>
<div class="headline normal"><a href="https://blog.mozilla.ai/the-control-layer-why-the-next-era-of-ai-is-about-infrastructure-not-just-models/" target="_blank">The next era of AI is about infrastructure, not just models</a></div>
<div class="headline normal"><a href="https://www.alecscollon.com/blog/llm-burnout/" target="_blank">I think I have LLM burnout</a><div class="desc">Developer reports chronic &#x27;LLM burnout&#x27; from hours of daily interaction with AI assistants, describing a shift from writing code to designing, prompting, and reviewing AI-generated code.</div></div>
<div class="headline normal"><a href="https://cognition.com/blog/swe-1-7" target="_blank">SWE-1.7 Reach Near GPT 5.5 and Opus Intelligence</a><div class="desc">Cognition launched SWE-1.7, reaching frontier-level intelligence (near GPT-5.5 and Opus) at much lower cost, trained from a Kimi K2.7 base with extensive RL post-training.</div></div>
<div class="headline normal"><a href="https://arstechnica.com/ai/2026/07/we-cannot-choose-to-become-idiots-the-ai-cheating-scandal-roiling-brown-university/" target="_blank">Suspecting AI cheating, Ivy League prof ordered in-person final; scores…</a><div class="desc">Brown University professor suspected AI cheating on take-home exams; in-person final scores dropped 50%.</div></div>
<div class="headline normal"><a href="https://www.tryai.dev/blog/grok-4.5-vs-gpt-5.5-vs-claude-build-off" target="_blank">We made Grok 4.5, GPT-5.5, and Claude build the same apps</a><div class="desc">Side-by-side comparison of Grok 4.5, GPT-5.5, and Claude building identical applications.</div></div>
<div class="headline normal"><a href="https://www.worksinprogress.news/p/ai-is-bottlenecked-by-the-grid" target="_blank">What&#x27;s slowing down the AI buildout</a></div>
<div class="headline normal"><a href="https://www.databricks.com/blog/benchmarking-coding-agents-databricks-multi-million-line-codebase" target="_blank">Benchmarking coding agents on Databricks&#x27; multi-million line codebase</a><div class="desc">Databricks benchmarks AI coding agents against their own multi-million-line production codebase.</div></div>
<div class="headline normal"><a href="https://thetruthasiseeitnow.com/ai-slop-starts-with-the-codebase-itself/" target="_blank">AI changes the economics of software rewrites</a></div>
<div class="headline normal"><a href="https://news.ycombinator.com/item/48834961" target="_blank">Ask HN: Another &quot;Hacker News&quot; with less AI and more human-focused…</a><div class="desc">Hacker News discussion seeking alternative tech news platforms with less AI content and more human hacking.</div></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu4hxp/i_didnt_give_up_extgemma440_5b_returned/" target="_blank">I didn&#x27;t give up - extGemma4-40_5B returned</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uudxi8/zer0fit_i_took_googles_new_tabfm_timesfm_ml/" target="_blank">Zer0Fit: I took Google&#x27;s new TabFM &amp; TimesFM ML foundation models and…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uturng/i_benched_quad_5060tis_for_code_generation_with/" target="_blank">I benched quad 5060Tis for code generation with Qwen3.6-27B so you…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1utvbey/performance_comparison_on_full_compute/" target="_blank">Performance comparison on full compute performance (Anima) and LLM…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08763v1" target="_blank">OpenCoF: Learning to Reason Through Video Generation</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uua3jd/voodoo_quant_beats_unsloth_dynamic_20_kld_by_95/" target="_blank">Voodoo Quant beats Unsloth Dynamic 2.0 KLD by 95% in Qwen3.5 0.8B and 2B</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uueuks/if_you_use_open_code_or_other_agenting_programs/" target="_blank">If you use Open Code or other agenting programs you are leaving a lot…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu61wb/i_mapped_anthropics_jspace_hallucination_signal/" target="_blank">I mapped Anthropics J-Space Hallucination signal across 7 datasets on…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu8g9f/need_help_tuning_cache_in_llamaserver/" target="_blank">Need help tuning cache in llama-server</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu5ht0/first_attempts_at_a_cpu_setup_ms02_intel_285hx/" target="_blank">First attempts at a CPU setup - MS-02 Intel 285hx, trying Qwen3…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/linkedin-is-the-undisputed-king-of-long-form-ai-slop-according-to-a-study-spanning-five-platforms/" target="_blank">LinkedIn is the undisputed king of long-form AI slop, according to a…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/claude-code-now-has-a-built-in-browser-that-lets-the-ai-read-click-and-type-on-external-websites/" target="_blank">Claude Code now has a built-in browser that lets the AI read, click…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08741v1" target="_blank">ARDY: Autoregressive Diffusion with Hybrid Representation for…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/sp-global-sees-openai-as-a-key-credit-risk-for-oracle-and-cuts-its-credit-rating/" target="_blank">S&amp;P Global sees OpenAI as a &quot;key credit risk&quot; for Oracle and cuts its…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/meta-kills-muse-image-feature-that-let-anyone-generate-ai-photos-of-instagram-users-without-consent/" target="_blank">Meta kills Muse Image feature that let anyone generate AI photos of…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/openai-ceo-altman-is-now-pretty-sure-ai-is-net-job-creating-which-is-quite-the-pivot-from-predicting-mass-layoffs/" target="_blank">OpenAI CEO Altman is now &quot;pretty sure&quot; AI is net job-creating, which is…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu32z6/interactive_jacobianlens_visualizer_and_live/" target="_blank">Interactive Jacobian-Lens visualizer and live steerer for GGUF models…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu6qvh/i_would_like_to_share_my_experience_working_with/" target="_blank">i would like to share my experience. working with huge LLMs and poor…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uue278/working_around_qwen3627bs_toolcall_failures_and/" target="_blank">Working around Qwen3.6-27B&#x27;s tool-call failures and looping</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uuhqlz/kreuzberg_local_document_extraction_is_being/" target="_blank">Kreuzberg (local document extraction) is being renamed to Xberg…</a></div>
<div class="headline normal"><a href="https://www.reddit.com/r/LocalLLaMA/comments/1uu3545/qwenthropic/" target="_blank">Qwenthropic</a></div>
<div class="headline normal"><a href="https://the-decoder.com/claude-coworks-biggest-use-case-is-the-mundane-office-work-nobody-wants-to-own-anthropic-says/" target="_blank">Claude Cowork&#x27;s biggest use case is the mundane office work nobody…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/ai-agents-win-at-slay-the-spire-2-after-researchers-replace-growing-chat-logs-with-structured-memory/" target="_blank">AI agents win at Slay the Spire 2 after researchers replace growing…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/grades-dropped-from-96-to-48-percent-when-a-brown-professor-made-students-take-the-exam-without-ai/" target="_blank">Grades dropped from 96 to 48 percent when a Brown professor made…</a></div>
<div class="headline normal"><a href="https://noma.security/blog/gitlost-how-we-tricked-githubs-ai-agent-into-leaking-private-repos/" target="_blank">GitLost: We Tricked GitHub&#x27;s AI Agent into Leaking Private Repos</a><div class="desc">Noma Labs discovered a prompt injection vulnerability in GitHub&#x27;s Agentic Workflows that lets attackers silently extract data from private repos via crafted public issues.</div></div>
<div class="headline normal"><a href="https://the-decoder.com/openais-gpt-5-6-sol-ultra-reportedly-solves-a-50-year-old-math-problem-in-under-an-hour/" target="_blank">OpenAI&#x27;s GPT-5.6 Sol Ultra reportedly solves a 50-year-old math problem…</a></div>
<div class="headline normal"><a href="https://techcrunch.com/2026/07/11/openai-bets-on-families-as-chatgpt-goes-deeper-into-households/" target="_blank">OpenAI bets on families as ChatGPT goes deeper into households</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08768v1" target="_blank">UniClawBench: A Universal Benchmark for Proactive Agents on Real-World…</a></div>
<div class="headline normal"><a href="https://the-decoder.com/terrorist-groups-are-using-every-major-ai-chatbot-for-attack-planning-and-weapons-development/" target="_blank">Terrorist groups are using every major AI chatbot for attack planning…</a></div>
<div class="headline normal"><a href="https://odra.dev/slopfix/" target="_blank">We charge $10k a week to delete AI-generated code</a><div class="desc">Slopfix charges $10,000/week to refactor AI-generated codebases that have become unmaintainable — analyzing for free, then cutting code bloat with a committed reduction target.</div></div>
<div class="headline normal"><a href="https://twitter.com/OpenAI/status/2074704958419792299" target="_blank">GPT-5.6 Sol, along with Terra and Luna, will launch publicly this…</a><div class="desc">OpenAI announces public launch of GPT-5.6 Sol alongside Terra and Luna, possibly satirical naming.</div></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08754v1" target="_blank">SLORR: Simple and Efficient In-Training Low-Rank Regularization</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08716v1" target="_blank">Remember When It Matters: Proactive Memory Agent for Long-Horizon Agents</a></div>
<div class="headline normal"><a href="https://replicated.live/blog/away" target="_blank">Automating AI Away</a></div>
<div class="headline normal"><a href="https://firesphere.dev/articles/yes-actually-i-do-fucking-mind" target="_blank">Re: I&#x27;m Begging You to Leave Your AI Note-Taker at Home</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08745v1" target="_blank">AUTOPILOT VQA: Benchmarking Vision-Language Models for Incident-Centric…</a></div>
<div class="headline normal"><a href="https://blog.zksecurity.xyz/posts/circl-bugs/" target="_blank">AI Meets Cryptography 1: What AI Found in Cloudflare&#x27;s Circl</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08724v1" target="_blank">Latent Memory Palace: Reasoning for Control as Autoregressive…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08740v1" target="_blank">Workflow as Knowledge: Semantic Persistence for LLM-Mediated Workflows</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08734v1" target="_blank">The Illusion of Equivalency: Statistical Characterization of…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08711v1" target="_blank">LTM: Large-scale Terrain Model for Wildfire-prone Landscapes</a></div>
<div class="headline normal"><a href="https://www.fastcompany.com/91520702/y-combinator-garry-tan-agentic-ai-social-media" target="_blank">YC CEO says he ships 37K LoC AI code per day. A developer looked under…</a><div class="desc">Developer investigates YC CEO&#x27;s claim of shipping 37K lines of AI-generated code daily and looks under the hood.</div></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08758v1" target="_blank">Ideas Have Genomes: Benchmarking Scientific Lineage Reasoning and…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08733v1" target="_blank">Super Weights in LLMs and the Failure of Selective Training</a></div>
<div class="headline normal"><a href="https://www.reuters.com/world/beijing-is-looking-curbing-overseas-access-chinas-top-ai-models-sources-say-2026-07-07/" target="_blank">Beijing is looking at curbing overseas access to China&#x27;s top AI models</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08731v1" target="_blank">Validity of LLMs as data annotators: AMALIA on authority</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08725v1" target="_blank">Pose-to-Biomechanics: Bridging 3D Human Pose Estimation and…</a></div>
<div class="headline normal"><a href="https://thebeach.dev/posts/lisp-agent/" target="_blank">An agent in 100 lines of Lisp</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08717v1" target="_blank">Deep Learning for Joint Narrowband Interference Cancellation and Soft…</a></div>
<div class="headline normal"><a href="https://huggingface.co/zai-org/GLM-5.2" target="_blank">GLM-5.2 (text-generation) by zai-org</a><div class="desc">GLM-5.2 by zai-org is a multilingual text-generation model with MoE-DSA architecture supporting English, Chinese, and Arabic.</div></div>
<div class="headline normal"><a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro" target="_blank">DeepSeek-V4-Pro (text-generation) by deepseek-ai</a><div class="desc">DeepSeek-V4-Pro by deepseek-ai is a conversational text-generation model with 8-bit/FP8 quantization support.</div></div>
<div class="headline normal"><a href="https://huggingface.co/deepseek-ai/DeepSeek-R1" target="_blank">DeepSeek-R1 (text-generation) by deepseek-ai</a><div class="desc">DeepSeek-R1 is a reasoning-focused text-generation model using the deepseek_v3 architecture with FP8 support.</div></div>
<div class="headline normal"><a href="https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct" target="_blank">Llama-3.1-8B-Instruct (text-generation) by meta-llama</a><div class="desc">Llama-3.1-8B-Instruct by Meta is an 8B-parameter instruction-tuned model supporting 8 languages.</div></div>
<div class="headline normal"><a href="https://huggingface.co/black-forest-labs/FLUX.1-dev" target="_blank">FLUX.1-dev (text-to-image) by black-forest-labs</a><div class="desc">FLUX.1-dev by Black Forest Labs is a text-to-image generation model compatible with the diffusers library.</div></div>
<div class="headline normal"><a href="https://huggingface.co/yuxinlu1/gemma-4-12B-coder-fable5-composer2.5-v1-GGUF" target="_blank">gemma-4-12B-coder-fable5-composer2.5-v1-GGUF (text-generation) by…</a><div class="desc">Gemma-4-12B-coder-fable5-composer2.5-v1-GGUF is a GGUF-quantized coding model fine-tuned from Google&#x27;s Gemma-4-12B.</div></div>
<div class="headline normal"><a href="https://huggingface.co/meta-llama/Meta-Llama-3-8B" target="_blank">Meta-Llama-3-8B (text-generation) by meta-llama</a><div class="desc">Meta-Llama-3-8B is Meta&#x27;s original 8B-parameter base language model from the Llama-3 family.</div></div>
<div class="headline normal"><a href="https://huggingface.co/meta-llama/Llama-2-7b-chat-hf" target="_blank">Llama-2-7b-chat-hf (text-generation) by meta-llama</a><div class="desc">Llama-2-7b-chat-hf is Meta&#x27;s 7B-parameter chat-tuned model from the Llama-2 generation.</div></div>
<div class="headline normal"><a href="https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct" target="_blank">Meta-Llama-3-8B-Instruct (text-generation) by meta-llama</a><div class="desc">Meta-Llama-3-8B-Instruct is Meta&#x27;s instruction-tuned 8B model from the Llama-3 family with Azure deployment support.</div></div>
<div class="headline normal"><a href="https://huggingface.co/bigscience/bloom" target="_blank">bloom (text-generation) by bigscience</a><div class="desc">BLOOM by BigScience is a 176B-parameter multilingual model supporting 46 languages across 13 families.</div></div>
<div class="headline normal"><a href="https://huggingface.co/openai/gpt-oss-120b" target="_blank">gpt-oss-120b (text-generation) by openai</a><div class="desc">gpt-oss-120b by OpenAI is a 120B-parameter open-source text-generation model with MXFP4 quantization.</div></div>
<div class="headline normal"><a href="https://huggingface.co/openai/gpt-oss-20b" target="_blank">gpt-oss-20b (text-generation) by openai</a><div class="desc">gpt-oss-20b by OpenAI is a 20B-parameter open-source text-generation model with MXFP4 quantization support.</div></div>
<div class="headline normal"><a href="https://huggingface.co/microsoft/phi-2" target="_blank">phi-2 (text-generation) by microsoft</a><div class="desc">Phi-2 by Microsoft is a compact 2.7B-parameter model trained on synthetic &#x27;textbook-quality&#x27; data.</div></div>
<div class="headline normal"><a href="https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" target="_blank">stable-diffusion-xl-base-1.0 (text-to-image) by stabilityai</a><div class="desc">Stable Diffusion XL 1.0 by Stability AI is a high-resolution text-to-image model with 140K+ downloads.</div></div>
<div class="headline normal"><a href="https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.2" target="_blank">Mistral-7B-Instruct-v0.2 (text-generation) by mistralai</a><div class="desc">Mistral-7B-Instruct-v0.2 by Mistral AI is a 7B-parameter instruction-tuned model with Apache-2.0 licensing.</div></div>
<div class="headline normal"><a href="https://huggingface.co/mistralai/Mistral-7B-v0.1" target="_blank">Mistral-7B-v0.1 (text-generation) by mistralai</a><div class="desc">Mistral-7B-v0.1 by Mistral AI is the original 7B-parameter pretrained base model from Mistral.</div></div>
<div class="headline normal"><a href="https://huggingface.co/deepseek-ai/DeepSeek-V3" target="_blank">DeepSeek-V3 (text-generation) by deepseek-ai</a><div class="desc">DeepSeek-V3 is a conversational text-generation model using the deepseek_v3 architecture with FP8 support.</div></div>
<div class="headline normal"><a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" target="_blank">stable-diffusion-v1-4 (text-to-image) by CompVis</a><div class="desc">Stable Diffusion v1.4 by CompVis is the original 410M-parameter text-to-image diffusion model.</div></div>
<div class="headline normal"><a href="https://huggingface.co/meta-llama/Llama-3.3-70B-Instruct" target="_blank">Llama-3.3-70B-Instruct (text-generation) by meta-llama</a><div class="desc">Llama-3.3-70B-Instruct by Meta is a 70B-parameter instruction-tuned model supporting 8 languages.</div></div>
<div class="headline normal"><a href="https://huggingface.co/google/gemma-7b" target="_blank">gemma-7b (text-generation) by google</a><div class="desc">Gemma-7B by Google is a 7B-parameter open-weight model with extensive research paper references.</div></div>
<hr>
<div style="margin-top: 30px; padding-top: 20px; border-top: 2px solid #eee;">
<h2 style="font-size: 16px; font-weight: bold; color: #666; text-transform: uppercase; letter-spacing: 1px; margin: 0 0 16px;">Research Papers (5 entries)</h2>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08703v1" target="_blank">MPFlow: Learning Budgeted Max-Flow Optimization on the Lightning…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08757v1" target="_blank">Score Accuracy Along the Forward Diffusion Does Not Certify Numerical…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08756v1" target="_blank">MulTTiPop: A Multitrack Transcription Dataset for Pop Music</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08748v1" target="_blank">Using AI-based Learning Assistants in Higher Education: A Large-Scale…</a></div>
<div class="headline normal"><a href="https://arxiv.org/abs/2607.08746v1" target="_blank">Dimensionality Reduction Meets Network Science: Sensemaking on UMAP&#x27;s…</a></div>
</div>
<footer>Updated 10:06 PM &middot; Headlines link to original reporting</footer>
<script src="/click_logger.js"></script>
</body>
</html>
+81
View File
@@ -0,0 +1,81 @@
#!/usr/bin/env python3
"""
Write batch summaries back to oracle.db.
Reads /tmp/athena_summarize_batch.json (array of entry dicts with 'summary' key added by sub-agent),
writes each summary JSON to entries.summary column.
Usage:
python3 write_summaries.py /tmp/athena_summarize_batch_result.json
"""
import json
import sqlite3
import sys
def main():
if len(sys.argv) < 2:
print("Usage: python3 write_summaries.py <result_json_file>", file=sys.stderr)
sys.exit(1)
result_path = sys.argv[1]
try:
with open(result_path) as f:
results = json.load(f)
except (FileNotFoundError, json.JSONDecodeError) as e:
print(f"Error reading {result_path}: {e}", file=sys.stderr)
sys.exit(1)
db_path = '/home/vpsadmin/oracle/oracle.db'
conn = sqlite3.connect(db_path)
cur = conn.cursor()
written = 0
skipped = 0
errors = 0
for item in results:
eid = item.get('id')
summary = item.get('summary')
if not eid or not summary:
skipped += 1
continue
# Validate summary has expected keys
if not all(k in summary for k in ('one_liner', 'key_technical_point', 'potential_use_case', 'confidence')):
print(f" ⚠ ID {eid}: missing required keys, skipping", file=sys.stderr)
skipped += 1
continue
# Quality gate: reject low-confidence or generic summaries
ol = summary.get('one_liner', '')
if len(ol) < 20:
print(f" ⚠ ID {eid}: one_liner too short ({len(ol)} chars), skipping", file=sys.stderr)
skipped += 1
continue
if any(generic in ol.lower() for generic in ('this article discusses', 'this paper presents', 'see full')):
print(f" ⚠ ID {eid}: generic one_liner, skipping", file=sys.stderr)
skipped += 1
continue
try:
cur.execute("UPDATE entries SET summary = ? WHERE id = ?",
(json.dumps(summary), eid))
written += 1
print(f" ✓ ID {eid}: {ol[:70]}...")
except Exception as e:
print(f" ✗ ID {eid}: {e}", file=sys.stderr)
errors += 1
conn.commit()
# Verify
cur.execute("SELECT COUNT(*) FROM entries WHERE summary IS NOT NULL")
total = cur.fetchone()[0]
conn.close()
print(f"\nResults: {written} written, {skipped} skipped, {errors} errors")
print(f"Total entries with summary: {total}")
return 0 if errors == 0 else 1
if __name__ == "__main__":
sys.exit(main())