Repository navigation
ieee80211: support immediate Compressed Block Ack - #1345
Merged
levy merged 12 commits intoOct 29, 2026
Merged
Conversation
mgonzalezlopezudc
marked this pull request as ready for review
October 16, 2026 09:02
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s5
branch
3 times, most recently
from
October 22, 2026 23:06
1dd4ca2 to
a7e5799
Compare
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s5
branch
11 times, most recently
from
October 28, 2026 14:38
d8f98b8 to
e4fb346
Compare
levy
reviewed
Oct 29, 2026
| } | ||
| template<typename T> simtime_t actualExtension(const T *, long) { return SimTime(-1); } | ||
|
|
||
| class ExtensionTransmitter : public Ieee80211Transmitter { |
Contributor
There was a problem hiding this comment.
why do we need a subclass? why isn't this part of the Ieee80211Transmitter?
| simtime_t tolerance; | ||
| bool mayBecomePredecessor = true; | ||
| }; | ||
| opp_component_ptr<cModule> interframeRadio; |
Contributor
There was a problem hiding this comment.
interframeRadio is such a weird name
| { | ||
| ModeSetListener::initialize(stage); | ||
| if (stage == INITSTAGE_LOCAL) { | ||
| interframeRadio = getContainingNicModule(this)->getSubmodule("radio"); |
Contributor
There was a problem hiding this comment.
it's perfectly fine to subscribe on the network interface and not on the radio, signals propagate upwards
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s5
branch
from
October 29, 2026 12:25
e4fb346 to
7147f2c
Compare
Before this commit, Rx checks FCS but supplies no interval result. A recipient cannot use local reception or ACK completion evidence through the receive contract. After this commit, Rx attaches a local interval indication to each accepted frame. It compares local endpoints with the SIFS tolerance for coverage class zero. Both endpoints pass. One simulation tick outside either endpoint supplies no relation. FCS acceptance remains independent. Rx subscribes to radio signals at the network interface. Both callbacks filter the original source to a radio directly inside that interface. Interface-originated signals cannot clear ACK history. Rx reads a completed ACK from the radio notification after the Tx callback. Radio OFF aborts supply no ACK evidence. Separate active and completed records preserve a completed frame's result when later activity revokes its predecessor eligibility. The detector creates no event and reads no other station's endpoint. For example, a completed frame retains its accepted SIFS result when residual BUSY occurs before MAC delivery. That frame cannot replace newer history. The protocol fixture checks local boundaries, overlap, reconfiguration, missing evidence, stale delivery, and recovery. The module fixture checks completion through production Tx and radio behavior, including legacy bytes and nonzero return switch time. Protocol verification: tests/protocol/wifi/s5-physical-timing.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.linklayer.ieee80211.mac | behavior.add | test whatsnew migration | ieee80211-compressed-blockack-replacement
Before this commit, HT duration omits the six-microsecond signal extension at 2.4 GHz. A transmitted waveform ends early. The receive indication also supplies no actual extension evidence. After this commit, HT duration includes that extension. The radio derives actual received extension from local duration, decoded PHY length, and the selected mode. The receive indication supplies zero or the nominal extension. A negative value means unavailable. No transmitter query supplies this evidence. For example, normal HT MCS 0 DATA at 2.4 GHz includes six microseconds of extension. A waveform that omits the extension supplies zero actual extension despite its nominal mode. Missing or invalid local duration supplies no invented extension. Normal 2.4 GHz cases use the production transmitter and configured rate selection. Only the 5 GHz case overrides mode selection because bitrate configuration selects VHT at 6.5 Mbps. The omitted-extension case uses a test waveform fault. The physical fixture retains association, payload delivery, and an independent airtime formula. It checks both bands, omitted extension, and unavailable duration. Local input tests check HT SIFS endpoints, outside ticks, fixed propagation, and the own-ACK tolerance boundary. The changed airtime can alter simulation results. Protocol verification: tests/protocol/wifi/s5-ht-signal-extension.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.physicallayer.wireless.ieee80211 | behavior.change.fix | test whatsnew migration | ieee80211-compressed-blockack-replacement
Before this commit, HT management conversion loses RIFS Mode. Rx also lacks the permission and frame attributes that a local RIFS decision requires. An unprotected HT Beacon loses permission, and a permitted two-microsecond local gap supplies no relation. After this commit, HT Operation retains RIFS Mode through management conversion and equality checks. Rx freezes BSS permission at reception start. It accepts RIFS only for consecutive HT receptions with the same TA and RA, no expected SIFS response, and usable actual preceding extension. Both ten-percent tolerance endpoints pass. VHT operation supplies no RIFS permission. For example, an HT waveform without nominal extension supplies zero actual extension. Its successor after two microseconds receives a relation when permission permits RIFS. A different TA, a normal six-microsecond extension, or unavailable evidence rejects that relation. Valid SIFS evidence remains independent. Rx reuses the typed recipient ACK policy through an explicit module path. Non-QoS configurations require no HCF policy module. Infrastructure operation that is unavailable before association supplies no RIFS permission. The tests compare management conversion and local RIFS behavior separately with the parent. This change adds no RIFS transmission scheduler. Protocol verification: tests/protocol/wifi/s5-rifs-permission.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.change.fix | test whatsnew migration | ieee80211-compressed-blockack-replacement
Before this commit, Basic and Compressed decoders allocate temporary BitVector objects and copy their values without deletion. Repeated Block Ack decode therefore leaks those allocations. After this commit, the decoders construct bitmap values directly. Generated fields retain their values without an unowned temporary allocation. For example, independent Basic and Compressed octets retain the expected bits after decode. The direct wire check covers both paths. Type interpretation and frame acceptance remain unchanged. Protocol verification: tests/protocol/wifi/s5-bitmap-ownership.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.change.fix | test whatsnew | ieee80211-compressed-blockack-replacement
Before this commit, Block Ack serialization decodes only part of the Type field. Compressed bitmap and fragment fields lack complete wire validation. After this commit, the serializer decodes all four Type bits. Type 0 retains Basic compatibility, and Type 2 selects Compressed. Compressed responses carry a 64-bit bitmap and occupy 32 bytes with FCS. Both BAR profiles occupy 24 bytes with FCS. Invalid Types and malformed fragment fields fail validation. For example, Type 2 with a nonzero fragment field fails validation. Independent octets cover Types, reserved bits, lengths, and sequence wrap. Synthetic fixtures supply complete headers, valid FCS lengths, and every Basic bitmap entry. Protocol verification: tests/protocol/wifi/s5-wire-types.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.add | test whatsnew migration | ieee80211-compressed-blockack-replacement
Before this commit, the data service supplies borrowed DATA preview but cannot construct an owned aggregate without source extraction. A caller cannot evaluate the actual aggregate before queue removal and sequence assignment. After this commit, the data service creates an owned DATA preview while original MSDUs remain queued. This extends the borrowed preview contract that master supplies through S4. Commitment validates source identity, eligibility, lifetime, aggregation permission, and sequence state. It transfers the same preview and assigns one sequence number. Refusal preserves the preview and all source frames. Ordinary commitment uses normal dequeue or filtered pull through the queue owner. It copies completed region metadata before source deletion. For example, DATA that waits 2 ms retains that queueing time and one queue departure. Direct service tests cover commitment, refusal, stale state, and cancellation. The Compressed activation commit uses this contract for complete exchange admission. Protocol verification: tests/protocol/wifi/s5-reversible-preparation.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.add | test whatsnew migration | ieee80211-compressed-blockack-replacement
Before this commit, recipient receipt state uses the Basic fragment bitmap. Delivery cleanup cannot supply the independent complete-MPDU receipt evidence that a Compressed response needs. After this commit, the record retains explicit complete-MPDU receipts within its Compressed window. The agreement selects that profile, and the response builder copies receipt truth into a 64-bit bitmap. Positive receipts survive delivery cleanup. Absent positions remain zero. For example, a window at 4094 retains its positive receipt across sequence wrap without false positive bits. The direct record fixture checks these conditions and response construction. This commit prepares receipt state for the Compressed activation commit. HCF retains its initialization guard until that activation. Protocol verification: tests/protocol/wifi/s5-receipt-state.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.add | test whatsnew | ieee80211-compressed-blockack-replacement
Before this commit, QoS rate selection supports only the Basic Block Ack response contract. Compressed exchanges need distinct non-HT BAR selection and response-duration rules. After this commit, the selector uses the applicable local, BSS, and peer rate sets for initial and later Compressed BAR. Compressed exchanges receive legal non-HT BAR rates and profile-specific response airtime. Compressed responses use their non-HT reference rate and 32-byte airtime. Invalid configured overrides fail explicitly. Custom selectors must implement the new interface operation. For example, peers with different operational rates can require different later-BAR rates. The direct rate fixture checks both directions, Basic compatibility, and invalid overrides. This commit prepares rate selection for Compressed activation. HCF retains its initialization guard until that activation. Protocol verification: tests/protocol/wifi/s5-control-rates.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.add | test whatsnew migration | ieee80211-compressed-blockack-replacement
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s5
branch
from
October 29, 2026 12:42
7147f2c to
394b78c
Compare
Before this commit, HCF rejects Compressed at initialization. Wire support, receipt state, local interval evidence, preparation, and rate helpers exist. Production Compressed exchanges do not use them. After this commit, explicit Compressed profiles complete immediate exchanges on eligible HT links. HCF connects the existing agreement lifecycle, BAR arbitration, and transmit-window operations to Compressed receipts and complete DATA admission. Basic remains the default at this boundary. Rx supplies each frame's local SIFS or permitted RIFS indication. HCF passes it to the recipient service and asks Rx to invalidate obsolete agreement context. The detector supports coverage class zero. For example, five-microsecond one-way propagation after a local ACK produces a twenty-microsecond local gap. That gap supplies no SIFS evidence. Sequence 104 retains its positive receipt until a newer BAR releases it once. Receipt bits survive delivery. Shifted responses apply only within the active window. The recipient limits agreement updates to QoS DATA. Non-QoS DATA retains ordinary delivery and fragment reassembly. Compressed agreements suppress fragmentation through the QoS service contract. Both endpoints must select the same profile. A conflicting valid addressed BAR stops the simulation before agreement updates. Delayed Compressed policy fails initialization. HCF checks complete exchange cost before queue removal. For example, an oversized aggregate leaves its sources intact. HCF can admit its first ordinary MSDU with the same selected mode. Refusal preserves deadlines and sequence state. One mode decision survives RTS/CTS. Failed RTS updates category recovery without a provisional sequence counter. Single protection reserves only the current exchange. Physical protocol fixtures cover local intervals, receipt truth, BAR recovery, and semantic invalidation. Exchange and admission fixtures retain refusal, fallback, retry, and response checks. No A-MPDU or complete MAC restart claim follows from these paths. The earlier commits already supply the reusable contracts; this commit connects their first complete production exchange. DATA admission, source commitment, and frame-sequence callbacks share the same prepared frame and must use one ownership contract. Activating only part of that connection permits queue removal before a complete exchange fits or leaves callbacks with incompatible frame ownership. These changes therefore remain together as the activation decision; no independent helper or alternative profile behavior forms part of this commit. Protocol verification: tests/protocol/wifi/s5-compressed-exchange.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.add | test whatsnew migration | ieee80211-compressed-blockack-replacement
Before this commit, a configuration without a profile selector uses Basic. A complete Compressed exchange requires an explicit selector. After this commit, HCF selects immediate Compressed Block Ack by default for eligible HT links. The existing agreement lifecycle, Compressed wire format, receipt state, control rates, local interval detection, and DATA admission supply the exchange. Links without usable local or peer HT state use Normal Ack. Explicit Basic retains its compatibility profile and fragment bitmap. Both endpoints must select the same profile because ADDBA does not negotiate it. For example, an eligible n link without blockAckVariant uses Compressed. The n and ac fixtures cover explicit Basic, explicit Compressed, and the NED default. Each run checks its own result. Migration fixtures cover capability fallback, profile conflict, and unsupported delayed policy. Basic demonstrations select their profile explicitly. Rx supplies local interval evidence under the coverage-class-zero limit. A gap outside the local SIFS window supplies no relation. A valid frame retains its receipt but can wait behind a sequence gap until a later BAR permits delivery. Current summaries explain this limit and distinguish the local verification from historical records. A-MPDU, implicit BAR, delayed Compressed Block Ack, Multi-TID Block Ack, and complete VHT transfer conformance remain outside this change. Basic admission and admission outside active Compressed agreements retain their limits. Protocol verification: tests/protocol/wifi/s5-default-profile.md Verification plan: plan/pending/ieee80211-compressed-blockack-s5-protocol-tests.md Plan: plan/pending/ieee80211-compressed-blockack-replacement.md Change: src.ieee80211 | behavior.change | test whatsnew migration | ieee80211-compressed-blockack-replacement
Completed Block Ack and recipient NAV documents still occupy plan/pending beside unfinished protocol plans. Move the twelve completed documents to plan/done so readers can distinguish completed work from proposed work. Each moved file retains identical content. The next commit updates incoming links to the new paths. Protocol behavior and recorded evidence remain unchanged. Verification checks twelve exact renames without content edits. No build or simulation runs for this documentation move. Plan: plan/done/ieee80211-compressed-blockack-replacement.md Change: plan | location | - | ieee80211-compressed-blockack-replacement
Before this commit, five documents retain links to plan/pending after the completed Block Ack and recipient NAV documents move to plan/done. Those links no longer reach the documents. After this commit, eleven links use the new paths. For example, the S3b summary reaches the lifecycle contract in plan/done. The edit changes only link paths and preserves protocol descriptions and recorded evidence. Verification compares all 225 local link targets in the affected documents with their original targets before the move. The final tree equals the original combined relocation commit. Existing absent targets and obsolete section references remain unchanged. No build or simulation runs for this link update. Plan: plan/done/ieee80211-compressed-blockack-replacement.md Change: doc | behavior.change | - | ieee80211-compressed-blockack-replacement
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s5
branch
from
October 29, 2026 14:02
394b78c to
4a31a7a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
HCF lacks a complete Compressed Block Ack exchange. This PR adds explicit immediate feedback and selects Compressed by default for eligible HT links. Master already contains the agreement lifecycle and transfer-completion mechanisms through #1344. Parent controls reproduce missing exchange support, incorrect HT airtime, lost RIFS permission, and the old Basic default.
Both endpoints must select the same profile because ADDBA does not negotiate it. Block Ack requires
isBlockAckSupported = true. Links without usable local or peer HT state use Normal Ack. ExplicitblockAckVariant = "basic"retains Basic compatibility.The recipient retains receipt evidence separately from its reorder buffer. For example, DATA 100 and 102 arrive while DATA 101 is absent. A BAR requests status from 100. The recipient reports bits 1, 0, 1, even if delivery removes DATA 100. After DATA 101 arrives, the recipient can report all three receipts:
sequenceDiagram participant O as Originator participant R as Recipient O->>R: DATA 100 and 102 O->>R: BAR from sequence 100 R-->>O: Compressed Block Ack reports 1, 0, 1 O->>R: Retry DATA 101 O->>R: BAR from sequence 100 R-->>O: Compressed Block Ack reports 1, 1, 1Rx derives SIFS and RIFS relations from local reception endpoints, local transmission completion, and decoded frame information. HCF passes the resulting frame indication to the recipient service. Rx subscribes at the network interface. Both callbacks accept signals only from a radio directly inside that interface. The original radio remains the signal source after upward propagation.
The generic radio medium supplies no preceding-gap API. The detector retains no transmission pointer and introduces no timer, random draw, or network scan.
Normal 2.4 GHz HT duration tests use the production transmitter and configured rate selection. The 5 GHz case retains a test override to select HT MCS 0. Bitrate configuration alone selects VHT at the same 6.5 Mbps rate. A separate test path deliberately omits the signal extension. That waveform fault remains in test code.
Interval evidence controls recipient release decisions; absent evidence does not reject an otherwise valid frame. For 2.4 GHz HT, the inclusive SIFS window is 8–12 microseconds. After a local ACK, 0.5-microsecond propagation gives an accepted eleven-microsecond gap. Five-microsecond propagation gives a twenty-microsecond gap, outside that window. In the latter test, DATA 104 remains buffered behind absent sequences 101–103. A newer BAR with SSN 104 releases it once and advances the receive origin to 105.
The main compatibility risks concern custom MAC interfaces, airtime, and contention. A conflicting addressed BAR stops the simulation. Delayed Compressed policy fails initialization. Active Compressed agreements suppress QoS DATA fragmentation. Non-QoS DATA retains ordinary reception and fragment reassembly. A-MPDU, implicit BAR, delayed Compressed Block Ack, Multi-TID Block Ack, and complete MAC stop/start support remain outside scope. Complete VHT transfer conformance remains outside scope.
Read the commits in this order:
2c3e709057Local interval evidence: Rx detects SIFS from local radio observations and supplies a frame indication. This prepares the exchange in commit 9. Tests and explanation.5cd50afbf8HT airtime: the 2.4 GHz waveform includes its six-microsecond signal extension. The receiver derives the actual extension from local duration and decoded PHY length. Tests and explanation.9100a30162RIFS permission: management preserves advertised RIFS Mode. Rx requires BSS permission, consecutive HT receptions, the same TA and RA, and no expected SIFS response. Tests and explanation.f789063968Bitmap ownership: direct value construction removes unowned temporary bitmap allocations during decode. Tests and explanation.3864ee29e5Wire Types: the serializer checks complete Basic and Compressed Types, lengths, and fragment fields. Tests and explanation.b920df9f42Reversible preparation: an owned QoS DATA preview preserves queued sources until commitment. This prepares admission in commit 9. Tests and explanation.e670bacf1eReceipt state: separate receipt state retains positive bits after delivery. This prepares feedback in commit 9. Tests and explanation.8c3dc7078dControl rates: helpers select legal non-HT BAR rates and calculate 32-byte Compressed response airtime. This prepares admission in commit 9. Tests and explanation.6b7e0d2798Production exchange: HCF connects explicit Compressed feedback, local interval evidence, and complete exchange admission before source removal. Tests and explanation.dbc59f7bb0Default selection: HCF defaults to Compressed, with capability fallback and explicit Basic compatibility. Tests and explanation.67434888eaPlan locations: twelve completed Block Ack and recipient NAV documents move toplan/donewith identical content.4a31a7affdDocument links: affected documents use the completed plan paths, current anchors, and pinned historical CSV sources.HCF owns admission, agreement records own receipts, and the recipient service owns reorder delivery. If an aggregate exceeds the exchange bound, HCF evaluates its first ordinary MSDU. Refusal preserves queued sources, deadlines, and sequence state. General Basic admission and admission outside active Compressed agreements retain their limits.
The contracts include
IRx::invalidateInterframeHistory()and the fragmentation-permission operation onIOriginatorQosMacDataService. Rx suppliesIeee80211InterframeInd; the radio supplies actual received extension throughIeee80211ModeInd. HCF invalidates Rx history when agreement or BAR state changes. Wire Types and the HCF profile default also change. The migration guide explains custom implementation obligations. Generic medium source andIeee80211Transmissionmatch the pinned base. No new architecture or naming exception is necessary. The packet seal remains intact.The branch contains twelve linear commits on pinned master
f13dca88fd. The rebase retains their order and messages. Master adds VHT queries beside the signal-extension query. The conflict resolution retains all three queries. Master also supplies the signal-tag include that the second commit previously added.The first commit contains the interface subscriptions, source filters, and completion checks. The second commit contains the restricted transmitter override and its explanation. The third commit retains the shared waveform helper. The last two document commits retain the verified runtime source and tests.
The current head is
4a31a7affd. The recorded S5 verification ran at its former head394b78c55e. Only the activation commit message changes after that verification. Every corresponding S5 commit retains its complete file tree. The message now explains why DATA admission, source commitment, and frame-sequence callbacks share one activation boundary. No source, test, configuration, document, or expectation changes. No additional S5 build or simulation runs for this message correction.The recorded debug and release builds pass. The user requested no build or test at intermediate commits. The earlier publication tested each original commit on
7fda2e3987; those results do not establish intermediate behavior after the upstream rebase.The final selection passes nine protocol files, seven module files, and four unit files. The local interval fixture covers seed-zero cases. The physical exchange fixture covers zero, 0.5-microsecond, and five-microsecond propagation. Local transmission completion includes rejection of interface-originated signals. HT extension and RIFS management also pass.
The current validation also covers default, fallback, migration, admission, preparation, receipt, wire, control-rate, and originator paths. The earlier implementation campaign covers protection, deferral, and Tx NAV paths.
Master changes radio metadata for Radiotap records. Two additional module files and four additional unit files pass on the rebased head. These tests cover receiver copies, Radiotap output, serialization, PHY mode queries, and radio wire identity.
The earlier implementation campaign reproduced HT airtime, RIFS permission, local RIFS, and default-profile failures against the corresponding parents. It also matched HT and VHT default
tplxfingerprints,525b-ffe4ande882-0164, and passed two stored Basic controls. The current publication does not repeat those parent controls or fingerprint runs. No expected-failure declaration, fingerprint baseline, or statistical baseline changes.Commit, classification, include, NED parameter, release-note, description, source-protection, and whitespace checks pass. The interface gate retains unchanged findings in
IFrameSequence.h:ITransmitStepandIReceiveStepcontain bodies. That file matches the pinned base. New interface operations are pure virtual.The publication reruns the full series gate. Global architecture, naming, and interface gates return failures. Comparison with the pinned base finds identical sets: 36 architecture candidates, 24 naming findings, and 16 interface findings. No new finding appears in those sets. Source-seal and document-seal checks pass.
The series gate reports eight notes. Seven concern paragraph layout beside trailers. One asks whether the 693-line production commit can divide. The rebase preserves the original commit messages and boundaries; these notes remain open.
The tests establish selected deterministic paths. Other seeds, general propagation models, custom delayed MAC delivery, external custom implementations, and complete stop/start recovery remain unverified. The detector supports coverage class zero. Source inspection establishes constant detector work per local event, apart from existing frame checks. No performance measurement establishes a speed improvement. A full leak-detector campaign, statistical campaign, and C++ lint remain outside this evidence. Local results do not establish CI completion.
Executed commands and evidence scope
The current publication uses
/home/user/omnetpp_ws/inet-compressed-blockack-s5with retained build outputs. The directory/tmp/pr1345-master-rebase-20261029contains pinned inputs, the patch comparison, build logs, test results, and gate results. A temporary runner file removes the unsupportedcoverage.reportsetting without a repository change. Explicit INET builds precede tests. The final checks use these commands:The former head
394b78c55eran the combined protocol, module, and unit selections above. Its complete tree equals the current head. Fixtures use their declared run ranges and seed zero. The earlier implementation record remains historical evidence for its parent comparisons and fingerprint controls. The protocol test document explains that comparison method and its limits.