This workspace uses EasyEDA with the Run API Gateway extension to generate draft schematic pages from calibrated block specs. The automation flow is:
- Export accepted parts from
LIB_POOL_AI. - Compile a YAML block spec against the generated catalog plus Codex-selected fallback parts.
- Generate reports for missing parts, draw readiness, and live checks.
- Keep generated schematic work on
DRAFT_*pages only.
Project constraints are recorded in eda/CONSTRAINTS.md; the operating playbook is eda/WORKFLOW.md. They cover Run API Gateway usage, page safety, visible wiring/layout expectations, cleanup behavior, and human acceptance rules.
npm run eda:status
npm run eda:export-lib
npm run eda:synthesize -- power_5v_3v3
npm run eda:preflight -- power_5v_3v3 --auto
npm run eda:preflight -- power_5v_3v3
npm run eda:compile -- power_5v_3v3
npm run eda:preflight -- low_side_actuator_driver
npm run eda:compile -- low_side_actuator_driver
npm run eda:draw -- low_side_actuator_driver
npm run eda:verify -- DRAFT_LOWSIDE_ACT_<timestamp>
npm run eda:preflight -- interface_expansion_2x8
npm run eda:compile -- interface_expansion_2x8
npm run eda:draw -- interface_expansion_2x8
npm run eda:verify -- DRAFT_IFACE_2X8_<timestamp>
npm run eda:compile -- smoke_fixture
npm run eda:draw -- power_5v_3v3
npm run eda:draw -- power_5v_3v3 --auto
npm run eda:draw -- power_5v_3v3 --candidate eda/reports/<candidate>-synthesize.json
npm run eda:verify -- DRAFT_POWER_5V3V3_<timestamp> --spec eda/reports/<candidate>-synthesize.json
npm run eda:delete-draft -- DRAFT_POWER_5V3V3_<timestamp> --prefix DRAFT_POWER_
npm run eda:test:unit
npm run eda:test:static
npm run eda:test:livenpm run eda:preflight -- <spec> is the real block gate: it checks recorded layout/orientation/route review plus offline route geometry and route straightness before any EasyEDA write. npm run eda:draw -- <spec> is draft-page gated and refuses real blocks that fail route preflight. It creates only DRAFT_* pages, resolves devices through EasyEDA search results at draw time, places components in small batches, then draws explicit visible routes from placement.routes. Real blocks must cover every connection in explicit routes; fanout fallback is limited to smoke_fixture. Generated pages remain pending until human visual acceptance.
npm run eda:synthesize -- <spec> materializes a deterministic V1 candidate for known calibrated roles. The source YAML is not rewritten; the candidate report contains materializedSpec, candidateId, route preflight evidence, and quality counts. --auto makes preflight or draw synthesize first, while --candidate <report.json> reuses a specific materialized candidate.
npm run eda:verify -- <draft> --spec <spec-or-candidate> adds hard equivalence evidence: expected components, pins, nets, and markers are compared with EasyEDA readback. It also stores a rendered screenshot under .easyeda-api/screenshots/ for human review.
smoke_fixture is exempt from route-quality preflight because it is only a temporary API lifecycle test. It must not be used as a schematic-quality example.
EasyEDA page create/rename/delete APIs are currently BETA. The automation confirms page names and delete results by readback instead of trusting boolean return values. Failed route drawing writes a draw-failed report with the page UUID, cleanup attempts, and the exact planned route segments.
eda/specs/: YAML block specs.eda/catalog/lib-pool-ai.json: generated accepted-part catalog.eda/catalog/auto-selected-parts.json: Codex-selected fallback parts;LIB_POOL_AIoverrides matching roles.eda/reports/: generated evidence reports.eda/reports/README.md: report retention policy. JSON reports are temporary runtime evidence and are ignored by Git.schemas/eda-block.schema.json: block spec schema.src/eda/: Node.js automation core..easyeda-api/: ignored runtime locks, draw journals, screenshots, and gateway caches.scripts/easyeda_gateway.ps1: Run API Gateway helper.
Reports and DRC/readback evidence do not replace human visual acceptance in EasyEDA.