fix(arxiv): over-pick the interests batch, and widen the band it picks from - #359
Merged
Merged
Conversation
…s from Both follow-ups from the first live run of arxiv_interests.yml (run 33105368017), which measured what the design had only assumed. 1. THE DEDUP COST A SLOT. Claude picked 10; 2608.26039 was already on the strong-lensing inbox from the morning digest, so interests_actions.py append correctly skipped it and the day filed nine. The dedup is right and stays. The fix is slack: PICK_COUNT is now BATCH_SIZE + OVERPICK (13), the prompt returns them ranked, and append trims to its own cap in order after deduping. A day with no overlap still files ten; a day with two now files ten instead of eight. The cap is deliberately NOT restated on this side — interests_actions.py owns it, and duplicating the number across two repos is how they drift. 2. THE RANKER HAD NOTHING TO RANK. band_count=61, scored_count=52, truncated=false: the four astro-ph categories announce ~60 papers a day, not the several hundred CANDIDATE_CAP=60 was sized for. The cap never bound and the keyword net dropped 9 of 61, so the shortlist stage was decoration. Rather than retire it, spend the headroom on coverage: gr-qc (black-hole theory, GW, PBHs — a real gap, none of it reaches astro-ph), astro-ph.SR, and stat.ME/stat.ML for the Stats bucket. Eight categories, a few hundred papers a day, and the cap binds again. Widening alone would have made the list worse, which is what HOME_BONUS is for. In stat.ME/stat.ML "Bayesian", "posterior" and "inference" are the house vocabulary, so every paper there scores on the Stats terms — a clinical-trials method would out-score a lens-modelling paper on keywords alone and crowd it off the shortlist. A paper whose primary category is astro-ph.* or gr-qc now starts +4 ahead. It is a tie-breaker among papers that ALREADY matched, never a way in for one that matched nothing, and never a filter: a strong stats paper still makes the list and Claude still judges what survives. keyword_score and home ride in the candidates JSON so the prompt can see the thumb on the scale. The filed prompt for (2) said not to decide on one day's data and to collect a week including a Monday band first. That caution was mine and the human overruled it deliberately; recording it because the widening is the reversible half — if the band turns out unmanageable, CATEGORIES is one tuple. Six new selftest checks: the home/borrowed split, the tie-break, that the bonus cannot admit an off-topic paper, that keyword_score is reported beside the boosted score, and that the over-pick arithmetic holds. selftest PASS, 257 tests green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YTKUy8F2CevLpEgSz7xbnJ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both follow-ups from the first live run of
arxiv_interests.yml(run 33105368017), which measured what the design had only assumed. Closes the two prompts filed for them:draft/bug/pyautomind/over_pick_the_interests_batch_so_the.mddraft/research/pyautomind/decide_whether_the_interests_ranker_still_earns.md1. The dedup cost a slot
Claude picked 10;
2608.26039("Accretion Disk Sizes … in Lensed Quasars") was already on the strong-lensing inbox from the morning digest, sointerests_actions.py appendcorrectly skipped it and the day filed nine. The paper genuinely belongs to the lensing list — the dedup is right and stays.The fix is slack.
PICK_COUNTis nowBATCH_SIZE + OVERPICK(13), the prompt returns them ranked, andappendtrims to its own cap in order after deduping. A day with no overlap still files ten; a day with two overlaps now files ten instead of eight.The cap is deliberately not restated on this side —
interests_actions.pyowns it (itsBATCH_SIZE, the default ofappend --limit). Duplicating that number across two repos is how they drift, so the workflow passes no--limitand says why.2. The ranker had nothing to rank
band_count=61, scored_count=52, truncated=false. The four astro-ph categories announce ~60 papers a day, not the several hundredCANDIDATE_CAP = 60was sized for. The cap never bound and the keyword net dropped 9 of 61 — the shortlist stage was decoration, and the paging was guarding a volume that doesn't exist.Rather than retire the stage, spend the headroom on coverage:
gr-qcastro-ph.SRstat.ME,stat.MLEight categories, a few hundred papers a day, and the cap binds again.
Widening alone would have made the list worse
In
stat.ME/stat.ML, "Bayesian", "posterior" and "inference" are the house vocabulary — every paper there scores on the Stats terms. A Bayesian method for clinical trials would out-score a lens-modelling paper on keywords alone and crowd it off a 60-paper shortlist.So
HOME_BONUS: a paper whose primary category isastro-ph.*orgr-qcstarts +4 ahead. Three properties, each pinned by a selftest check:keyword_scoreandhomeride in the candidates JSON, so the prompt can see the thumb on the scale rather than inferring it.One thing recorded rather than hidden
The filed prompt for (2) said explicitly not to decide on one day's data, and to collect a week including a Monday 3-day band first. That caution was mine, and it was overruled deliberately. Noting it because the widening is the reversible half: if the band turns out unmanageable,
CATEGORIESis one tuple.Testing
arxiv_interests.py --selftestandarxiv_fetch.py --selftestboth PASS;pytest tests/257 passed. Six new selftest checks: the home/borrowed split, the tie-break between equal-scoring astro and stats papers, that the bonus cannot admit an off-topic paper, that the borrowed paper is kept rather than filtered, thatkeyword_scoreis reported beside the boosted score, and that the over-pick arithmetic holds.Not verified live: arXiv is unreachable from this session's network policy, so the widened query is syntax-checked and the scoring is tested offline only. The next run's
announced=/scored=/shortlisted=line is the number to read — it should jump from ~61 into the low hundreds, andshortlistedshould now sit at the 60 cap rather than below it.Generated by Claude Code