You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test: main is red on all five Pythons — #811's negative-length guard pre-empts #814's HTTP/2 struct.error assertion #822
main at 3cbdf8999 fails 10 legs — Python 3.10/3.11/3.12/3.13/3.14 × (Unit, Engines) — on a single test. Run 36201817798.
FAILED tests/protocols/application/test_http_unit.py::HTTPUnitTests::
test_guess_version_reports_a_preface_with_no_frame_as_such
AssertionError: "Field debug resolved to a negative length; template='-1s'"
!= 'HTTP/2: invalid format'
One defect, ten legs — every version fails identically, so this is not version-dependent. It is separate from #819, which is red on 3.10/3.11/3.12 only and is fixed by #820; main currently carries both.
Cause: an interaction between two PRs that were each green.test_http_unit.py:652 (added by #814) feeds a 16-octet GOAWAY whose declared length is 0x15 = 21 with 7 payload octets, and asserts it surfaces as ProtocolError('HTTP/2: invalid format') with __cause__ a struct.error, from the handler at pcapkit/protocols/application/http.py:319. But #811 added a negative-length guard in pcapkit/corekit/fields/field.py that now raises ProtocolError("Field debug resolved to a negative length; template='-1s'")first, so that handler never runs.
Why neither CI caught it:#814's head a8f804787 is based on 4530424df (#803) — before#811, #812 and #813 merged. It was 27✅/0❌/0inc on its own branch and still broke main, because the two trees differ by exactly field.py and the tests those PRs added. git diff refs/pull/814/head..origin/main shows it.
Either the assertion is now stale and should expect #811's message, or the HTTP/2 arm should normalise ahead of the field guard. That call belongs to the fix.
This is the second time a PR cleared as green-and-conflict-free merged red (#813/#819 was the first). The standing check — merge the PR into currentmain in a scratch worktree and run its tests before clearing it — was not run for #814, and would have caught this.
Activity
docs(http): fix three stale measurements in the guess_version fallbac…