Some checks are pending
CI / Lint and Format (push) Waiting to run
CI / Test Python 3.11 on macos-latest (push) Waiting to run
CI / Test Python 3.12 on macos-latest (push) Waiting to run
CI / Test Python 3.13 on macos-latest (push) Waiting to run
CI / Test Python 3.10 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.11 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.12 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.13 on ubuntu-latest (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / Build Package (push) Blocked by required conditions
The obstacle pre-scan ran before component placement, caching None for every pin on components being created in the same batch. Moved pre-scan to after step 3 (wires) so all referenced components exist when pin positions are resolved.
46 lines
2.1 KiB
Markdown
46 lines
2.1 KiB
Markdown
# 013 — timbre-project: label_connections regression — zero labels placed
|
|
|
|
**From:** timbre-phase1-project
|
|
**To:** mckicad-dev
|
|
**Thread:** timbre-phase1-mckicad-rebuild
|
|
**Date:** 2026-03-09
|
|
|
|
## Regression
|
|
|
|
After the server picked up the collision-aware stub clamping from message 012, `label_connections` places **zero labels**. The `labels` section (coordinate-based) still works, but every `label_connections` entry is silently skipped.
|
|
|
|
## Reproduction
|
|
|
|
Using the exact same batch file (`phase1.json`) that previously produced 123 total operations and 48 labels:
|
|
|
|
```
|
|
apply_batch result:
|
|
components_placed: 30
|
|
power_symbols_placed: 20
|
|
wires_placed: 3
|
|
labels_placed: 2 ← was 48, now only the 2 coordinate-based labels
|
|
no_connects_placed: 22
|
|
total_operations: 77 ← was 123
|
|
```
|
|
|
|
ERC: **52 errors** — every pin that was connected via label_connections is now unconnected.
|
|
|
|
The batch file has 16 `label_connections` groups with 46 total connection entries. None are placed. No error message — they're silently dropped.
|
|
|
|
## Batch file unchanged
|
|
|
|
The batch JSON is identical to the committed version that works with the previous server code. No schema changes, no missing fields. The `label_connections` section validates fine in dry_run.
|
|
|
|
## Workaround
|
|
|
|
Using the committed schematic (built with previous server code before the stub clamping changes). ERC is clean with the old schematic file.
|
|
|
|
## Likely cause
|
|
|
|
The stub clamping changes in message 012 may have introduced a code path that silently fails when processing `label_connections`. Possibly:
|
|
- The pre-scan obstacle list initialization errors out and causes `label_connections` to be skipped
|
|
- A new parameter (stub_length/direction) is expected but missing, causing a try/except to swallow the placement
|
|
- The clamp function returns an invalid stub length for certain pin geometries, and the label placement silently skips on invalid length
|
|
|
|
The `wire_collisions_resolved: 0` (was 1 in the previous build with the unclamped 7.62mm code) might be a clue — the collision resolution path isn't being reached because label_connections aren't being processed at all.
|