Delete the old standalone COO assembler test now replaced by targeted coverage
under `test/assemblers/`.
- Drop `test/assemblers/test_dof_based_coo.jl`.
Remove legacy assembler cross-check tests superseded by the DOF-based zero-alloc
regressions and modern assembler modules.
- Delete `test/assemblers/test_assembler_equivalence.jl`.
Explain tier 1 kernel numeric work, tier 2 warmed assembly drivers, and tier 3
IO/UI flexibility orthogonal to the dependency-layer diagram.
- Add definitions, an allocations policy table mapped to `src/` folders, and a
short glossary tying tiers to hot-path expectations.
Apply the same `AbstractTopology{N}` node-count consolidation and LICENSE URL
fix as other volumetric topologies.
- Drop redundant `nnodes`/`export` lines from `wedges.jl`.
Centralize `nnodes` on `AbstractTopology{N}`, fix LICENSE URL, and trim exports
already declared in `exports.jl`.
- Drop redundant `nnodes`/`export` lines from `tetrahedra.jl`.
Use the generic `AbstractTopology{N}` node count, fix LICENSE URL, and remove
duplicate `Seg*` exports.
- Drop redundant `nnodes`/`export` lines from `segments.jl`.
Route node counts through `AbstractTopology{N}`, fix LICENSE URL, and rely on
`exports.jl` for `Quad*` aliases.
- Drop redundant `nnodes`/`export` lines from `quadrilaterals.jl`.
Point readers at missing higher-order pyramids, adopt `LICENSE.md`, drop the
redundant `nnodes` method, and remove duplicate exports.
- Remove `nnodes(::Pyramid{N})` and `export Pyr5` (manifest handles exports).
Rely on `nnodes(::AbstractTopology{N}) = N` from `topology/api.jl`, fix the
LICENSE deep link, and drop redundant `export` lines now covered by
`exports.jl`.
- Remove per-type `nnodes(::Hexahedron{N})` overloads and file-level exports.
Remove the standalone CSC utilities file now superseded by
`src/legacy/sparse_helpers.jl` and dropped from `sparse.jl`.
- Drop `src/sparse/sparsematrixcsc.jl`.
Stop pulling deleted CSC helper includes into `sparse.jl`, adopt SPDX lines,
and drop unused dense helpers that duplicated `Legacy` utilities.
- Document that `SparseMatrixCOO` is legacy-oriented vs raw assembler triplets.
- Use `resize!(..., 0)` for `empty!` and qualify `Base.append!`.
- Remove `get_nonzero_rows`/`get_nonzero_columns` and `resize_sparse` helpers from
this file (see `src/legacy/sparse_helpers.jl`).
Clarify why `integration_points` converts the quadrature `SVector` to a `Tuple`
for downstream destructuring while noting compile-time stack usage.
- Refresh comments around `default_quadrature` / `_quadrature_topology_type`.
Drop the unused topology×basis doc signature and align comments with the
actually implemented order/topology paths plus `_infer_basis_order`.
- Remove stale `AbstractBasis` overload documentation.
- Renumber the topology-only path as the third dispatch tier.
Drop a duplicated example line and remove the commented-out Fluid placeholder
that suggested unfinished velocity dispatch.
- Clarify `Thermal{Dim}` wording; delete stale `Fluid{Dim}` sketch.
Replace the long `Physics{...}` narrative with short placeholders that explain
how `assemble!`/`solve!`/BC hooks are extended by assemblers or Legacy only.
- Document the kernel + assembler workflow as the active surface.
- Point Dirichlet/Neumann reservations at matrix-free BC and load value types.
- Keep generic function declarations for Legacy method attachment.
Replace stale `Physics{...}` API docs with the actual 0.x role: a lightweight
trait root for `Elasticity`/`Thermal` tags and material dispatch, with legacy
`Physics` confined to `JuliaFEM.Legacy`.
- Shorten `AbstractPhysics` docstring and drop obsolete interface/examples.
Delete the Dict-era `Physics` implementation file that duplicated boundary
condition plumbing removed from the modern kernel-centric surface.
- Drop `src/physics.jl` (unused relative to `JuliaFEM.jl` includes).
Document that only structured bricks are supported here and route box mesh
construction through the keyword outer constructor.
- Clarify the `Hex8`-only structured entry point in the docstring.
- Replace positional `Mesh{Hex8}(..., sets...)` with keyword `element_sets` /
`node_sets` arguments.
Use explicit `Mesh{8, Hex8}` signatures, SPDX banner lines, and the keyword
`Mesh{T}(nodes, conn; ...)` outer constructor after the mesh core refactor.
- Update docstrings and method signatures from `Mesh{Hex8}` to `Mesh{8, Hex8}`.
- Build refined meshes via `element_sets`/`node_sets` keywords.
Strip experimental permutation/coloring/ghost/named-ID baggage from the
concrete mesh type, adopt SPDX headers, and route boundary extraction through
an explicit `surface_topology` trait with clearer limitations.
- Replace the legacy banner with SPDX lines and tighten the struct/docstring to
the fields that actually ship today.
- Drop bandwidth/permutation maps, industrial ID dictionaries, and parallel
coloring/ghost sets from `Mesh` plus their helpers.
- Introduce `surface_topology(::Type{<:AbstractTopology})` for Tet/Hex volumes
and guard `extract_surface` with `hasmethod` errors for unsupported solids.
- Remove `create_node_set_from_element_set!` (surface workflows should build sets
explicitly or use topology-aware helpers later).
- Document that `extract_surface` still assumes the first `nnodes(FaceT)` nodes
per volume element describe the boundary patch.