Legacy schematic start contact suppresses later crossing markers
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- computer-graphics
Research direction
Start at createSchematicTraceCrossingSegments and reproduce the minimal horizontal-edge input with perpendicular edges at x=0, 4, and 7. Run the trace tests and inspect the labeled SVG snapshot, including horizontal and vertical wires in both directions. Done means the start contact remains non-crossing while crossing segments appear at x=4 and x=7, with endpoints and segment continuity preserved.
Written by the indexing model from the issue text.
Description
The legacy schematic crossing helper skips all later crossings when another perpendicular edge meets the start of the input edge.
At 1fc6c2c400d8ae82875eeabde599dc62f5206883, this minimal input to createSchematicTraceCrossingSegments returns the original edge with zero is_crossing segments:
const edges = [{from: {x: 0, y: 0}, to: {x: 10, y: 0}}];
const otherEdges = [0, 4, 7].map(x => ({
from: {x, y: -1},
to: {x, y: 1},
}));
Expected: preserve the existing no-crossing-at-start behavior at x=0, but still emit crossing segments at x=4 and x=7. Removing only the x=0 edge makes those two crossings appear.
The start contact becomes the nearest candidate. The later coincident-point guard then continues the outer input-edge loop, so the two remaining candidates are never considered. Moving that guard into candidate collection fixes the suppression without changing crossing length or near-end handling.
Scope: this is the helper used by the legacy per-trace renderer. The current default _featureMspSchematicTraceRouting = true bypasses that renderer. I have not demonstrated an effect in default rendering, and this report does not claim one.
A local regression fails before the change (expected two crossings, got zero) and passes afterward for horizontal/vertical wires in both directions, both candidate orders, preserved endpoints, segment continuity and a start-only contact. A labeled SVG snapshot verifies the resulting wire crossings. All 15 trace tests pass with a 30-second timeout; one existing solver test exceeded the default five-second timeout.
Found and validated with AI assistance. A focused fix is ready for review.
- Dominant language
- TypeScript
- Stars
- 58
- Forks
- 203
- Avg merge
- 7h 39m
- Merged PRs (30d)
- 286
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from tscircuit/core
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Similar issues
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 76/100
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
vercel/react-tweet#225 ·