Repository navigation
Deadline conflicts by CfP platform, block-based PR body, changedetection routing - #520
Merged
Merged
Conversation
A pretalx or Sessionize CfP page the conference itself points to (its cfp_link, or a link from its own domain) now wins for cfp, cfp_ext and timezone, and the critic accepts such a change instead of sending it to the maintainer. The rule covers deadlines only, and an unanchored platform page stays a lead, so a look-alike event on a CfP platform cannot use it. When the new zone differs from the zone the existing cfp was stated in, cfp is re-expressed at the same instant with utils/convert_deadline.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
The body now leads with what needs the maintainer, then what was committed, with the evidence left in the commit bodies the Committed lines link. desk_pr_body.py reads and writes one block at a time and renders the whole layout again, so the desk, the canonical import and the TBA enrichment keep each other's blocks and the maintainer's ticked boxes. A body from before the layout is kept whole in a folded block. The two Actions writers drop their JavaScript string edits, name the editions each commit changed, and add no line for a commit that changed none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
Signals now carry the URL the watch fetched: the queue builder fills in the watch's year template instead of trusting the notification. The sync no longer matches new URLs by domain on hosts that carry many series, so a second PyData or Linux Foundation event gets its own watch, and it stops printing the start of the Cloudflare Access secret. archive-new-urls drops an input that no longer did anything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
for more information, see https://pre-commit.ci
Owner
Author
|
Routine review 1. RequestNo linked issue, so the PR body is the request. It asks for three things:
2. Checked against
3. Needs your decision
4. FindingsImportant: None. Nits
5. Tests
6. Bounds
Generated by Claude Code |
A changedetection watch on a page that lists many events (PyData and SciPy upcoming, barcamps.eu, fwdays) now sends listing-change, which queues a registry item for the scouter with the diff as the finds. The PSF PyCon trademark list is read in full whenever its watch sends registry-change, instead of weekly; pycon.org stays on the weekly run. desk_leads.py gains psf-trademarks and pycon-org as sources of their own, and registry still reads both. The queue builder inside check-conference-update.yml gets tests that run it straight from the workflow file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
A link swapped for its Internet Archive copy is dead or on a domain someone else now owns, so its watch only reports that. The sync now pauses the watch that fetches it today (a year template is compared by the page it gives today, so a series watch that moved on to a later edition stays on), unless another entry still uses the URL live. It also stops adding watches on web.archive.org links, which never change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
registry-change now names its source (developers-events, psf-trademarks or pycon-org, checked against that list), and pretalx-change names one CfP page, for which desk_leads.py --url checks only the entries on that page. The schedule becomes the fallback for a change a watch missed: pretalx weekly instead of daily, the other three monthly instead of weekly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
for more information, see https://pre-commit.ci
A watch on a pretalx page sends its URL with the year template unresolved, and the template has spaces, so refusing all whitespace refused every templated watch. Only a line break could add step outputs, so only that is refused now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
for more information, see https://pre-commit.ci
… closes The sync set a watch's year-template offset to the conference's start month, which rolled some series over months before their conference and others months after it. The rollover is now 14 days after the effective CfP deadline, when the deadline can no longer move, and at the latest the start, so the watch still sees some of the site's updates; with no deadline it is the start. The template changes at the first month start on or after that day. utils/watch_templates.py holds the rule and its tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
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.
Three fixes to the conference-data automation: deadline conflicts no longer wait on the maintainer, the rolling PR body says what needs attention instead of repeating evidence, and changedetection signals carry the right URL.
Why
2026, so a watch on a 2027 page sent the desk the 2026 URL. The sync skipped any new URL on a domain it already watched, so on pydata.org or events.linuxfoundation.org only the first series ever got a watch. It also printed the first characters of the Cloudflare Access secret to the public Actions log.What changes
cfp,cfp_extandtimezoneonly. Anchored means it is the edition's existingcfp_link, or the conference's own domain links to it. Acfp_linkthe same change sets doesn't count. When the new zone differs from the zone the existingcfpwas stated in,cfpis re-expressed at the same instant byutils/convert_deadline.py, never by hand.utils/desk_pr_body.pynow manages blocks. Each writer owns marker-delimited blocks under "Needs you" and "Committed"; a write replaces or extends one block and renders the layout again, keeping everyone else's blocks and ticked boxes. The first write moves an old-format body whole into a folded block.desk.mddescribes the desk's four blocks. The canonical and enrichment workflows call the script instead of editing the body in JavaScript, name the editions each commit changed, and skip commits that changed none.resolve_watch_url). The sync matches only by path on hosts that carry many series. The secret-prefix logging goes, and so does a dead input inarchive-new-urls.yml.listing-change, which queues aregistryitem, and the worklist always gives that kind to the scouter, with the diff's new names and links as the finds. The PSF PyCon trademark list is read in full whenever its watch sendsregistry-change, instead of weekly.desk_leads.pygainspsf-trademarksandpycon-orgas their own sources, and pycon.org stays weekly. The queue builder insidecheck-conference-update.ymlgets tests that run it straight from the workflow file.registry-changenames its source (developers-events,psf-trademarksorpycon-org, checked against that list). Watches on the Python rows of developers.events'TAGS.csv, on the trademark page and on the pycon.org registry's latest commit send it.pretalx-changenames one CfP page, anddesk_leads.py --urlchecks only the entries on that page. pretalx moves from daily to weekly, and the other three from weekly to monthly.web.archive.orglinks, which never change.After merging
watch_url|regex_replace('{%.*?%}', '2026')to plainwatch_url, so the year template reaches the queue builder unresolved. Until then, signals keep the hard-coded year.The changedetection side is already set up. The
conference-helpertag sendslisting-change. ARegistrytag on the trademark, pycon.org andTAGS.csvwatches sendsregistry-change, with the source taken from the watch title. Apretalxtag on the 20 pretalx.com watches sendspretalx-change. Until this merges, those dispatches find no listener and the current schedule still runs, so nothing is lost.Rollover of year-templated watches
The sync used to set a watch's year-template offset to the conference's start month. That flipped some conferences to next year months before they ran and others months after. A watch now moves on 14 days after the effective CfP deadline (a deadline can still move in those two weeks), and at the latest when the conference starts; without a deadline, at the start. The template changes at the first month start on or after that day.
utils/watch_templates.pyholds the rule. The existing 79 templated watches on the instance were set the same way, and 16 of them now fetch a different edition's page than before.Checks
pytest tests/(pinneduvline from REVIEW.md): 2557 passed, 5 skipped, 3 xfailed, 2 xpassed.ruff@0.4.4 check utils testsandblack --check: clean.desk_pr_body.py --printagainst the live 🐍 Conference updates #519 body: renders, round-trips throughparse, and keeps the old body intact.commit-lineon real commits: f5db91a gives "PyCon Togo 2026 (cfp_link, coc, finaid, timezone)". 873c697 and 08b0acf (re-quote and file moves only) give no line.https://claude.ai/code/session_016a2XGjzRsX9nEb4swsKYms
Generated by Claude Code