Skip to content

fix(config): give values_sim.yml an entry for every pool the simulator serves [HOLD — waits on smart-router#262] - #98

Draft
VicSheCodes wants to merge 1 commit into
mainfrom
sync-missing-sim-pools
Draft

fix(config): give values_sim.yml an entry for every pool the simulator serves [HOLD — waits on smart-router#262]#98
VicSheCodes wants to merge 1 commit into
mainfrom
sync-missing-sim-pools

Conversation

@VicSheCodes

@VicSheCodes VicSheCodes commented Aug 23, 2026

Copy link
Copy Markdown
Collaborator

What was wrong

The simulator binds listeners for 14 pools. config/values_sim.yml carried 9. Four pools the running process actually serves had no entry here at all:

Pool Ports Deployed on canonical today?
eth-duo-sim 18586-18587 yes
eth-priority-sim 18591-18593 yes
eth-precedence-sim 18594-18595 yes
eth-best-sim 18588-18590 no

The guard test could not see the gap, because every missing pool was named in POOLS_WITH_NO_ROUTER_HERE — the allow-list that excuses an absence. Three of those four excuses had stopped being true. The file drifted for months while the test stayed green.

What this changes

  • Adds the four entries. Ports and provider names are taken from TOPOLOGY, not hand-typed.
  • Shrinks POOLS_WITH_NO_ROUTER_HERE to ln-sim, the one pool that genuinely has no router anywhere.
  • Corrects two docstrings that described the old state: topology.py called eth-duo-sim k3d-only when canonical runs it, and said priority and precedence had no router wired.

The one pool that cannot be deployed

eth-best-sim gets an entry, but copying it into a deploy repo would not give you a working router. Its whole purpose is --qos-selection-mode=best, and chart smart-router-5.15.0 has no key that emits that flag and no extraArgs passthrough — rendering the chart against canonical's own values produces qos-selection-mode zero times. Only the k3d cluster passes router arguments straight through, and its row ships enabled: false, so nothing runs it today. The entry carries a comment saying exactly this.

Verification

Full suite: 1021 passed. The guard test now covers all 13 pools that have routers, including every new port.

Why this PR is a DRAFT [HOLD — waits on smart-router#262]

Parked on purpose so it cannot be merged by mistake. One of the pools it declares (eth-best-sim) only means something once Magma-Devs/smart-router#262 lands the --qos-selection-mode flag. This PR merges together with the automation-repo half of the same sync — see Magma-Devs/smart-router-automation#684 for the full state of that half and the decision to make at #262 time.

…r serves

The simulator binds listeners for 14 pools. This file carried 9 of them, so
four pools the running process actually serves had no router-side entry here
at all: eth-duo-sim, eth-best-sim, eth-priority-sim and eth-precedence-sim.

The guard test could not see the gap because each missing pool was named in
POOLS_WITH_NO_ROUTER_HERE, the allow-list that excuses an absence. Three of
those four excuses had stopped being true — canonical deploys routers for
eth-duo-sim, eth-priority-sim and eth-precedence-sim today — so the file drifted
while the test stayed green. Add the four entries, ports and names taken from
TOPOLOGY, and shrink the allow-list to the one pool that is genuinely unwired.

eth-best-sim gets an entry but cannot be deployed through the chart: its whole
purpose is --qos-selection-mode=best, and chart smart-router-5.15.0 has no key
that emits that flag, with no extraArgs passthrough. Rendering the chart against
canonical's own values produces qos-selection-mode zero times. Only the k3d
cluster passes router arguments straight through, and its row ships disabled, so
nothing runs it today. The entry is here so this file matches what the simulator
serves; the comment says why copying it into a deploy repo would not work yet.

Also correct two docstrings that described the old state: topology.py called
eth-duo-sim k3d-only when canonical runs it, and said priority and precedence
had no router wired.

Verified: full suite 1021 passed.
@VicSheCodes VicSheCodes self-assigned this Aug 23, 2026
@VicSheCodes

Copy link
Copy Markdown
Collaborator Author

Related to smart-router#262 (feat(provideroptimizer): configurable upstream selection policy) — not for this release.

This repo's copy of values_sim.yml deploys nothing; it is read only by tests/test_values_sim_matches_topology.py, which checks it against topology.py. So the entries here are safe to land ahead of #262 — they describe pools the simulator already serves.

Recording the dependency so it is not lost: eth-best-sim is the one pool that cannot run anywhere but k3d until #262 merges and the helm chart gains a key for --qos-selection-mode. eth-duo-sim, eth-priority-sim and eth-precedence-sim all run on canonical today and need nothing from #262.

Companion: Magma-Devs/smart-router-automation#677.

@VicSheCodes
VicSheCodes requested a lite review from Copilot August 23, 2026 19:22
@VicSheCodes
VicSheCodes marked this pull request as draft August 23, 2026 19:23
@VicSheCodes VicSheCodes changed the title fix(config): give values_sim.yml an entry for every pool the simulator serves fix(config): give values_sim.yml an entry for every pool the simulator serves [HOLD — waits on smart-router#262] Aug 23, 2026
@VicSheCodes

Copy link
Copy Markdown
Collaborator Author

Held — not for this release. Converted to draft so it cannot be merged by accident.

Gate: smart-router#262 (feat(provideroptimizer): configurable upstream selection policy). Take this out of draft once #262 is merged, or once it is deployed somewhere these pools can actually be tested.

To be precise about what is and is not gated, because only one of the four pools really is:

Pool added here Gated on #262?
eth-duo-sim No — runs on the shared cluster today
eth-priority-sim No — runs today; the chart has no key for --qos-selection-priority, so the preset's four weights are written out instead
eth-precedence-sim No — same standing-in
eth-best-sim Yes, and gated twice: --qos-selection-mode=best exists only on #262's branch, and chart smart-router-5.19.0 has no key that emits it and no extraArgs passthrough

Nothing in this file deploys anything — it is read only by tests/test_values_sim_matches_topology.py, which checks it against topology.py. So holding it costs nothing operationally; it is held to keep the release boundary clean.

Copilot review requested; any comments will be addressed while it waits, so it is ready to merge the moment the gate clears.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR brings config/values_sim.yml back into alignment with the simulator’s declared topology by ensuring every simulator-served pool that has (or should have) a router entry is represented in the values file, and by tightening the guarding test so missing pools can’t be silently excused.

Changes:

  • Added router entries in config/values_sim.yml for eth-duo-sim, eth-best-sim, eth-priority-sim, and eth-precedence-sim, with ports/provider names aligned to TOPOLOGY.
  • Reduced POOLS_WITH_NO_ROUTER_HERE in the guard test to only ln-sim, so newly-missing pools fail the suite rather than being allow-listed.
  • Updated provider_simulator/topology.py documentation to reflect the current deployment reality (canonical vs k3d constraints) for these pools.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
tests/test_values_sim_matches_topology.py Tightens the exception list and updates the module docstring to reflect that only ln-sim is intentionally uncovered by values_sim.yml.
provider_simulator/topology.py Updates the pool/router relationship documentation to match the current wiring and deployment constraints.
config/values_sim.yml Adds missing router entries so the values file covers all simulator pools that are intended to have routers configured.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants