Repository navigation
Epic: 0.2.0 — drop-in FastHenry replacement (deck compatibility, drop-in CLI, license gate) #76
Description
Overview
Make fasterhenry a drop-in, unambiguously licensed replacement for FastHenry: an existing FastHenry deck, including decks with ground planes, runs unchanged and produces a Zc.mat that matches FastHenry's, from an MIT engine with a CI-enforced permissive dependency tree.
0.1.0 (#9, published 2026-09-27) shipped the validated engine: dense and precorrected-FFT/GMRES solvers, ground planes, skin-depth grading, coupling truncation, MAT v4 and SPICE output. The remaining gap is mostly input compatibility. The deck reader accepts a subset of the public .inp format plus our own ground-plane syntax, so many real decks don't parse.
Milestone Alignment
Tier 1: this is the repository's goal ("a published engine that klt mom and any open EDA flow can depend on without a licensing question", #6), taken from "validated engine" to "replaces FastHenry in existing flows".
Release plan
- 0.1.1: pFFT scaling benchmark and dense/iterative size threshold #44 (PR feat(scaling): pFFT/dense size threshold and the benchmark behind it (#44) #56, dense/iterative threshold, so the CLI scales to large problems), plus the first real run of the tag-triggered Trusted Publishing workflow (PR ci: tag-triggered crates.io release via Trusted Publishing #68). Small patches from this epic that don't break anything (Deck reader: accept rho= (resistivity) and the full documented .units list #70, Deck reader: rw/rh non-uniform filament ratios and wx/wy/wz width direction on segments #71) may ship in 0.1.x too.
- 0.2.0: this epic complete.
Phases
Phase 1: Deck compatibility (parallel)
- Deck reader: FastHenry ground-plane (G) statement syntax, with in-plane nodes, holes and contacts #69 FastHenry ground-plane
Gstatement syntax (largest gap; current syntax kept as an extension) - Deck reader: accept rho= (resistivity) and the full documented .units list #70
rho=resistivity and the full.unitslist - Deck reader: rw/rh non-uniform filament ratios and wx/wy/wz width direction on segments #71
rw/rhnon-uniform filament ratios,wx/wy/wzwidth direction - Deck reader: audit against the public FastHenry format and commit a compatibility table #72 Line-by-line audit against the public format documentation, plus a committed compatibility table
Phase 2: Drop-in use
- CLI: drop-in FastHenry mode (fasterhenry deck.inp writes Zc.mat) and --solver override #73
fasterhenry deck.inpwritesZc.mat;--solveroverride (depends on pFFT scaling benchmark and dense/iterative size threshold #44)
Phase 3: Evidence and license enforcement
- Operator-run: real-deck corpus head-to-head against FastHenry (parse + Z agreement + timing) #74 Operator-run real-deck corpus head-to-head against FastHenry (Blocked by: Deck reader: FastHenry ground-plane (G) statement syntax, with in-plane nodes, holes and contacts #69, Deck reader: accept rho= (resistivity) and the full documented .units list #70, Deck reader: rw/rh non-uniform filament ratios and wx/wy/wz width direction on segments #71, Deck reader: audit against the public FastHenry format and commit a compatibility table #72)
- CI: cargo-deny license allowlist gate for the dependency tree #75
cargo-denylicense allowlist gate in CI - Enable required status checks on main (a stale-green merge landed a failing change that needed a hotfix) #35 Required status checks on
main(operator)
Clean-room rule
Every format issue works from the public input-format documentation and self-authored decks only. No FastHenry/FastCap source, and no text or example decks from the FastHenry distribution committed here. Real-deck comparison (#74) is operator-run, off-repo, with only the numbers committed.
Success Criteria
- Every directive and field in the public format documentation is supported, or rejected with an explicit error and listed in the compatibility table (Deck reader: audit against the public FastHenry format and commit a compatibility table #72).
- The Operator-run: real-deck corpus head-to-head against FastHenry (parse + Z agreement + timing) #74 corpus parses end to end and agrees with FastHenry to the Benchmark: operator-run FastHenry head-to-head + a committed, hardware-normalized perf table #27 standard.
-
fasterhenry deck.inpworks wherefasthenry deck.inpdid (CLI: drop-in FastHenry mode (fasterhenry deck.inp writes Zc.mat) and --solver override #73). - The dependency-license gate is green in CI (CI: cargo-deny license allowlist gate for the dependency tree #75).
- 0.2.0 published through the release workflow.
Activity
loom-fleet-dispatch commentedon Sep 27, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (8 open / 0 closed, discovered via: task-list) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it for completion on every pass and will close it automatically once its last child is closed and every deliverable it names is present onmain.Automated by Champion role
loom-fleet-reader-1 commentedon Sep 28, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (4 open / 4 closed, discovered via: task-list) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it for completion on every pass and will close it automatically once its last child is closed and every deliverable it names is present onmain.(Note: the task list's checkboxes for #69 and #72 are stale — both are now closed, alongside the already-checked #70/#71 — but that is cosmetic drift in the epic body, not something this pass corrects.)
Automated by Champion role
loom-fleet-reader-1 commentedon Sep 28, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (2 open / 6 closed, discovered via: task-list) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it for completion on every pass and will close it automatically once its last child is closed and every deliverable it names is present onmain.Automated by Champion role
loom-fleet-dispatch commentedon Oct 2, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (2 open / 6 closed, discovered via: task-list,prose-reference) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Open: #74 (operator-run real-deck corpus), #35 (required status checks on main, operator).
Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it every pass and will close it automatically once its last child is closed and every named deliverable is present onmain.Automated by Champion role
loom dashboard
loom-fleet-dispatch commentedon Oct 7, 2026
Guide progress check: 7 of the 8 listed phase/task issues are closed. #69 and #72 are closed despite their unchecked boxes; #35 closed through merged PR #140 on 2026-10-05. #74 remains open for operator-run real-deck corpus validation; merged PR #147 is explicitly a partial increment (Part of #74), so it does not complete that issue. Recent compatibility progress includes merged PR #163 on 2026-10-06. Keeping this epic open: its corpus and release success criteria still require completion.
loom-fleet-dispatch commentedon Oct 11, 2026
Guide progress check: 7 of the 8 tasks listed in this epic are closed. Corrected stale checkboxes for #69, #72, and #35 after verifying their issue states. Phase 1: 4/4 closed; Phase 2: 1/1 closed; Phase 3: 2/3 closed. Operator-run corpus validation #74 remains open: merged PR #147 explicitly contributes partial work. Compatibility follow-ups #143, #144, #145, #154, #155, and #156 have open implementation PRs. Release success criteria remain unchecked pending their own evidence and the 0.2.0 release.
loom-fleet-dispatch commentedon Oct 12, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic has 1 open / 7 closed children, discovered via task-list. It remains a tracking umbrella; no duplicate phase issues or structural re-evaluation are needed.
#74 remains open for operator-run corpus validation. Champion will re-check completion once every child is closed and every named deliverable is present on main.
Automated by Champion role
loom dashboard
loom-fleet-dispatch commentedon Oct 16, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (1 open / 7 closed, discovered via: task-list) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Open: #74 (operator-run real-deck corpus; currently
loom:blocked).Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it every pass and will close it automatically once its last child is closed and every named deliverable is present onmain.Automated by Champion role
loom dashboard
loom-fleet-dispatch commentedon Oct 17, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (1 open / 7 closed, discovered via: task-list) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it every pass and will close it automatically once its last child is closed and every named deliverable is present onmain.Automated by Champion role
loom dashboard
loom-fleet-dispatch commentedon Oct 18, 2026
Champion: Epic Already Decomposed — Tracking Only
This epic's children already exist (7 of 8 task-list items closed) but were not created by Champion's own phase-issue flow, so it is a tracking umbrella, not an epic awaiting decomposition. Champion is not creating phase issues for it and is not re-running the pre-decomposition structural criteria against it.
Open: #74 (operator-run real-deck corpus,
loom:blocked).Nothing is required of anyone. The epic stays open and keeps
loom:epic; Champion re-checks it every pass and will close it automatically once its last child is closed and every named deliverable is present onmain.Automated by Champion role
loom dashboard