Repository navigation
Check each line a listing page adds against the data - #521
Conversation
…s the desk A watch on a page that lists many events keeps one event per line, so its diff is already the list of finds. check-conference-update now hands those lines to desk_leads.py listing, which drops a line whose edition the data tracks (or, for a line without a year, whose series it tracks) and queues the rest as candidates with the flag listing. The worklist routes them like any other candidate: a missing edition of a tracked series to the new-year-checker, a new series to the scouter. Quoted names on a line, as on the PSF trademark list, are each matched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
|
Routine review 1. RequestNo issue is linked, so the PR description is the request. A 2. Checked against
3. Needs your decisionNone. 4. FindingsImportant: None. Nits:
5. Tests
Change (5832146), with the pinned commands from REVIEW.md: PR status checks on the head commit:
6. Bounds
Generated by Claude Code |
…f its own The changedetection watch on the trademark page now keeps one list item per line, so its diff goes through the listing check like the other listing pages. That retires the psf-trademarks source: the page API call, trademark_items and psf_records. With pycon.org the only registry left, the registry source that read both goes too, and desk-leads.yml runs pycon-org as its own step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
…ut a hostname CodeQL read the test's substring check on pycon.org as URL sanitisation. The tests now check the HTTP error and the summary line instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
What this does
Some changedetection watches look at a page that lists many events: PyData upcoming events, SciPy upcoming conferences, the PSF trademark list. When the watch filter keeps one event per line, the diff that changedetection sends is already a list of finds.
Before this change, such a
listing-changedispatch went to the desk queue as one signal for the whole page. The desk then had to read the diff and decide line by line.Now
check-conference-update.ymlsends the added lines toutils/desk_leads.py listing. For each line:candidatewith the flaglisting. The worklist routes it like other candidates: a missing edition of a tracked series goes to the new-year-checker, a new series goes to the scouter.A line with quoted names, as on the PSF trademark list, is matched by each quoted name.
The PSF trademark list moves to this path
The watch on the PSF PyCon trademark page now keeps one list item per line, such as
"PyCon NP", "PyCon Nepal" in Nepal. Its diff goes through the same listing check, so thepsf-trademarkssource indesk_leads.pyis no longer needed. This PR removes:trademark_itemsandpsf_records;registrysource, which read the trademark list and pycon.org together.pycon-orgis now the only registry, and it runs as its own step indesk-leads.yml.A
registry-changedispatch that namespsf-trademarksis now refused. On the instance, the trademark watch now sendslisting-change.Files
utils/desk_leads.py:listing_names,listing_records, and thelistingsource with--linesand--url..github/workflows/check-conference-update.yml: the listing path writes the lines and the resolved page URL to$RUNNER_TEMP. Two new steps, which run only for a listing, set up Pixi and run the data check..claude/skills/scouter/SKILL.md: thelistingflag. A listing page is a lead, never the evidence.utils/desk_queue.py: the queue README row for the flag, and theregistryvalues..github/workflows/desk-leads.yml:pycon-orgas its own step;psf-trademarksandregistryremoved.tests/test_desk_leads.pyandtests/test_check_conference_update.py.Watch set-up
A listing watch must keep one event per line. A watch that gives two lines per event (name, then place and dates) makes the second line a false new series. The filter on each listing watch is set on the instance, not in this repository.
Checks
pre-commit runon the changed files: clean.https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
Generated by Claude Code