Why a phased lifecycle
Real engineering is not one prompt. A trustworthy simulation moves through problem intake, specification, geometry, meshing, conditions, execution, monitoring, error recovery, post-processing, analysis, verification, validation, sensitivity, design iteration, reporting, bundling, approval, and memory curation. SimPilot encodes those 23 steps as typed phases with hard contracts.
Gate / Acceptance / Invalidation
Each step has three contracts:
- Gate — what must be true to enter this step (inputs, classifications, prior records).
- Acceptance — what proves this step is done (typed records, evidence, signatures).
- Invalidation — what retires a step's result when an upstream input changes.
These are not advisory. Solver materialization, run launches, and report publishing check them before proceeding.
Concrete typed records
The lifecycle produces durable records — MeshAttemptEvidence, SolverConfigurationRecord, RunRecord, RecoveryDecisionRecord, EngineeringAnalysisRecord, SolutionVerificationRecord, ValidationCalibrationRecord, SensitivityUQRecord, IterationStudyRecord, ReportPublicationRecord, CaseArtifactBundle, ApprovalPass, MemoryRecord. Together they form the lineage you replay.
The no-blind-rerun discipline
When a run fails, the agent does not retry the same command. ADR 0016 freezes a hypothesis ledger — the agent records what it thought went wrong, what it changed, and why — before any rerun. This keeps diagnosis honest and the report defensible.
Calibration ≠ validation
ADR 0022 enforces a disjointness invariant: data used to calibrate cannot also be used to validate. The platform refuses to publish a report whose validation evidence overlaps its calibration data.
Memory curation closes the loop
Step 23 produces a published MemoryRecord with typed applicability bounds. Future cases that cite this record participate in a cross-case invalidation cascade — when the source case is amended, every downstream citation is flagged.