Skip to content

feat(interests): a second overnight tier for non-lensing papers - #66

Merged
Jammy2211 merged 2 commits into
mainfrom
claude/interest-papers-recommendations-tyc9cs
Aug 27, 2026
Merged

Jammy2211 merged 2 commits into
mainfrom
claude/interest-papers-recommendations-tyc9cs

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

The arXiv inbox is strong lensing only. This adds its sibling, arxiv-interests.md: the day's ten most relevant papers that are not strong lensing — black holes, dark matter, galaxy formation, statistics — rendered under the inbox on the dashboard with the same five per-paper actions (📄 PDF, ➕ queue, 📥 intake, 📑 cite, ✖️ dismiss).

Paired with PyAutoMind's arxiv_interests.yml, which writes the papers. This side renders and acts on them; that side fills them in. Neither blocks the other — merged alone, this just shows an empty list saying no digest has run yet.

The one thing that differs from the inbox

It is a day-batched backlog, not a seven-day timer, and that is the point of it. Each nightly run appends one dated batch, the board shows the oldest un-cleared batch only, and one 🧹 clear button drops that whole day and reveals the next. So a fortnight away is a fortnight of batches to cycle through, one tap each, rather than a fortnight of lapsed recommendations.

Everything else is the inbox's contract, reused rather than restated: interests_actions.py imports inbox_actions for the line grammar, the identity/dedup rule, the freshness stamp and add_to_queue.

Topic routing

Every inbox paper routes to one reading-queue section; these span domains, so each line carries a [Topic] naming the section ➕ files it into (SMBHs, Dark Matter, Galaxy Formation / Evolution, Stats). A topic naming no real section falls back to the new ## Interests section rather than stranding the paper — the topic is a nightly prompt's guess, and a guess that misses must not cost a paper.

Changes

  • scripts/interests_actions.py (new) — owns the format and the transitions: append / stamp / clear / add / dismiss. append dedupes against the interests list, the reading queue and arxiv-inbox.md, so a paper never lands on both lists, and caps a batch at 10 so a miscounting prompt cannot flood a day.
  • arxiv-interests.md (new) — the file and its documented format.
  • scripts/board.py — renders the tier between the inbox and the reading queue, with its own freshness stamp (one digest can break while the other keeps running, and the page must not report the healthy one's date for the broken one). _queue_issue_url is generalised over "suggestion tiers" rather than special-casing the inbox a second time.
  • reading-queue.md — the ## Interests fallback section.
  • .github/workflows/queue_actions.yml — interests-add / interests-dismiss / interests-clear; close-out comments name the tier the human actually tapped.
  • .github/workflows/queue_filing.yml — 📥/📑 learn the third file: value and the [Topic] prefix to strip.
  • .github/workflows/knowledge_board.yml — republish paths, plus the three new labels (a prefilled labels= silently drops a label the repo does not have, which makes a tapped button look like it worked and then do nothing).
  • scripts/validate_structure.py — root allowlist.

Testing

make validate clean; pytest tests/ 168 passed. 34 new tests in tests/test_interests_actions.py cover the batch grouping, the clear transition and its idempotence, the three-way dedup, the topic fallback, and the CLI; 13 new in tests/test_board.py cover the render order, the clear button's body, the per-tier stamps and the topic routing.

Three pre-existing board tests moved with the fixture (which now writes an interests file): the two inbox-freshness helpers blank the other tier so they still assert about the inbox alone, and the PDF-button count goes 4 → 6.

Also exercised end to end against a clone of the live repo — append/stamp/add/dismiss/clear, and the cross-list dedup correctly skipped a lensing paper already sitting in arxiv-inbox.md.


Generated by Claude Code

claude added 2 commits August 27, 2026 18:21
The arXiv inbox is strong lensing only. This adds its sibling,
`arxiv-interests.md`: the day's ten most relevant papers that are NOT
strong lensing — black holes, dark matter, galaxy formation, statistics —
rendered under the inbox on the dashboard with the same five per-paper
actions (📄 PDF, ➕ queue, 📥 intake, 📑 cite, ✖️ dismiss).

It differs from the inbox in one way, and it is the point of it: this is a
day-batched BACKLOG, not a seven-day timer. Each nightly run appends one
dated batch, the board shows the oldest un-cleared batch only, and one 🧹
clear button drops that whole day and reveals the next — so a fortnight
away is a fortnight of batches to cycle through rather than a fortnight of
lapsed recommendations.

Because these papers span domains where every inbox paper routes to "Strong
Lensing", each line carries a `[Topic]` naming the reading-queue section ➕
files it into; a topic naming no real section falls back to the new
`## Interests` section rather than stranding the paper.

- scripts/interests_actions.py owns the format and the transitions
  (append/stamp/clear/add/dismiss), importing inbox_actions rather than
  restating it.
- board.py renders the tier between the inbox and the reading queue, with
  its own freshness stamp: one digest can break while the other runs.
- queue_actions.yml gains interests-add / interests-dismiss /
  interests-clear; queue_filing.yml learns the third `file:` value.

The papers themselves are written by PyAutoMind's arxiv_interests.yml.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YTKUy8F2CevLpEgSz7xbnJ
A link inside a <summary> navigates away, so whether the section also
toggles on the way out is not observable — unlike the 📋 buttons beside
it, which is what the handler was there for. Say that instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YTKUy8F2CevLpEgSz7xbnJ
@Jammy2211
Jammy2211 merged commit 52c9f68 into main Aug 27, 2026
1 check passed
@Jammy2211
Jammy2211 deleted the claude/interest-papers-recommendations-tyc9cs branch August 27, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants