Changelog
Curated wave-by-wave history. The full git log is in the private substrate repo; only user-facing changes appear here.
June 2026 — the "aether-t buildability" series
A real-world RF mesh radio design (the aether-t board: 65×56.5 mm 6-layer with 8 wireless radios + PCIe Gen 3 + DDR + 60 GHz radar) exposed every weak spot in the open-source PCB toolchain. Waves 62 through 70 closed each named failure mode in turn.
Wave 70 — CNC G-code (June 3)
- New
cad_cam5::operations::pocket_zigzag_rect— 2.5D pocket clearing with cutter-radius inset. - MCP tool
generate_pocket_gcodereturns RS-274 G-code via the existing RTCP post-processor.
Wave 69 / 69.B — FDTD → NTFF antenna validation (June 3)
cad_sim::antenna::ntff_far_field_at— textbook Balanis §6.7 Huygens-equivalence integral.HuygensSurface::new_box / step_sample / extract_currents— the bridge between the existing FDTD engine and the NTFF math.- The only MIT/Apache FDTD→NTFF antenna pattern code in the open-source ecosystem (openEMS, MEEP, gprMax are all GPL).
Wave 68 — vendor footprint ingest (June 3)
cad_format::kicad::parse_kicad_mod+cad_interop::kicad_mod_to_eda_footprint.- MCP tool
place_vendor_footprint— closes the "140 dangling pads from approximate footprint stubs" failure mode by ingesting vendor-validated.kicad_modlibrary files verbatim.
Wave 67.A / 67.B — partitioned multi-physics coupling (June 3)
cad_sim::coupling::couplewithCouplingScheme::{Explicit,Implicit}Serial.RelaxationMode::{Constant(ω), Aitken, IqnIls{history_max}}— including the preCICE workhorse IQN-ILS quasi-Newton acceleration.- MCP tool
simulate_coupled— runs the canonical linear coupling toy through any scheme + relaxation, reports convergence stats. - The only MIT/Apache partitioned-coupling implementation (preCICE itself is LGPLv3, blocking direct use in MIT/Apache codebases).
Wave 66 — force-directed placement (June 3)
cad_router::placement::force_directed_place— Fruchterman-Reingold iterations with bounds clamping and locked-component support.- MCP tool
run_placement— replaces aether-t's hand-coded 800-lineauto_place.py.
Wave 65 — Djordjevic-Sarkar + Cannonball-Huray 60 GHz (June 2)
cad_sim::signal::DielectricMaterialwithdk_at(f)/tand_at(f)— causal wideband Debye dielectric (Shlepnev 2015 anchor at a single datasheet point).ConductorRoughness::roughness_multiplier(f)— simplified Cannonball-Huray (Simonovich 2015) form: K_SR = 1 + Rz/(Rz + 2δ).microstrip_impedance_at_frequencycomposes Hammerstad-Jensen + D-S + C-H for 60 GHz-accurate impedance + loss.- MCP tool
check_impedance_at_frequency.
Wave 64.A–D — length matching (June 2)
- Group-aware length matching with consensus-target picking.
- Obstacle-aware meander amplitude clamping.
- Capacity-aware segment selection (highest clearance × length).
- Diff-pair coupled tuning (
tune_diff_pair_coupled). - Run-aware splicing fixes the A*-output catastrophic overshoot.
- MCP
run_autorouter(length_match_groups=[...]).
Wave 63.A–F — Kong/Yan/Ozdal LCIS BGA escape (June 2)
- Full Kong/Yan/Ozdal ICCAD 2007 stack: feasibility predicate → LCIS layer assignment → Track + Via emission → ViaOffsetExterior / ViaInPad strategies → Autorouter integration → MCP surface.
- See the algorithm theory.
- MCP
run_autorouter(bgas=[...])+check_bga_escape_feasibility.
Wave 62 — length-match meander insertion (June 2)
length_tuning::tune_route_to_length— picks the longest single-layer segment, inserts a serpentine via the existinggenerate_meander.- MCP
run_autorouter(length_targets=[...]).
Earlier waves
Waves 1–61 (substrate bootstrap, ECAD/CAD/sim domains, MCP server, KiCanvas viewer, etc.) are documented in the private repo's commit history; user-visible additions roll up as they become callable from MCP.