Drop the editor's "Why it's here" line

After a rewrite of the prompt rule and a few more live issues the line still
read as a second abstract, so it goes entirely: the rule and the "why" key in
the editor's JSON, the parsing and 14-word cap, the Pick field, the
issue_articles and candidate_runs writes, the Brief prompt's per-pick why,
the explain output, the dashboard "editor" columns, and the rendering on the
web index, article and public pages, the Atom feed and both EPUB pages.

The "Matches: …" interests line stays (restyled in the next commit). The
issue_articles.why and candidate_runs.editor_why columns remain in the
schema unused; stored issue snapshots that still carry "why" deserialize
because Pick ignores unknown fields.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ESJbbzQ1b8fs5AA65tKw2q
This commit is contained in:
2026-09-15 00:59:13 +00:00
co-authored by Claude Fable 5.1
parent cd2bbe8840
commit 36424784af
30 changed files with 57 additions and 245 deletions
+1 -4
View File
@@ -472,7 +472,6 @@ pub struct HistoryRow {
pub utility: String,
pub rank: String,
pub cluster: String,
pub editor_why: Option<String>,
pub signals: SignalsView,
}
@@ -640,8 +639,7 @@ pub async fn assessments(
pub async fn run_history(db: &Db, article_id: ArticleId) -> Result<Vec<HistoryRow>, sqlx::Error> {
let rows = sqlx::query(
"SELECT cr.run_id, r.date, r.status, cr.stage, cr.excluded_reason, cr.admitted_by,
cr.signals_json, cr.utility, cr.rank_utility, cr.cluster_id, cr.cluster_rank,
cr.editor_why
cr.signals_json, cr.utility, cr.rank_utility, cr.cluster_id, cr.cluster_rank
FROM candidate_runs cr JOIN runs r ON r.id = cr.run_id
WHERE cr.article_id = ? ORDER BY cr.run_id DESC",
)
@@ -673,7 +671,6 @@ pub async fn run_history(db: &Db, article_id: ArticleId) -> Result<Vec<HistoryRo
(Some(id), None) => id.to_string(),
_ => "—".into(),
},
editor_why: row.get("editor_why"),
signals: SignalsView::from_json(&row.get::<String, _>("signals_json")),
}
})