docs(contributing): correct four statements the recent merges falsified - #656
Conversation
The *Coding style* section still told contributors that none of the linters is run by the pull-request workflows, which #626 made false when it added `.github/workflows/lint.yml`. Saying only that they now run would mislead in the other direction, so the replacement leads with the part that decides what a contributor should expect: all four steps carry `continue-on-error: true`, so a red linter cannot fail a pull request. It also keeps `isort` out of that group -- isort appears in `cron-vendor.yml` as a formatter over the regenerated constants, not as a check -- and records the `make vermin` trap, whose exit status is the viewer's rather than vermin's, which is why `make vermin-ci` is the target CI runs. Three smaller corrections found while checking the rest of the file against the tree: * The README has no *Testing* section any more. Its only mention of testing is a row in the *Documentation* table linking to `docs/source/testing.rst`, which is where the test commands moved. * The `Changelog drift` job's triggers are scoped to `main` -- `push` and `pull_request` both carry `branches: [main]` -- rather than firing on every push and pull request in the repository. * "The exception stops at the root" overstated the Markdown boundary: the three issue and pull-request templates under `.github/` are Markdown for the same GitHub-rendering reason the root files are. No changelog entry, deliberately: none of this is user-visible, and a bullet here would collide with the changelog consolidation currently in flight.
Cross-review verdict (Sonnet, independent of the model that wrote this PR)NEEDS CHANGES Posting this after the merge because the review was still running when this landed. All of it is The review was briefed to falsify rather than bless, and to give a verdict per claim with evidence it
Confirmed by the review, with its own evidence: all four It also noted a scope point worth keeping: Where the cross-review was itself wrongIt marked the Two reviewers agreeing is not the same as the claim being true, which is the useful lesson here. |
…s recorded (#659) #656 said `make vermin`'s exit status is the viewer's, so a run that found violations still looks like a success. That is what `Makefile:152-157` and `lint.yml:150-152` both assert, and it is wrong: the redirect into `temp/` is its own recipe line, so make gives up there and never reaches the line that would open the report. Measured on this tree -- `make vermin RUN=` exits 2 with `*** [vermin] Error 1`, vermin itself exits 1 on `Target versions not met: 3.6` against a real floor of 3.11, and the 365-line report is left unread in `temp/vermin.txt`. A control run with a succeeding command does reach the viewer line, which is what makes the redirect the deciding factor rather than the shell semantics of `A && B || C`. So the trap is real but inverted: the failure propagates and the *findings* are what get hidden. A contributor told the old version would ignore a red `make vermin` as a known false pass. Three precision fixes in the same section, from a cross-review of #656: * The CI paragraph claimed the job runs "the same `Makefile` targets listed above". It runs `vermin-ci` for vermin, which is not one of them, and the paragraph four lines later said so -- the file contradicted itself. It now names which target each tool takes, and rests the no-drift claim on the shared flag variables, which is what actually holds. * "every step writes its count" was wrong for vermin, whose summary line is a version verdict rather than a count. * `Changelog drift` also runs on every `workflow_call` into `unit-tests.yml` -- the vendor and conda updates, the pages deploy and the release all gate on it -- because that job carries no `gate-only` guard. The two stale comments in `Makefile` and `lint.yml` are deliberately left alone: a workflow edit ahead of the 1.5.0b5 release is not worth the risk, and they want their own change. No changelog entry, deliberately: none of this is user-visible, and a bullet here would collide with the changelog consolidation currently in flight.
What is the purpose of this pull request?
docs— documentation onlyCONTRIBUTING.mdhad accumulated four statements that the tree no longer supports. One was thereported defect; three came out of checking the rest of the file against
da381f259while in there.1. The reported defect — "not run by the pull-request workflows"
CONTRIBUTING.md:104read:#626 made that false when it added
.github/workflows/lint.yml. The correction states, from theworkflow rather than from memory:
lint.yml?banditpull_request→main,scheduleSat 06:00 UTC,workflow_dispatchcontinue-on-error: truemypycontinue-on-error: trueverminvermin-ci)continue-on-error: truepylintcontinue-on-error: trueisortcron-vendor.yml, as a formatterThree things the new prose is careful about, because getting any of them wrong would mislead a
contributor in a new direction:
continue-on-error: true(
lint.yml:117,134,163,183), so a red linter cannot fail a pull request. "Linting runs in CI"without that qualifier would be worse than the stale sentence it replaces.
isortis excluded. It is not inlint.ymlat all; its only workflow appearance is insidecron-vendor.yml, re-sorting regenerated constants as a formatter rather than checking anything.Import ordering is still unverified on a pull request.
make vermindoes not fail on violations.Makefile:147-150redirects intotemp/vermin.txtand hands the file to
code, falling back tocat, so the status returned is the viewer's.make vermin-ci(Makefile:158-159) is the target CI actually runs.The text also records that CI invokes the same
Makefiletargets withRUN=, which is what keepslocal and CI from drifting, and points at the workflow header for the current counts rather than
copying numbers that will go stale.
2. Three further corrections
CONTRIBUTING.md:11claimed the README has a Testing section holding the test commands. Itdoes not — the README's headings are
Installation,UsageandDocumentation, and its onlymention of testing is a row in the Documentation table (
README.md:97) linking todocs/source/testing.rst, which is where those commands moved.CONTRIBUTING.md:76said theChangelog driftjob runs "on every push and pull request". Thejob carries no
if:guard, but its workflow's triggers arepush: branches: [main]andpull_request: branches: [main], so it is scoped tomain.CONTRIBUTING.md:86said the Markdown exception "stops at the root". The three issue andpull-request templates under
.github/are Markdown for exactly the GitHub-rendering reason theroot files are; the claim that actually holds is about
docs/source/, which has no.mdfiles.3. Templates — assessed, and deliberately unchanged
The second half of the ask was whether the issue/PR templates need additions, including whether new
templates are warranted. Verdict: no change, on measured evidence rather than taste.
blank_issues_enabled: true(.github/ISSUE_TEMPLATE/config.yml:11) — checked because afalsehere would actively obstruct the dense maintainer filing style. It istrue, the filedocuments that as deliberate, and the YAML parses.
issues filed in the last hour (the release pipeline publishes to PyPI and Anaconda with no approval gate:
environment: releaseis commented out, and a vendor cron that bumps the version is enough to trigger it #641–Neither the HIP PUZZLE nor SOLUTION builder consults version when sizing, so HIPv1 rejects what it builds #655) carry zero labels, andbug_report.mdauto-appliesbug— so all 15 were blank issues. Across the whole tracker only 22 issues have ever carriedbugand 3enhancement, i.e. roughly 25 of 187 issues used a template at all. 149 of 187 issuesare maintainer-filed.
HIP parameter padding aligns the contents, not the record, so every parameter pcapkit emits is 4 (mod 8) octets #651, Re-serialising a parsed HIP PUZZLE or SOLUTION loses leading zero octets: a len=20 parameter rebuilds as len=6 #653, SOLUTION's Reserved octet is written as a PUZZLE Lifetime, and lifetime=0 escapes a bare ValueError from math.log2 #654 and Neither the HIP PUZZLE nor SOLUTION builder consults version when sizing, so HIPv1 rejects what it builds #655 share a real structure — RFC section quoted verbatim (with the fetched
document's sha256), bytes produced versus bytes required, and whether pcapkit round-trips its own
error. But that structure is already richer than any scaffold of blank prompts, and its author
files blank issues by design. A third entry in the "New issue" chooser would tax the one audience
templates serve — the external newcomer — to serve a filer who never opens the chooser.
exist in the project's history (
Ts-Boom×2,lux-liang,yechielw); everything else is themaintainer or a bot. Issue filers outside the maintainer are 38 accounts filing once each.
has_discussions: trueand private vulnerability reportingenabled: true, so the links docs(github): review the non-workflow metadata under .github/ #637 added are live rather than dead ends.This deliberately does not re-litigate #637, which added
bug_report.md'sReproductionsection,expanded the PR template to the eight commit types at
CONTRIBUTING.md:133, and addedconfig.yml.Its reasoning — that the template audience is the external newcomer, so the templates should not be
rewritten to imitate maintainer prose — is the reasoning this assessment follows.
Recommended but not done, as judgement calls for the owner rather than edits to make unilaterally:
TCP.read's flag accumulator withEnum_Flags(0), not a no-op cast (#616) #634, fix(pcap):Frame.lenis the on-wire length,cap_lenthe captured one (#618) #635 and fix(protocol): refuse a construction keyword no signature declares (#617) #640 all neededthat flagged by hand. It is cheap — one line in an existing checklist, no chooser cost — but all
three are maintainer-authored, and the maintainer uses the PR template in 0 of the last 20 PRs,
so the box would be seen mainly by the 4-external-PR audience that does not make such changes.
PULL_REQUEST_TEMPLATE.md:8namesmake pylint,make mypy,make isortand omitsbanditand
vermin. Not false — it reads as examples — but it is now a subset of what CI reports.Notes
with the changelog consolidation in flight across several PRs.
.github/workflows/**was read-only throughout; no workflow was touched ahead of the1.5.0b5release. No file outside
CONTRIBUTING.mdis modified.config.ymlwas validated by parsing it.Jarry Shaw <jarryshaw@icloud.com>, on top ofda381f259.