Profile v2: split conflict from statecraft, add space, expand vetoes

Second elicitation round. The significant correction is Connor's own framing:
"my actual war interest is low, but unfortunately all wars are important." The
click history looked war-heavy only because world-news feeds are war-heavy, so
geopolitics-at-weight-1.0 was reading the corpus, not the reader. Statecraft is
now its own block and armed conflict is five weighted bands (anti-imperial,
US-involved, Mideast/Israel, undercovered, general) routed mainly by importance.

New: space-aerospace at 0.95, the highest-weighted block -- Connor is an
aerospace engineer. Plus science-discovery, environment-ecology,
ohio-state-politics, left-movements, anticolonial-sovereignty, far-right-watch,
political-theory. Linux/ricing/neovim folded into software-systems.

Introduces `demote` blocks, distinct from hard vetoes, for categories adjacent to
real interests: crypto/AI hype sits next to AI regulation, culture-war outrage
next to far-right-watch, true crime next to criminal-justice policy. Hard-vetoing
those would take real stories with them -- the lesson from the Europa League
story that both a substring blocklist and a cosine threshold wrongly killed.

Sources 39 -> 56, all fetched and verified: space (SpaceNews, Spaceflight Now,
NASASpaceflight, NASA, ESA, Phys.org), Linux (Phoronix, LWN, It's FOSS,
r/unixporn), left/anticolonial (Intercept, Drop Site, Tribune, African
Arguments). Rejected on inspection: nature.rss is journal metadata ("Author
Correction: ...") and sciencedaily is a press-release mill.

Embedding stays English-only, measured rather than assumed: the same story in
Spanish and English scored 0.758 and 0.600 cosine against a random-pair p99 of
0.634, so one pair was indistinguishable from an unrelated article. Italy and
Mexico are covered by English-language sources instead.

Also fixes clustering performance: centroids are held in memory across a batch
instead of one SELECT plus a numpy rebuild per item, which had taken ~15 minutes
for 1,258 items.
This commit is contained in:
connor committed 2026-09-08 15:25:56 -04:00
1 parent 64690ecfe0
commit 6dc3694260
4 files changed
+572 -193

No files matched your search

+125
View File
@@ -6,6 +6,10 @@
# confirmations. Getting this wrong is what made the old system fire priority-5
# pushes on anything two feeds happened to carry.
#
# `weight` is editorial trust, carried over from Connor's old config where he
# had deliberately set Al Jazeera highest (1.2) and NYT lowest (0.8). It affects
# importance and tie-breaking, never whether an item is visible at all.
#
# `prominence = 1` marks a publisher's front-page/top-stories feed. Subscribing
# to both it and the section feed is a free editorial-promotion signal; the old
# config dropped BBC's top-news feed and threw that away.
@@ -42,6 +46,7 @@ bucket = "guardian"
name = "NYT World"
url = "https://rss.nytimes.com/services/xml/rss/nyt/World.xml"
bucket = "nyt"
weight = 0.8
[[source]]
name = "NPR News"
@@ -75,11 +80,13 @@ poll_interval_secs = 1800
# --------------------------------------------------------------- mideast ----
[[source]]
name = "Middle East Eye"
weight = 1.1
url = "https://www.middleeasteye.net/rss"
bucket = "middle-east-eye"
[[source]]
name = "+972 Magazine"
weight = 1.1
url = "https://www.972mag.com/feed/"
bucket = "972mag"
poll_interval_secs = 3600
@@ -266,3 +273,121 @@ name = "Mexico News Daily"
url = "https://mexiconewsdaily.com/feed/"
bucket = "mexico-news-daily"
poll_interval_secs = 3600
# ============================================================ space / aerospace
# Connor is an aerospace engineer and asked for launches and missions, deep
# technical coverage, and astronomy/planetary science. All verified 2026-09-08.
[[source]]
name = "SpaceNews"
url = "https://spacenews.com/feed/"
bucket = "spacenews"
poll_interval_secs = 3600
[[source]]
name = "Spaceflight Now"
url = "https://spaceflightnow.com/feed/"
bucket = "spaceflight-now"
poll_interval_secs = 3600
[[source]]
name = "NASASpaceflight"
url = "https://www.nasaspaceflight.com/feed/"
bucket = "nasaspaceflight"
poll_interval_secs = 3600
[[source]]
name = "NASA Breaking"
url = "https://www.nasa.gov/rss/dyn/breaking_news.rss"
bucket = "nasa"
poll_interval_secs = 3600
[[source]]
name = "ESA"
url = "https://www.esa.int/rssfeed/Our_Activities/Space_News"
bucket = "esa"
poll_interval_secs = 7200
[[source]]
name = "Ars Technica Science"
url = "https://feeds.arstechnica.com/arstechnica/science"
bucket = "ars-technica"
poll_interval_secs = 3600
[[source]]
name = "Phys.org Space"
url = "https://phys.org/rss-feed/space-news/"
bucket = "phys-org"
poll_interval_secs = 7200
# Deliberately NOT added: nature.rss (mostly "Author Correction:" journal
# metadata, not news) and sciencedaily.com (a university press-release mill,
# 60 items a poll). Both were probed and rejected on the content they returned.
[[source]]
name = "Quanta Magazine"
url = "https://www.quantamagazine.org/feed/"
bucket = "quanta"
poll_interval_secs = 21600
# ================================================================ linux / ricing
# Connor: "Linux news in general. The ricing world/neovim configs/etc"
[[source]]
name = "Phoronix"
url = "https://www.phoronix.com/rss.php"
bucket = "phoronix"
poll_interval_secs = 3600
[[source]]
name = "LWN"
url = "https://lwn.net/headlines/newrss"
bucket = "lwn"
poll_interval_secs = 7200
[[source]]
name = "It's FOSS"
url = "https://news.itsfoss.com/rss/"
bucket = "its-foss"
poll_interval_secs = 7200
[[source]]
name = "r/unixporn"
url = "https://www.reddit.com/r/unixporn/top/.rss"
bucket = "reddit"
poll_interval_secs = 10800
[[source]]
name = "Neovim releases"
url = "https://github.com/neovim/neovim/releases.atom"
bucket = "github-releases"
poll_interval_secs = 21600
# ==================================================== left / anti-colonial =====
[[source]]
name = "African Arguments"
weight = 1.1
url = "https://africanarguments.org/feed/"
bucket = "african-arguments"
poll_interval_secs = 21600
[[source]]
name = "Tribune"
weight = 1.1
url = "https://tribunemag.co.uk/feed"
bucket = "tribune"
poll_interval_secs = 21600
[[source]]
name = "The Intercept"
weight = 1.1
url = "https://theintercept.com/feed/?rss"
bucket = "the-intercept"
poll_interval_secs = 7200
[[source]]
name = "Drop Site News"
weight = 1.1
url = "https://www.dropsitenews.com/feed"
bucket = "drop-site"
poll_interval_secs = 7200