krishnax12/watchy-eink-smartwatch

Unfinished prototype (not production-ready): 4 native DRC errors, 2 display-flex intersections, and missing antenna radiator copper remain

Version
1.2.7
License
MIT
Stars
1

reports/tscircuit-pr-candidates.json

{
	"verifiedAt": "2026-10-02",
	"action": "Report only. No GitHub issue, branch, pull request or publication created.",
	"versions": {
		"tscircuit": "0.0.2727",
		"core": "0.0.2048",
		"checks": "0.0.233",
		"browserEval": "0.0.1518"
	},
	"scope": "Five PR candidates observed in the full-board workflow, not five independently isolated root causes. Routing/clearance findings may share a cause. Preserve native checks and do not add manual routes or schematic coordinates as a workaround.",
	"candidates": [
		{
			"id": "routing-constraints",
			"title": "Native autorouting returns traces that violate crystal/via and bus-layer constraints",
			"likelyRepositories": [
				"tscircuit/core",
				"tscircuit/capacity-autorouter"
			],
			"confidence": "Current board-level reproduction; propagation versus solver root cause not isolated.",
			"reproduction": [
				"bun install",
				"bun run route",
				"bun run check:built"
			],
			"expected": "Honor generated crystal max_length=10 and max_via_count=0, and the CRYSTAL_RF bus pcbAllowedLayers=[top].",
			"actual": "XTAL_40M_FB is 11.544172735478213 mm. XTAL_40M_OUT and XTAL_40M_FB each use two vias. Independent inspection also detects a bottom-layer/via route on RF_ANT.",
			"evidence": [
				"routing/CrystalRfRouting.tsx",
				"dist/index/circuit.json",
				"reports/routing-validation.json"
			],
			"isolationNeeded": "Check the current simple-route input, propagation of trace constraints and bus constraints, then reproduce with a reduced crystal/RF circuit. Do not use stale debug input from earlier trials."
		},
		{
			"id": "board-edge-clearance",
			"title": "Autorouter places a via inside the required copper-to-board-edge margin",
			"likelyRepositories": [
				"tscircuit/core",
				"tscircuit/capacity-autorouter"
			],
			"confidence": "Current native final DRC reproduction; router versus cleanup root cause not isolated.",
			"reproduction": [
				"bun run route",
				"bun run check:built"
			],
			"expected": "Via outer copper remains at least 0.2 mm from the board edge.",
			"actual": "pcb_via_19 center x=16.566908505455622 mm, outer diameter=0.35 mm, adjacent board edge x=16.9 mm; gap is approximately 0.15809 mm. Native DRC requires 0.2 mm.",
			"evidence": [
				"dist/index/circuit.json",
				"reports/routing-validation.json",
				"outputs/two-layer-routed-top.png"
			],
			"isolationNeeded": "Reduce the near-edge connection on this board while retaining native via size and board-edge requirements."
		},
		{
			"id": "nonunique-port-selector",
			"title": "Autorouting-path export chooses a non-unique connector pin alias",
			"likelyRepositories": [
				"tscircuit/core"
			],
			"confidence": "Current CLI log and installed implementation agree.",
			"reproduction": [
				"bun run route"
			],
			"expected": "Save route paths using unique numeric pin selectors for distinct pins that legitimately share a GND alias.",
			"actual": "Could not save autorouting paths for subcircuit_source_group_0: PCB port selector is not unique: .J3 > port.GND",
			"detail": "J3 pins 8 and 17 share the real GND signal name. The installed getAutoroutingPhasePcbTracePaths throws when the selected alias does not identify its intended port.",
			"evidence": [
				"imports/FPC24.tsx",
				"node_modules/@tscircuit/core/dist/index.js",
				"dist/index/circuit.json"
			],
			"isolationNeeded": "Build a small connector with two separate GND-labelled pins and export native autorouting paths. This does not invalidate the compiled board's preserved logical netlist, but replay-path export fails."
		},
		{
			"id": "relative-import-resolution",
			"title": "Browser preview fails with separate relative imports sharing the config basename",
			"likelyRepositories": [
				"tscircuit/eval",
				"tscircuit/cli"
			],
			"confidence": "Browser-only full-board observation; isolated import/cache reproduction still needed.",
			"observedError": "schematicSections is not exported by ./config",
			"expected": "schematic/config.ts and pcb/config.ts resolve by their full importer-relative paths.",
			"actual": "Native typecheck/build passed. Browser preview failed until pcb/config.ts was renamed pcb/board-stackup.ts and its imports were updated.",
			"evidence": [
				"schematic/config.ts",
				"pcb/board-stackup.ts",
				"index.circuit.tsx"
			],
			"isolationNeeded": "Use two directories each containing config.ts with different named exports, and compare native versus browser evaluation. Distinguish evaluator caching from dev-server file-key resolution before choosing the PR repository."
		},
		{
			"id": "imported-symbol-artwork-layout",
			"title": "Imported schematic symbol labels remain at local coordinates after automatic placement",
			"likelyRepositories": [
				"tscircuit/core",
				"tscircuit/kicad-to-circuit-json"
			],
			"confidence": "Visible current render and circuit JSON reproduction; import ownership versus layout root cause needs isolation.",
			"reproduction": [
				"bun run route",
				"bun scripts/render-schematic.ts dist/index/circuit.json outputs/two-layer-schematic"
			],
			"expected": "Symbol body, designator and value text move together during native automatic placement.",
			"actual": "M1 body center is approximately (10.84625, -19.15157), but imported M1 label is at (0.2, 0.2) and imported value at (0.2, -0.4). AE1 text is similarly detached. The Controls sheet has excessive empty space above its circuits.",
			"evidence": [
				"symbols/PagerMotor.json",
				"symbols/SWRA117D.json",
				"dist/index/circuit.json",
				"outputs/two-layer-schematic.png"
			],
			"isolationNeeded": "Reduce to one imported motor/antenna symbol with symbol-owned text and matchAdapt layout. Confirm ownership mapping and transform before changing sheet layout."
		}
	],
	"notConfirmedTscircuitBugs": [
		"The previous display-to-ESP32/passive overlaps were caused by this board's backwards CAD rotation and wrong planar offset, now corrected against the official KiCad export. They are not tscircuit bugs. Display/PCB and display/connector model contacts still need verified flex/mating geometry.",
		"EasyEDA C91146 USB mounting/contact registration is corrected using the supplied STEP datums; the native 180-degree rotation is retained. USB/PCB mesh intersection is zero. No converter root cause is claimed; see reports/usb-registration.json for the checked registration and remaining part/tolerance qualification limits.",
		"AE1 currently lacks the twelve copper polygons forming the official SWRA117D antenna. This component definition/import limitation prevents production qualification, but an isolated native copper/net-handling bug has not been established.",
		"Missing courtyards and battery-connector accessibility warnings are part-definition/mechanical qualification problems, not automatically framework bugs.",
		"Previous adjacent-component courtyard and C16/J1 or C27/M1 collisions were board/model placement problems; their retained corrections do not demonstrate framework defects."
	],
	"additionalPolicyLimitations": [
		{
			"title": "Horizontal internal connectors are checked as if they must face the nearest board edge",
			"repository": "tscircuit/checks",
			"confidence": "Installed checkConnectorAccessibleOrientation implementation and a reduced current-J1/board/source-component input confirm this policy. A supported API for internal connector access may require a feature change; not proof the battery connector is mechanically incorrect.",
			"component": "J1",
			"observed": "facing_direction=x-, recommended_facing_direction=x+",
			"expectedUseCase": "An internal battery cable may need to plug in from inside the enclosure rather than through the board edge.",
			"retainedAction": "Warning left visible. No false vertical-insertion metadata, checker patch or forced rotation.",
			"evidence": [
				"reports/display-registration.json",
				"imports/BatteryConnector.tsx",
				"node_modules/@tscircuit/checks/dist/index.js"
			]
		}
	]
}