Skip to content

chore(docs): centralise changelog entries for unreleased versions - #2483

Open
JarryShaw wants to merge 65 commits into
mainfrom
chore/2449-centralize-changelog
Open

JarryShaw wants to merge 65 commits into
mainfrom
chore/2449-centralize-changelog

Conversation

@JarryShaw

@JarryShaw JarryShaw commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

Please follow the guide below

  • Searched for similar pull requests
  • Followed the coding style
  • make test passes, and a test case covers the change (tests/project/test_pr_template_commit_types_1102_unit.py and tests/project/test_python_versions_update_1660.py run)
  • Described the user-visible change below and left its changelog entry to the maintainer (N/A)

What is the purpose of your pull request?

  • chore — anything else

Description of your pull request and other information

Closes #2449

Feature PRs no longer add entries under docs/source/changelog/ or to CHANGELOG.md; the maintainer writes them centrally. CONTRIBUTING.md says so, and this PR also rewords the template's changelog box to match (not deferred). util/update_python_versions.py and its test follow the new box wording. No runtime code or release content changed.

@JarryShaw JarryShaw added chore Maintenance work: tooling, repo hygiene, no library behaviour change review: running A cross-review is in flight against the current head - no verdict yet labels Oct 31, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Oct 31, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

NEEDS CHANGES (Sonnet, 30953ed00). CONTRIBUTING.md change is correct and contained; no code, release content or counts changed.

  • .github/PULL_REQUEST_TEMPLATE.md still tells contributors to add an entry and regenerate CHANGELOG.md, and links to the section this PR rewrites. Reword it in this PR, with util/update_python_versions.py (~L1301) and tests/project/test_python_versions_update_1660.py (~L879), which pin the current wording.
  • If the template is instead deferred, the body must say so and Closes #2449 becomes Refs #2449.
  • Non-blocking: "Feature pull requests" (L61) is narrower than L28; "Open" (L61) is undefined; L28 is 125 columns.

@JarryShaw JarryShaw added review: needs-changes Cross-review at the current head says changes are required; see the verdict comment and removed review: running A cross-review is in flight against the current head - no verdict yet labels Oct 31, 2026
@JarryShaw
JarryShaw force-pushed the chore/2449-centralize-changelog branch from 30953ed to 4f2af68 Compare October 31, 2026 02:09
@JarryShaw JarryShaw added review: running A cross-review is in flight against the current head - no verdict yet and removed review: needs-changes Cross-review at the current head says changes are required; see the verdict comment labels Oct 31, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

NEEDS CHANGES (Sonnet, 4f2af68ee). Regex and pinned test verified; no code changed.

  • CONTRIBUTING.md ~L69 is 102 columns. Break before "the" so line 70 starts "the .rst entry, then regenerates:".
  • PULL_REQUEST_TEMPLATE.md ~L10: "described … above" should say "below" (the description is below the checklist); update test_python_versions_update_1660.py ~L879 to match.
  • Non-blocking: "Feature branches" (CONTRIBUTING ~L64), "docs-only" in the body (the diff touches util/ and tests/), "open versions" in the title.

@JarryShaw JarryShaw added review: needs-changes Cross-review at the current head says changes are required; see the verdict comment and removed review: running A cross-review is in flight against the current head - no verdict yet labels Oct 31, 2026
Pull requests for user-visible changes each adding a bullet to the unreleased
version's changelog file conflict on every merge. CONTRIBUTING.md now says the
maintainer writes those entries centrally, and that such PRs leave the file out
of the diff. The PR template's changelog box and the generator that annotates
it follow the same rule.

Refs #2449
@JarryShaw
JarryShaw force-pushed the chore/2449-centralize-changelog branch from 4f2af68 to a9db8a4 Compare October 31, 2026 02:21
@JarryShaw JarryShaw changed the title chore(docs): centralise changelog entries for open versions chore(docs): centralise changelog entries for unreleased versions Oct 31, 2026
@JarryShaw JarryShaw added review: running A cross-review is in flight against the current head - no verdict yet and removed review: needs-changes Cross-review at the current head says changes are required; see the verdict comment labels Oct 31, 2026
@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Coverage: 94.45% (unit tier, Python 3.15, 5732de283, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 106 4 20 2 95.24%
pcapkit/const 20918 175 2908 156 98.57%
pcapkit/corekit 2918 77 942 38 96.81%
pcapkit/dumpkit 286 3 102 3 98.45%
pcapkit/foundation 3512 27 1218 32 98.75%
pcapkit/interface 138 4 52 3 96.32%
pcapkit/protocols 22839 157 5950 127 99.00%
pcapkit/toolkit 961 26 342 8 96.62%
pcapkit/utilities 565 7 152 5 98.33%
pcapkit/vendor 5590 2286 1280 214 55.75%

Per-file detail: the coverage-html artifact of this run.

@JarryShaw JarryShaw added review: pending No verdict for the current head - never reviewed, or the head moved since the last one review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet review: pending No verdict for the current head - never reviewed, or the head moved since the last one labels Oct 31, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Local-only commit 30953ed forks from 4ca3f30 and is redundant with origin a9db8a4 (rebase onto origin is empty). Nothing to push. Local commit to be dropped.

@JarryShaw

JarryShaw commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner Author

Add to convention and session/sweep memo: upon each release, amend inline or post updates in thread to the PEP's Discussion post. PEP doc is source of truth but aim to keep the Discussion also up-to-date.

@JarryShaw

Copy link
Copy Markdown
Owner Author

Ruling reconciled: upon each release, amend pep.rst inline and update Discussion #106 ("PyPCAPKit Enhancement Proposals") to match -- the page stays authoritative. Documented in process.rst (20f39eb73) and in the sweep memo.

@JarryShaw

Copy link
Copy Markdown
Owner Author

Owner ruling (2026-11-01), paraphrased: changelog entries are consolidated in this PR and stripped from the open feature PRs, so they stop conflicting. The ruling named #2383, which is a merged HIP fix, so I've taken it to mean this PR (it implements #2449's practice). Say so if that's wrong.

In flight on this branch: merge current main, add #2509's Radiotap entry, and reconcile the 1.6.0 entries this merge wave left stale. When that is pushed, the label resets to review: pending and a fresh review runs.

- add entries for the user-visible changes merged since 1.5.1 that had
  none: LinuxSLL, ICMP/ICMPv6, IGMP, TLS/DTLS, SSLv2, DTLS reassembly,
  IP_Pseudo, the IPv6 extension-header walk and the IPv6_Ext id() and
  membership fixes
- add the Radiotap entry from #2509
- drop the FRAD, Netlink and GRE entries' stale "remain Raw" and
  "tracked separately" notes, and cite each entry's own PR and issue
- record the centralised-changelog rule this PR introduces
- regenerate CHANGELOG.md; util/changelog_md.py --check passes
- #2770: 1.5.1's Protocol.__init_subclass__ already registered a subclass
  as it was defined. The entry names what changed, measured on a v1.5.1
  export: an abstract subclass is skipped, where 1.5.x registered it, and a
  name clash keeps the existing entry and warns, where 1.5.x replaced it and
  warned that it was overwriting.
- #2767: drops "length", since IPv6_Ext's length at cut 1 is still open on
  #2761.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
@JarryShaw JarryShaw added review: running A cross-review is in flight against the current head - no verdict yet and removed review: needs-changes Cross-review at the current head says changes are required; see the verdict comment labels Nov 4, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

CI note on 1818bb3a2: one job failed, Python 3.15 (LATEST tier, half 2). The failure is test_register_restores_shipped_descriptor_1504_unit::test_restoring_imports_nothing, which raises KeyError: 'pcapkit.protocols.link.arp.protocol'.

This PR changes only the changelog. Main passes the same job, and the module passes when run on its own. The cause is in the test: its _unimported helper pops the shipped module from sys.modules on the assumption it is already imported, and since #2757's lazy imports that depends on which tests ran first. A test-only fix goes straight to main. I'll re-run this job after that.

- Fixed, a new entry beside the cut-header one: a whole header rebuilt
  through from_data reads back what its parse read. An extension header
  parsed with extension=True rebuilds in that mode, where 1.5.x's rebuild
  gained next-layer keys, and a rebuilt Shim6 header keeps its protocol, where
  1.5.x's was None (#2774); a rebuilt or made TCP header reads its padding past
  the End of Option List, where 1.5.x read it as empty (#2775). Both measured
  on a v1.5.1 export.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 0cd0d2044, for the entries folded so far (cross-review of the #2770 correction, and my own read of folds 26–28).

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Nov 4, 2026
- #2777: the cut-header sentence reads the length back too, the rebuild read
  at the width its parse was given (__short_width__); the ruling into the
  conventions entry.
- #2778: a PCAP-NG block with octets after opt_endofopt rebuilds an info
  holding its options and padding_opts, where 1.5.1 rebuilt none, into the
  whole-header rebuild entry; 1.5.0's frozen entry is left as written.
- #2779: SCTP's reorder, the source-ordered member lists and the sorted
  Option.register clash warning ('opt', 'if', 'epb', ... in 1.5.1), into the
  member-order entry; the layer-grouped registry and the warning name restore
  ('put back silently' in 1.5.1), into the #2770 entry; the page wording into
  the conventions entry.
- #2781: import_lock serialising first resolutions, into the lazy-import
  entry; the removed registry lock never shipped and stays unnamed.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
@JarryShaw JarryShaw added review: running A cross-review is in flight against the current head - no verdict yet and removed review: good-to-go Cross-review at the current head says ready; CI state is separate labels Nov 4, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 26a038916, after the final fold for #2777, #2778, #2779 and #2781 on top of main 812ed0fe2. A Sonnet cross-review of the fold delta checked these claims against code, and each one held:

  • __short_width__ is carried by to_dict() and read back by from_data.
  • On v1.5.1, rebuilding a PCAP-NG block after opt_endofopt lost padding_opts and its options. The block now round-trips.
  • The clash warning's namespaces are sorted now; v1.5.1's order was unsorted.
  • A name restore now warns "overwriting"; v1.5.1 restored it silently.
  • import_lock is public, and the never-released registry lock is not named.

I checked the SCTP, layer-grouping and page-order sentences against #2779's commit. changelog_md.py --check passes. The fold touches only the changelog files.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Nov 4, 2026
…2449)

- The member-order entry's clause on the protocol pages says a project test
  keeps them in source order (#2780), landed on main as 3d45352.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
@JarryShaw JarryShaw added review: running A cross-review is in flight against the current head - no verdict yet and removed review: good-to-go Cross-review at the current head says ready; CI state is separate labels Nov 4, 2026
@JarryShaw

JarryShaw commented Nov 4, 2026 •

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 5732de283. Since 26a038916 this adds main's #2780 guard (3d45352c1) and one clause in the member-order entry: a project test now keeps the protocol pages in source order (#2780). I checked the delta myself; it touches only that clause and the regenerated CHANGELOG.md, and changelog_md.py --check passes. Project tests, Lint and deploy-pages are green.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Nov 4, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Note on 5732de283: the non-blocking GraalPy experimental leg failed one test, test_an_abstract_subclass_is_skipped. That comes from main (#2770), not from this PR, which changes only the changelog. It is filed as #2784 and a fix is in progress. This PR's content verdict stands. Since this PR merges last, please hold it until the #2784 fix lands.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance work: tooling, repo hygiene, no library behaviour change review: good-to-go Cross-review at the current head says ready; CI state is separate

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

chore(docs): centralize 1.6.0 changelog updates in one place, not per-feature-PR

1 participant