feat(network): PLP on converging sink-trees via topological relabel (REQ-NC-PLP-CONVERGE-001)#285
Merged
Merged
Conversation
…REQ-NC-PLP-CONVERGE-001) Fire PLP on single-successor CONVERGING sink-trees whose server indices arrive in NON-topological order — the many-talkers->one-listener TSN shape that REQ-NC-PLP-001 shipped REJECTING (PlpError::NonTopologicalSinkTree). plp_bound now computes a topological relabelling (Kahn, smallest-index-first) and applies it as a pure permutation BEFORE the sink-tree projection, so the sink lands at the highest index — the invariant the per-flow sub-network solve assumes. Sound with no change to the bound: TFA/PLP are invariant under server renumbering, and a graph already validated single-successor + acyclic is a rooted in-forest that always admits a topological order. The former reject guard is REPURPOSED as a post-relabel invariant (no edge may point to a lower index; a violation means the topo sort is buggy -> Err, never panic). Verified by permutation-invariance (the bound equals the same physical net presented already-topologically) plus three panco-pinned converging fixtures: converge_2to1 (PLP 48.89 << TFA 60.39), converge_2to1_tail2 (60.0 << 106.44, the 1.77x wedge), converge_3to1 (70.0 << 74.59 us). Also corrects a false universal "PLP <= TFA" claim that this feature's bridge test surfaced. Pure polynomial PLP and TFA are INCOMPARABLE over-approximations (both sound, neither dominates): on the deliberately pathological converging- bridge net (10000-us-slow-switch) panco's OWN PLP exceeds its OWN TFA (PLP 1148 > TFA 1048 >= EXACT 1035 us), and spar reproduces panco's PLP to the decimal — so the relabel is correct and the sandwich claim was the error. The bridge test now asserts index alignment (slow-stream PLP dominates fast), not a sandwich; the per-fixture plp<=TFA pins are kept but relabelled as such; and the authoritative per-flow bound min(PLP, TFA) is filed as REQ-NC-PLP-MIN-001. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Rivet verification gate✅ 20/20 passed
Filter: Failed artifacts(none) Updated automatically by |
avrabe
added a commit
that referenced
this pull request
Jun 15, 2026
Cuts v0.19.0. Scope (exactly the implemented set, per release-planning hygiene): - REQ-NC-PLP-CONVERGE-001 — PLP on converging sink-trees via topological relabel (#285) - REQ-NC-PLP-003 — TFA-strengthened PLP tightening to EXACT (#287) REQ-NC-PLP-003 repairs the pure-PLP / TFA incomparability: on the converging- bridge net where pure PLP exceeds TFA (1148.33 > 1048.09 us), the TFA-delay- strengthened LP drives the bound to EXACT 1035.2 us — back below TFA. Together with CONVERGE-001 this makes the many-talkers->one-listener TSN topology yield the PLP <= TFA dominance LUDB/PMOO cannot show on a tree. The 11 still-proposed/planned items previously tagged v0.19.0 were moved to v0.20.0 in #287 for re-triage; this release contains only verified-green work. Co-authored-by: Claude Opus 4.8 (1M context) <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.
Summary
Fires PLP (REQ-NC-PLP-001) on single-successor converging sink-trees handed in non-topological order — the many-talkers→one-listener TSN shape that v0.18 shipped rejecting (
PlpError::NonTopologicalSinkTree).plp_boundnow topologically relabels servers (Kahn, smallest-index-first) as a pure permutation before the sink-tree projection, so the sink lands at the highest index — the invariant the per-flow solve assumes.Sound with no change to the bound: TFA/PLP are invariant under server renumbering, and a single-successor + acyclic graph is a rooted in-forest that always admits a topological order. The former reject guard is repurposed as a post-relabel invariant (never panics;
Errs only if the topo sort is buggy).This is the converging-tree precursor split out of REQ-NC-PLP-002; the generic/cyclic core remains there (gated on not-yet-generated cyclic fixtures).
Correctness discovery — PLP and TFA are incomparable
This feature's bridge test surfaced that the shipped "PLP ≤ TFA" universal claim was false. Pure polynomial PLP and TFA are incomparable over-approximations — both sound (≥ exact), neither dominates. On the deliberately pathological converging-bridge net (10000-µs-slow-switch), panco's own PLP exceeds its own TFA:
spar reproduces panco's PLP to the decimal → the relabel is correct; the sandwich claim was the error. Fixes:
plp ≤ TFApins kept, but relabelled as per-fixture regression pins (not a universal law) incheck_plp+ docs.min(PLP, TFA)filed as REQ-NC-PLP-MIN-001 (backlog).Verification
plp.rspermutation-invariance unit test: relabelled bound == same net presented topologically.plp_converge_xvalmatched zero tests →plp_xval::panco_converge).Falsification
If the topological relabel were not a pure permutation, the converging tree's per-flow bound would differ from the same physical network presented sink-last — the permutation-invariance test would fail. If pure PLP were universally ≤ TFA, the converging-bridge counterexample (panco PLP 1148 > TFA 1048) could not exist.
🤖 Generated with Claude Code