Summer 2027 rollover (#9633)* Archive the Summer 2026 season and close the 2025 archiveAdd archived/README-2026.md: 9,271 Summer 2026 roles, every one closed.Built from the rendered READMEs at 3c16fd5d8 as a pure text transform, withno reads or writes to listings.json. Rows posted within a month of thesnapshot are excluded, since a "Summer 2026" role posted in mid-2026 isalmost certainly a mislabeled Summer 2027 posting.Retro-lock archived/README-2025.md. It had leaked 121 live apply buttonsbecause it was copied verbatim on rollover day while 121 Summer 2025 roleswere still open, unlike the 2023 and 2024 archives which contain none.Only the Application column changes; row count and ordering are untouched,and the file drops from 488 KB to 448 KB, back under GitHub's render limit.Every archive now carries zero live apply links.Co-Authored-By: Claude * Roll listing generation to Summer 2027Point the summer filter at Summer 2027 with a 2026-05-01 cutoff, and updaterepo-name strings and section anchors to Summer2027-Internships ahead of therepository rename.Rework filter_off_season. Flipping the summer year alone would have orphaned524 Fall 2026 listings: the filter rejected any listing carrying a Summerterm, while the main README accepted only Summer 2027, so roles tagged["Summer 2026", "Fall 2026"] became visible in neither list. Fall 2026 isstill the upcoming autumn even though the summer cycle has moved on. Thefilter now takes: - exclude_ids, so a listing is skipped only when the main README actually displays it, rather than guessing from term strings - its own much earlier earliest_date of 2025-12-01, because Fall roles for the coming autumn appear the previous December; reusing the summer's May cutoff would have dropped 58% of Fall 2026 and ~75% of Winter and Spring 2027 - min_year, dropping off-season terms two or more years stale. Terms one year behind are deliberately kept: employers disagree on whether the Jan-May term of academic year 2026-27 is "Spring 2026" or "Spring 2027", so those labels are ambiguous rather than wrong.Fix a latent bug in check_and_insert_warning. It split the table at a byteoffset without checking what followed, so it could reopen a table on a "↳"continuation row, which renders with no company name at all. It now onlysplits where the next row starts a company group.Narrow the issue-template terms to Summer 2027, Fall 2026, Winter 2027 andSpring 2027, which previously offered no 2027 options at all. Fall 2027 isleft out as premature. Summer 2026 stays in the edit template only, sinceterms is required there and many Fall 2026 roles also carry that tag.Co-Authored-By: Claude * Regenerate READMEs for Summer 2027Retitle the three live READMEs to Summer 2027 and repoint their cross-links,then regenerate their tables from listings.json.README.md and README-Inactive.md now carry Summer 2027 roles; the 9,675Summer 2026 closed listings they held are preserved inarchived/README-2026.md. README-Off-Season.md covers Fall 2026, Winter 2027and Spring 2027, and drops 40 listings whose off-season terms are all two ormore years stale, including duplicate rows tagged for 2016 and 2017.Also fixes two stale links that predate this change: README-Inactive.mdpointed at an "Off-Season 2025 README", and both footers requested thecontributor image for pittcsc/Summer2025-Internships while the link besideit said 2026.Co-Authored-By: Claude ---------Co-authored-by: Claude