Repository navigation
fix(vendor): render both IANA citation spellings as :rfc: roles (#1664) - #1673
Conversation
|
Verdict: GOOD TO GO at Root cause: IANA's CSV export, not our code. IANA re-exported every registry CSV today in two waves, at 17:26–17:27Z and 17:52–17:53Z. Citations moved from Fix. For you to accept: the five Not in scope, and needs a workflow change: Vendor Update still bumps on a docstring-only regeneration ( |
|
Coverage: 89.46% (unit tier, Python 3.14,
Per-file detail: the |
|
Hold this one for a round. The unfixed bot pushed This PR does not touch those files, so it still merges cleanly, but the merge would keep b12's broken copies. A worker is rebasing onto The b12 Create Release run ships those 18 broken files, so you may want to reject it. |
IANA's CSV exports now spell a reference cell `[RFC 1072]; [RFC 6247]` where they wrote `[RFC1072][RFC6247]`. The crawlers matched only the old spelling, so Vendor Update's 1.5.0b10 and 1.5.0b11 bumps rewrote 73 const files and dropped 1147 of the 1432 `:rfc:` roles under pcapkit/const, leaving lists such as `[RFC 1072][; ][RFC 6247]`. - New `Vendor.split_references()` drops `;`/whitespace-only separator segments and spells `RFC 1072` as `RFC1072`; all 64 reference loops use it. - ESP cipher/integrity and TLS key label accept `[RFC 9395]`; FTP renders `[RFC 6384, Section 11]` as `:rfc:`6384#section-11``. - Regenerate the 73 files with `pcapkit-vendor`: 67 match c338013 byte for byte; AppType regains the roles 1.5.0b6 dropped from 670 lines when the port registry switched spelling first. New test_vendor_reference_formats_1664_unit.py feeds old and new cells through each crawler variant; 11 tests fail on origin/main, pass here.
Vendor Update's 1.5.0b12 bump (2025da5) ran the unfixed crawlers over the 18 hip/mh registries this PR had not yet regenerated, leaving their references as `[RFC 7401][; ][RFC 6247]` with no `:rfc:` roles. - Regenerate those 18 files with the fixed crawlers (`python -m pcapkit.vendor hip.cipher ... mh.traffic_selector`, then `isort -l100 -ppcapkit`) from IANA's live CSVs: all 18 match 2575804, b12's parent, byte for byte, restoring 243 roles. tests/vendor (129 passed) and tests/const (330 passed) pass.
9303de8 to
bd52632
Compare
|
Verdict: GOOD TO GO at The new commit regenerates the 18 hip/mh files b12 broke, using the fixed crawler. All 18 are now byte-identical to The reviewer then ran its own regeneration at about 20:08Z, after a third IANA export at 19:53Z that uses the same spelling. All 91 const files this PR changes came out byte-identical to the branch.
The version files equal Once this merges, the next Vendor Update should find nothing to change, so it bumps nothing. |
Please follow the guide below
You will be asked some questions, please read them carefully and answer honestly
Put an
xinto all the boxes [ ] relevant to your pull request (like that [x])Use Preview tab to see how your pull request will actually look like
Searched for similar pull requests
Followed the coding style (
make pylint,make mypy,make isort): nothing new on the changed crawlers, andtest_isort_cleanpassesmake testpasses, and a test case covers the change: a new test covers it, but onlytests/vendor,tests/const,test_isort_cleanandtest_docstring_contractwere runAdded a changelog entry under
docs/source/changelog/and regeneratedCHANGELOG.md, if the change is user-visible: N/A — centralised in docs(changelog): shared 1.5.0 changelog — long-lived, merges last (#610, #616, #617, #618, #620) #657What is the purpose of your pull request?
Tick the commit type your subject line carries.
fix— corrects a defectfeat— adds a featureperf— changes performance, not behaviourrefactor— changes neither behaviour nor performancetest— tests onlydocs— documentation onlyci— workflows or build toolingrelease— bumps the version or rolls up a distributionchore— anything elseDescription of your pull request and other information
Root cause: IANA, not our code. IANA re-exported its CSVs on 2026-10-13 (
Last-Modified17:26–17:27Z, then 17:52–17:54Z). The XML records behind them still read<xref type="rfc" data="rfc1072"/>. TCP option kind 6, Wayback 2025-11-21 against live:The crawlers recognised only
RFCwritten against its number, and they kept;as a citation. Each run fixed a different set of files: the second wave was exported after run 1 (17:47Z), and Cloudflare (s-maxage=1800) can serve a copy up to 30 minutes old (that part is inferred). The 1.5.0b12 bump (2025da5) then broke the last 18 HIP/MH files, and the second commit regenerates them with the fixed crawlers, matching b12's parent 2575804 byte for byte. The port registry switched spelling first, and on 2026-09-29 the 1.5.0b6 bump (59dc8c0) dropped the roles from 670 AppType lines.Fix. The new
Vendor.split_references()drops;/whitespace separator segments and writesRFC 1072asRFC1072. All 64 reference loops now call it. The ESP and TLS key label regexes accept both spellings, and FTP renders[RFC 6384, Section 11]as:rfc:`6384#section-11`.Regeneration (
pcapkit-vendorthen isort, ascron-vendor.ymlruns them): 67 of the 73 files matchc3380134dbyte for byte. AppType ×5 regains its pre-b6 roles. Two rows change because the exporter changed, not the data: robustirc's description now reads([RFC 1459]), and FTPALGSwas formerly[RFC6384] Section 11. Every const file's AST, docstrings stripped, equalsc3380134d's, and once roles are ignored those two rows are the only text that differs. So no registry content changed.Bump guard (not here; workflows are out of scope).
cron-vendor.ymlbumps wheneververify-changed-filesfinds any change, so a comment-only regeneration still bumps. Comparing each changed const file's AST, with docstrings stripped, againstHEADclassifies b9, b10 and b11 as comment-only and still bumps on b8's member rename. b9 was a real draft-to-RFC 10049 update, so whether comment-only changes get committed without a bump, or not at all, is for the owner to decide.Tests. The new
test_vendor_reference_formats_1664_unit.pyruns old and new cells through each crawler variant. Its 11 tests giveFAILED (failures=8, errors=6)onorigin/mainandOKhere. The PR also fixestest_vendor_ipv6_extension_header_925_unit's byte-for-byte test, which currently fails onorigin/main.Closes #1664