The pack contract
Each solver pack exposes a typed resource pack with solver id, display name, file kinds, primary config files, parsers, validators, command candidates, capability decisions, citations, and benchmark labels. Shipped adapters live under packages/solver-openfoam, packages/solver-su2, and packages/solver-ccx.
Capability decisions
A capability is a typed predicate over the CaseSpec — "compressible flow," "wall-bounded turbulence," "transient with body forces." When a capability fires, the adapter selects the right solver application (simpleFoam, pimpleFoam, rhoSimpleFoam, etc.) and the right templates. Capabilities are inspectable and explained in the report.
Materialization
The adapter receives a CaseSpec, evaluates capabilities, and returns a build plan with workspace file patches. Generated artifacts include a solver-native setup plus a JSON SolverConfigurationRecord (ADR 0014) that records decisions, references, and citations.
Pre-flight validators
Before launching, the pack runs typed validators: mesh-quality gates (ADR 0012), BC completeness, control-scheme compatibility, function-object syntax, marker-tag consistency. A failed validator is a typed MaterializationDiagnostic, not a chat error message.
Live parsers
Each pack ships parsers that turn solver-native log output into typed records — residuals, iteration counts, function-object scalars, warnings. The live-monitor sidecar uses these to drive the UI and the agent's diagnostic context.
Resources before guessing
Solver packs are paired with local resources and skills: agent_resources/openfoam, agent_resources/su2, agent_resources/ccx, plus the skills/openfoam / skills/su2 / skills/ccx guides. When a solver requirement is unfamiliar, retrieve the resource — never invent a one-off shortcut in the prompt.