Repository navigation
0.5.0 — the rename: DriftPin becomes AnkusDrive
The project was renamed from DriftPin to AnkusDrive, and published to PyPI.
Under that headline sits the largest release so far: the simulation surface grew
past structural FEM into molding, full-wave EM, granular mechanics, exterior
acoustics and coupled FSI; a design-control layer arrived so an agent can manage
designs rather than files; Windows and Apple Silicon became first-class rather
than aspirational; and the CFD work grew a trust layer, so a number now arrives
with the evidence that it converged.
Upgrading from 0.4.x is a rename, and every surface keeps accepting the old
spelling for exactly this one release. Read
MIGRATION.md first — especially the part about DP_* document
properties, whose failure mode if the shims are ignored is silent.
Added
Simulation — new physics.
- Nonlinear structural analysis via CalculiX: plasticity, large deflection, contact
(#94). - Full-wave FDTD electromagnetics via openEMS — waveguide cutoff, dipole resonance
(#95). - Granular and powder mechanics via YADE (DEM): random close packing, Beverloo
discharge, angle of repose (#96). - Exterior acoustics via Bempp (BEM): monopole radiation, Mie scattering
(#97). - Partitioned fluid–structure interaction via preCICE, coupling OpenFOAM to
CalculiX (#98). - Injection molding end to end: analytic moldability screen, an interFoam fill
solve, the openInjMoldSim OF7 fill case, the packing/cooling stage, and warpage
as a CalculiX thermo-elastic post-step
(#109,
#112,
#114,
#115,
#133). - Optics: lens design and optimization via optiland, non-sequential STL tracing via
KrakenOS (#89). - Laminates: classical lamination theory effective properties, bimetal warp,
first-ply failure (#129).
Simulation — trust and search.
- The virtual wind tunnel: arbitrary solids in external flow, not just the library
of canonical shapes (#253). - A CFD trust layer — convergence history,
checkMesh, measured y+, Richardson
extrapolation and GCI — so a drag number arrives with its own evidence
(#255). - A verified oracle for turbulent external flow: "gated" became per (model, case
family) rather than a single blanket claim
(#266). - Performance contracts:
declare_performance/verify_performance, which then
became gates consulted by merge, substitutability and the builder brief
(#256,
#267). study_submit(DOE / parameter sweeps) andoptimize_submit(vary parameters
until the spec is met, then prove it), the latter running over a recipe on a
main-thread work queue (#258,
#259,
#273).fem_result_probe— stress and displacement at a point or a face
(#126).
Designs, not just parts — the design-control layer.
- Item model and part numbering (#150),
part recipes (#151), a
driving/driven parameter DAG (#153),
revision and lifecycle state (#154),
a Liskov substitutability gate (#155),
variant families from a design table (#156),
declared-input feature recipes (#157),
a project container with a master skeleton and reference-integrity guard
(#158), versioned interface types
with a conformance gate (#159), and
ECO records with where-used impact and baselines
(#160).
Manufacturing and release.
- Sheet metal: bends and flanges, K-factor unfold, flat pattern, layered DXF
(#243). - An honest CNC machining time, and a reason to loosen a tolerance rather than a
bare cost number (#242). - Inspection: ballooned drawings, an inspection plan, an AS9102-shaped FAI report
(#240). release_package— a one-call vendor/RFQ bundle, gated by lifecycle state, ECO
and the title block (#241).- Orderable standard parts: canonical designations and an off-the-shelf catalog
(#244). - Headless 2D drawings: multi-view PDF/SVG/DXF with dimensions, a manufacturability
and legibility gate, lane packing, a title block, an iso pictorial and an
automatic cross-section (#80,
#86,
#87).
Reference corpora.
- Mechanical properties with FreeCAD's own material cards first-class, plus
provenance and basis (#119). - ISO threads and fasteners, bearing C/C0 ratings, ISO 286 fits, stock tables
(#118). - Thermophysical fluid properties via CoolProp
(#117). - A typed units and quantity layer at the tool boundary
(#128).
Platforms.
- Windows is a first-class target: FreeCAD and
ccxdiscovery,doctor, native
solvers, a CI lane, a native bash-free SU2 runner, verified Elmer thermal
families, and the OpenFOAM-backed families routed through WSL
(#206,
#207,
#209,
#214). - Apple Silicon: a Darwin solver path and discovery glob, a per-OS substrate
launcher with Multipass discovery, the coupled FSI solve routed through the VM,
the molding and CFD families reaching the same in-VM trust, and openInjMoldSim
arm64-enabled and live-verified
(#213,
#217,
#218,
#221,
#275,
#286). - A persistent config file as a resolution layer — env →
config.toml→ auto —
because MCP hosts launch with a minimal environment and a shellexportnever
reaches them (#210). - Agent-guided setup: a
setup_statustool, adiagnose_setupprompt, an
ankusdrive://setupresource, and an interactive provisioner with
--print-mcp-config(#211,
#212).
Multi-agent design.
- A motion oracle — does the assembly actually move? (RFC §11.9,
#76) — and
geometry-realizes-declaration, which asks whether the metal backs the claim
(RFC §11.10, #78). - Agents built an oracle-certified functional gearbox, with a train-ratio gate
(#77).
Changed
- The project is named AnkusDrive. Package, console script, environment
variables, config directory, MCP tool prefix, document properties and repository
all changed, with a CI guard that keeps it renamed
(#295,
#297). - The MCP server is safe for a team of agents: the shared
Workeris serialized and
each agent gets an isolated workspace
(#184). - Solver discovery distinguishes "unwired" from "absent", so a solver you have
installed stops being reported as missing
(#181). - All text file I/O opens with an explicit UTF-8 encoding, guarded by a contract
test (#215). - Errors that told you what to do now tell you something you can actually run —
cost_estimate,slice_estimate, andpress_fit_stress, which additionally
refuses an assumed modulus rather than passing an unrun check
(#263,
#268,
#270).
Deprecated
Everything below still works in 0.5.x and is removed in 0.6.0. See
MIGRATION.md.
- The
driftpinconsole script. Installed, prints a rename notice, delegates. DRIFTPIN_*environment variables, promoted to theirANKUSDRIVE_*names at
startup unless the new name is already set.~/.config/driftpin/config.tomland%APPDATA%\driftpin\config.toml, still read
when noankusdriveconfig exists. Writes always go to the new path.- Solvers provisioned under a
DriftPin/solversdirectory, still discovered on
Windows and macOS. DP_*document properties. Reads accept either spelling and a write updates the
old property in place. This is the shim worth understanding: had the old names
simply been dropped, an annotated part would open fine and read back as though it
had never been annotated — no interfaces, no intent, no verdict, and no error.
Removing the fallback in 0.6 will come with an explicit document migration.
Fixed
mcpis pinned below 2.0, which installs cleanly and then breaksankusdrive mcp
by droppingmcp.server.fastmcp
(#285).add_primitivehonoursname=by setting the object's Label
(#250).- A modal solve that never finished is reported as its own outcome rather than as a
floppy part (#252). - The built wheel and sdist are tested for the runtime corpora they must carry, so a
package-data omission fails in CI instead of at a pip-installed user's first
thread()(#251).