---
name: fesa-io-contract
description: Use when defining FESA solver I/O contracts, Abaqus .inp keyword subsets, internal model mapping, validation rules, HDF5 result schemas, and reference CSV comparison row schemas.
---

# FESA I/O Contract

Use this skill to define exactly what input and output data the solver feature accepts and produces.

## Inputs

Read these first:

- `AGENTS.md`
- `docs/SOLVER_AGENT_DESIGN.md`
- `docs/<feature-id>/requirements.md`
- `docs/<feature-id>/research.md`
- `docs/<feature-id>/formulation.md`
- `docs/<feature-id>/numerical-review.md`
- `docs/<feature-id>/reference-model.md`

## Workflow

1. Define Abaqus Input Scope for the feature-specific `.inp` subset.
2. Define Syntax Policy for keyword lines, data lines, comments, unsupported keywords, and diagnostics.
3. Separate Model Data Mapping from History Data Mapping.
4. Define supported keywords such as `*NODE`, `*ELEMENT`, `*MATERIAL`, `*ELASTIC`, `*BOUNDARY`, `*CLOAD`, `*STEP`, `*OUTPUT`, `*NODE OUTPUT`, and `*ELEMENT OUTPUT` only when required.
5. Define Internal Model Contract at a semantic level without C++ APIs.
6. Define Output HDF5 Schema for authoritative solver output `results.h5`.
7. Define only the FESA HDF5 projection and minimum source-ID/component mapping needed for
   feature-declared blocking or warning-only CSV quantities.
8. Define solver HDF5 units, coordinates, component names, locations, and step/frame identity.
   Do not require duplicated CSV metadata or a CSV schema version for a single-step final-frame case.
9. Define validation rules and open issues.

## Output Contract

Produce or revise `docs/<feature-id>/io.md` with:

- Abaqus Input Scope
- Syntax Policy
- Model Data Mapping
- History Data Mapping
- Internal Model Contract
- Output HDF5 Schema
- FESA HDF5 to Reference CSV Comparison Mapping
- Validation Rules
- Downstream Handoff

## Boundaries

- Do not implement parsers.
- Do not design C++ APIs.
- Do not claim full Abaqus compatibility.
- Do not run Abaqus, Nastran, or any reference solver.
- Do not generate or modify Abaqus reference CSV files.
- Do not approve release readiness.

## Quality Gate

- Every supported keyword has a documented purpose, required data, and unsupported-case behavior.
- HDF5 schema is the authoritative solver output contract and must carry schema version, step/frame identity, units, coordinate system, output location, and component naming.
- Reference comparison must define exact existing CSV paths, source-ID and component columns,
  deterministic matching, and missing/extra/duplicate/nonfinite prechecks. Never match by row order alone.
- Unsupported Abaqus input is explicit: unsupported, ignored-with-warning, or requires user decision.
- The I/O contract is compatible with requirements, formulation, and reference comparison needs.
- The final HDF5 projection maps every approved logical quantity and source identity from `docs/<feature-id>/reference-model.md` to deterministic dataset and CSV component identities.

## Handoff

Return `docs/<feature-id>/io.md`, status, evidence summary, and blockers to Coordinator Agent. Route the final HDF5 projection, parser/schema contracts, exact CSV paths, source-ID/component matching, row prechecks, and tolerance-source constraints to Implementation Planning Agent through Coordinator Agent.
