Skip to content

Honor Pipeline9 bus allowed layers per connection - #2248

Closed
ShiboSoftwareDev wants to merge 1 commit into
repro/pipeline9-multipoint-bus-allowed-layersfrom
fix/pipeline9-multipoint-bus-allowed-layers
Closed

Honor Pipeline9 bus allowed layers per connection#2248
ShiboSoftwareDev wants to merge 1 commit into
repro/pipeline9-multipoint-bus-allowed-layersfrom
fix/pipeline9-multipoint-bus-allowed-layers

Conversation

@ShiboSoftwareDev

@ShiboSoftwareDev ShiboSoftwareDev commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Stacked on #2243.

Real board failure

The regression is extracted from the AM62L carrier HDMI path and keeps the real SII9022ACNU -> TPD12S016PWR -> HDMI_001S three-point connection. TMDS_D2_N belongs to a bus whose allowedLayers is ["top"], but Pipeline 9 previously emitted part of that connection on inner1.

The SVG snapshot in #2243 shows the violating inner-layer segment. This PR updates that same snapshot to show the complete connection on top.

Fix

  • derives allowed z-layers for every final MST/point-pair connection from its logical bus member
  • carries that constraint on each port point through tiny-hypergraph pathing and high-density routing
  • uses a node-wide layer restriction only when every connection in the node has the same layer set
  • keeps mixed per-connection constraints separate instead of applying the first port's layers to the whole node
  • rejects forbidden tiny-hypergraph port transitions before cost calculation or candidate queueing
  • validates the routed HD output against the declared bus layers before returning it

The pre-queue traversal hook is implemented by the standalone, main-based tscircuit/tiny-hypergraph#173. The dependency pin is a temporary compatibility commit built from current tiny-hypergraph main, #173, and the two unmerged solver APIs already consumed by the #2243 base (trace-density options and preferred-route preservation). It excludes the obsolete repro fixture and branch ancestry. This does not add a Pipeline 9 stage and does not add an __allowedZ field to SRJ connections.

Validation

  • real AM62L D2-pair regression passes and its SVG snapshot changes from the violation to top-only copper
  • ten related Pipeline 9, preloaded-route, and tiny-hypergraph tests pass (11 focused tests total)
  • TypeScript typecheck passes
  • production build passes
  • the compatibility branch's 19 focused tiny-hypergraph tests pass
  • tiny-hypergraph's focused transition-filter regression proves rejected neighbors are neither costed nor queued

Known follow-up

The reduced real pair routes correctly. The full eight-member HDMI phase now fails loudly when its current topology requires a single-layer crossing, rather than silently escaping the declared layers. That topology problem is separate from enforcing allowedLayers.

@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
capacity-node-autorouter Ready Ready Preview Aug 27, 2026 8:06pm

Request Review

@tscircuitbot

Copy link
Copy Markdown
Contributor

Benchmark This PR

Run benchmarks by commenting on this PR:

/benchmark [benchmark.sh args...]
/benchmark-long [benchmark.sh args...]
/benchmark-all [benchmark.sh args except --dataset]
/benchmark --same-machine
/benchmark-all --same-machine
/profile --dataset 18

Comment /benchmark to run the default dataset, or append any arguments accepted by ./benchmark.sh.
Comment /benchmark-long for an 8-vCPU run that defaults to 8 workers and has an eight-hour timeout.
Comment /benchmark-all to start separate workflow runs and result comments for the default dataset plus srj18, srj19, srj20, srj21, and srj23. You may append benchmark arguments such as --pipeline 9; --dataset is not accepted because the command selects every configured dataset.
Append --same-machine to /benchmark or /benchmark-all to compare current main and the PR head sequentially on the same 8-vCPU Blacksmith runner.
Comment /profile --dataset 18 to compare direct Pipeline 7 stage-time percentages between current main and the PR head sequentially on one Blacksmith runner.

Everything after /benchmark, /benchmark-long, or /benchmark-all is safely forwarded to ./benchmark.sh, except --profile-solvers, which enables profile comparison tables, and --same-machine, which enables the paired runner.
Examples: /benchmark --dataset 18 --sample-timeout 2000s, /benchmark --pipeline 10 --dataset 29, /benchmark --pipeline 10 --dataset 29 --sample 1, /benchmark --pipeline 7 --limit 20, /benchmark all 20 --concurrency 8, /benchmark --same-machine, /benchmark-all --pipeline 9 --same-machine, and /benchmark-long --dataset 18.

Use /update-snapshots (or /us) to run BUN_UPDATE_SNAPSHOTS=1 bun test --timeout 120_000 on the PR branch and auto-commit snapshot updates.
Use /usf to read recent failed test files, update and verify their exact CI test shards, and auto-commit only their snapshots. It uses the configured fast benchmark runner by default; use /usf --ubuntu-latest for GitHub-hosted x64 CI parity.

Any PR whose title contains [BENCHMARK TEST] will automatically run one default-dataset benchmark on PR updates; it does not post a PR result comment.

@seveibar seveibar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this doesn't make sense- one connection limits the entire node to particular layers?

also why is __allowedZ being made part of the API?

You're hacking on bus routing to Pipeline9 without a plan

@seveibar seveibar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

meant to RC

@ShiboSoftwareDev
ShiboSoftwareDev force-pushed the fix/pipeline9-multipoint-bus-allowed-layers branch 2 times, most recently from b00ea52 to 3be3cdf Compare August 27, 2026 16:57
@ShiboSoftwareDev ShiboSoftwareDev changed the title Honor multipoint bus layer constraints in Pipeline9 Honor Pipeline9 bus allowed layers per connection Aug 27, 2026
@ShiboSoftwareDev

Copy link
Copy Markdown
Contributor Author

Rewritten from scratch on the real AM62L repro in #2243. The previous first-port/node-wide constraint bug and SRJ __allowedZ approach are gone; constraints now remain per connection, with node-wide restriction only when every connection agrees. The same real-board SVG snapshot is updated to show the fix. Ready for re-review once CI finishes.

@github-actions

Copy link
Copy Markdown

This PR has been automatically marked as stale because it has had no recent activity. It will be closed if no further activity occurs.

@github-actions

Copy link
Copy Markdown

This PR was closed because it has been inactive for 1 day since being marked as stale.

@github-actions github-actions Bot closed this Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants