Repository navigation
Don't suppress re-surfaced offers in the delivery scheduler - #159
Merged
Merged
Conversation
foldedOffers dropped an offer whose digest had ever been popped, but a re-surfaced identical digest is live again on both engines (Swift re-staples the same Upd bytes idempotently; Rust re-sets offered_proposal per frame). Suppressing it manufactured a no-offer the engines never see, stalling the receiver's send epoch. Staleness is already handled by the fold liveness gates. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
The deployed-pin run resolved twomlspq-swift as a version range, so engine changes merged ahead of the released tag were invisible to the differential. Package.swift now redirects the dependency to a local checkout when TWOMLSPQ_SWIFT_LOCAL is set, and the script defaults to a shallow clone of twomlspq-swift main (fetched/reset every run). TWOMLSPQ_SWIFT_LOCAL=release falls back to the released tag for pre/post comparison. Co-Authored-By: Claude Code <noreply@anthropic.com>
Swift's never-opened funnel and messageFromUnretainedEpoch fold (GER-2586/7) land as decryptionFailed on the Rust side too: the new Swift case is matched by text (it exists only on twomlspq-swift main, and this table must also compile against the released tag), and Rust's Mls — "a frame that never parsed" per the pin's own binding docs — moves to the receive family: an unparseable blob is indistinguishable from an out-of-window frame and garbage per the book's receive rule. Co-Authored-By: Claude Code <noreply@anthropic.com>
The ±1 epoch class roots at send ops whose errors only print on findings; a per-send line (proposing, didCommit, epoch before/after, error class/text) pins the throw site directly. The fold debug lines get the direction so mixed-pair output separates without the pure-pair run's principal-id prefix. Co-Authored-By: Claude Code <noreply@anthropic.com>
A `.rotationInFlight` send (Swift refuses, deployed Rust permits) is the first real divergence in every affected seed; its downstream apply/skip, payload, error-class and side-band count differences are the deterministic one-commit-epoch skew, not independent signal. Record the root op per direction and count post-root mismatches in a new visible bucket instead of failing them, still never excusing an unclassified `.other`. Also stop the Rust respond adapter consuming the parked side-band leg: Swift's `pqRatchetRespond` keeps it parked, so taking on Rust made a later `handOutSideBand` see a leg on one engine and none on the other. Co-Authored-By: Claude Code <noreply@anthropic.com>
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.
Removes the
foldedOffersdigest blacklist fromDeliveryScheduler.offer. The disallow-list treated any popped digest as permanently dead, but both engines re-hold a re-surfaced identical offer (Swift re-staples the same Upd bytes idempotently per recv epoch; Rust re-setsoffered_proposalper frame), so suppressing it manufactured aNO-OFFERthe engines never see and stalled the receiver's send-epoch cadence — the amplifier behind most of the commit-cadence divergence findings in GER-2583.Test notes: 12-seed deployed-pin differential goes 169 → 121 failing findings, presence exclusions 303 → 178, designed-wedge 104 → 107; plain suite green with the differential tests skipped. Successor to #158 (merged this morning); the residual 121 decompose into the ±1-epoch cadence class (under active diagnosis), post-restore one-direction wedges (unattributed), and the already-filed GER-2587 error-mapping case.
🤖 Generated with Claude Code