feat(network): TFA-strengthened PLP tightening to EXACT (REQ-NC-PLP-003)#287
Merged
Conversation
Adds `plp_bound_tfa_strengthened`: the polynomial LP (REQ-NC-PLP-001) with
panco's per-server TFA-delay constraints (Bouillard `fifo/plpConstraints.py`,
the `FifoLP(tfa=True)` path) layered on, tightening the bound toward the exact
worst-case FIFO delay.
The LP is fed spar's OWN independent FP-TFA per-server delays (`tfa_bound`),
not panco's. Soundness is preserved because those delays are sound upper
bounds (>= true), and the one-directional `t[h]-t[j] <= d[j]` constraints stay
valid under any looser `d[j]`, so the strengthened bound never drops below
EXACT. Adding constraints to the maximization can only lower the optimum, so
strengthened <= pure PLP always.
This repairs the pure-PLP / TFA incomparability (REQ-NC-PLP-MIN-001): on the
converging-bridge net where pure PLP dataA 1148.33 us EXCEEDS TFA 1048.09 us
(both sound, neither dominates), strengthening drives dataA to EXACT 1035.2 us
- back below TFA. On three_server_line it drives the crossing flows
72.22/61.11 -> 68.4/58.4 us (= EXACT).
Oracle (`nc_validation.rs::plp_str_xval`, feature milp-solver) pins the panco
`tfa=True` column [68.4,58.4,57.98] and [1035.2,10030.7] under
EXACT <= strengthened <= pure-PLP, plus the converge_bridge headline
(strengthened dataA <= TFA where pure PLP could not). panco generator extended
with the converging-bridge net (`oracles/panco/panco_bench.py`).
Scope hygiene: v0.19.0 scope is now exactly {REQ-NC-PLP-CONVERGE-001,
REQ-NC-PLP-003} (the implemented set); the 11 still-proposed/planned items are
bumped to v0.20.0 for re-triage at v0.20.0 planning.
REQ-NC-PLP-003 -> implemented; TEST-NC-PLP-STR -> passing.
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.
What
The v0.19.0 headline. Adds
plp_bound_tfa_strengthened— the polynomial LP(REQ-NC-PLP-001) with panco's per-server TFA-delay constraints layered on
(Bouillard
fifo/plpConstraints.py, theFifoLP(tfa=True)path) — tighteningthe PLP bound toward the exact worst-case FIFO delay.
Why it matters: it repairs the PLP/TFA incomparability
Pure polynomial PLP and TFA are incomparable sound over-approximations
(neither dominates). On the converging-bridge net (
wctt.rs::bridge_converge_aadl)pure PLP's tagged flow exceeds TFA —
dataA 1148.33 µs > TFA 1048.09 µs,the counterexample behind REQ-NC-PLP-MIN-001. TFA-strengthening drives that
flow to EXACT 1035.2 µs — back below TFA. On
three_server_lineit tightensthe crossing flows
72.22/61.11 → 68.4/58.4 µs(= EXACT).Soundness
The LP is fed spar's OWN independent FP-TFA per-server delays (
tfa_bound),not panco's. This stays sound because:
t[h] − t[j] ≤ d[j]constraints remain valid under anylooser
d[j]— so the strengthened bound never drops below EXACT.strengthened ≤ pure PLPalways.Oracle
nc_validation.rs::plp_str_xval(featuremilp-solver, a default feature ⇒runs in the CI Test job) pins the panco
tfa=Truecolumn[68.4,58.4,57.98]/[1035.2,10030.7]underEXACT ≤ strengthened ≤ pure-PLP,plus the converge_bridge headline (
strengthened dataA ≤ TFAwhere pure PLPcould not). panco generator
oracles/panco/panco_bench.pyextended with theconverging-bridge net (regenerated offline; panco is not vendored, not in CI).
Scope hygiene
v0.19.0 scope is now exactly {REQ-NC-PLP-CONVERGE-001, REQ-NC-PLP-003} (the
implemented set). The 11 still-
proposed/planneditems are bumped to v0.20.0for re-triage at v0.20.0 planning — matching the v0.18.0 cut discipline.
Trace
REQ-NC-PLP-003→implementedTEST-NC-PLP-STR→passing(satisfies REQ-NC-PLP-003, REQ-NC-VALIDATION-001)Falsification
A bug feeding
d[j]below the true per-server delay would make the bounddrop below EXACT — caught by the soundness floor (
strengthened ≥ panco EXACT)on every fixture. A formulation drift would break the panco
tfa=Trueagreement pin. Both are asserted per-flow.
🤖 Generated with Claude Code