hrithik18k/open-ring-flex

A flexible wearable PCB integrating inductive battery charging, BLE control with SPI flash and 32 MHz crystal, SAM L10 capacitive touch/wear sensing, haptic MOSFET drive with a large capacitor bank, RF antenna matching, and SWD programming/test connectors.

Version
1.0.4
License
CC-BY-NC-SA-4.0
Stars
0

docs/HIGH_PRIORITY_BUGS.md

# High-priority bugs found during Open Ring recreation

Observed 2026-10-25 with tscircuit 0.0.3016 / @tscircuit/core 0.0.2203. Evidence: `jlcsearch-evidence.json`.

## P1 — exact MCU searches return unrelated components

Fix repository: https://github.com/tscircuit/jlcsearch

Reproduce:
- GET https://jlcsearch.tscircuit.com/api/search?limit=10&q=DA14531
- GET https://jlcsearch.tscircuit.com/api/search?limit=10&q=ATSAML10E16A

Actual: DA14531 returns a BK13C06 connector, a F2412S converter and unrelated parts. ATSAML10E16A returns ADP5070AREZ-R7, a power converter. Expected: matching MPN variants, or an empty result if no eligible stock exists. Returning an unrelated part as a single match can propagate a wrong component into an import/BOM.

Investigation: `cf-proxy/src/search.ts` joins the FTS table and search index by rowid. A stale/misaligned index is a hypothesis, not a confirmed root cause. Verify the deployed database and the synchronization process, rebuild/reconcile the index, and add tests checking that returned MPN/description satisfies the query.

Workaround used: verified JLC/LCSC part numbers and direct `tsci import C... --jlcpcb --use-exact-footprint`; independently inspect each imported MPN, pinout and value.

## P1 — engineering suffixes silently change resistor values

Fix repository: https://github.com/tscircuit/jlcsearch

GET `/resistors/list.json?package=0201&resistance=10k` returns 10-ohm parts. GET the same endpoint with `resistance=10000` returns 10-kohm parts. A silent 1000x error can invalidate an electrical design.

`cf-proxy/src/handlers/index.ts` uses `parseFloat(value)` for `number_tolerance` filtering, discarding the suffix. Parse supported engineering notation into SI units or reject unsupported suffixes with a clear 400 response. Test 10k, 1M, 4.7k, 100nF, 2.2uF and plain numeric SI values.

Workaround used: numeric SI queries, followed by description/value verification. No 10-ohm resistor was substituted for a requested 10-kohm resistor in this board.

## Import compatibility observations (not assigned P1)

- C5548373 crystal import emits a `<crystal>` without `loadCapacitance`, required by current props. Its four pins fail to appear until the instance provides `loadCapacitance="6pF"`. Candidate ownership: https://github.com/tscircuit/easyeda-converter (confirm current import generator ownership before filing).
- Skill documents `<pcbkeepout>`, but installed core registers `<keepout>`. Using the actual native `<keepout>` works. This is a documentation/catalogue mismatch, not evidence that copper keepouts themselves are broken.
- The imported W3008 two-pad footprint does not implement the three-land recommended reference layout. This is library data requiring review, not proven tscircuit routing failure. The board overrides its footprint using native pads based on the original design and manufacturer land pattern while retaining the imported JLC component identity.