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
fix(link): a FRAD header cut short rebuilds different octets and logs CRITICAL #2710
Found while reviewing the #2703 fix and confirmed by a Sonnet cross-review. It is identical on main. Rebuilding a FRAD header cut by the capture to 1–3 octets via from_data has two problems:
It logs NoDefaultValue: Field ext_nlpid has no default value. at CRITICAL.
Its rebuilt octets differ from the captured ones.
The second breaks the byte-exact round-trip rule, which makes it more serious than the logging. The rebuild should write back the octets captured and log nothing, through Schema's built-in short read.
Fix committed locally as 3ebbc15bf, one commit on top of #2712's head 987711d1f. A Sonnet cross-review is running now.
The CRITICAL log:make(nlpid=0) now writes the pad and an NLPID of 0. The schema's built-in short read cuts them back, so every cut prefix rebuilds exactly and quietly.
The differing octets: these came from address forms the data model cannot hold, namely EA bits other than 0 then 1, and not from the cut. read now refuses such an address with ProtocolError. Behind LinuxSLL and on a FRELAY capture, the frame is kept as Raw and nothing is logged.
The Sonnet review of 3ebbc15bf came back NEEDS CHANGES, for prose only.
What passed: every cut prefix rebuilds exactly and quietly. The refusal is keyed on this model's own ('addr', n) record, so a frame cut elsewhere with EA2 0 is still refused. LinuxSLL keeps the refused frame as Raw quietly. FRAD is in neither v1.5.0 nor v1.5.1. The new test fails 131 cases on its parent.
Being amended: the make() note is narrower than RFC 2427 §3 about where the pad may go, and the class docstring's refusal sentence reads loosely.
Activity
JarryShaw commentedon Nov 3, 2026
A worker is on it now, stacked on #2703's rebuild-path change, which is good to go. Moved to
wip.JarryShaw commentedon Nov 3, 2026
Fix committed locally as
3ebbc15bf, one commit on top of #2712's head987711d1f. A Sonnet cross-review is running now.make(nlpid=0)now writes the pad and an NLPID of 0. The schema's built-in short read cuts them back, so every cut prefix rebuilds exactly and quietly.readnow refuses such an address withProtocolError. Behind LinuxSLL and on a FRELAY capture, the frame is kept as Raw and nothing is logged.make()parameters, which refactor(protocols)!: make() takes an enum member or an int, with no keyword groups (#2594) #2692 owns.The PR opens once the review passes and #2712 merges.
JarryShaw commentedon Nov 3, 2026
The Sonnet review of
3ebbc15bfcame back NEEDS CHANGES, for prose only.('addr', n)record, so a frame cut elsewhere with EA2 0 is still refused. LinuxSLL keeps the refused frame as Raw quietly. FRAD is in neither v1.5.0 nor v1.5.1. The new test fails 131 cases on its parent.make()note is narrower than RFC 2427 §3 about where the pad may go, and the class docstring's refusal sentence reads loosely.blockedon refactor(protocols)!: make() takes an enum member or an int, with no keyword groups (#2594) #2692. TheRawversusNoPayloadnext layer after a cut header is fix(protocols): a cut header parses with a Raw next layer but rebuilds with NoPayload #2717,blockedon fix(protocols): cut a rebuilt short read back before it is read and verified (#2703) #2712. Both happen onmaintoo.JarryShaw commentedon Nov 3, 2026
The PR is #2719.
fix(link): keep a captured FRAD pad octet through a whole-frame rebui…