Files
FESADev/phases/abaqus-input-parser/step0.md
T
2026-06-12 17:15:05 +09:00

66 lines
2.3 KiB
Markdown

# Step 0: io-contract
## Read First
Read these files before editing:
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/SOLVER_AGENT_DESIGN.md`
- `/docs/io-definitions/README.md`
## Task
Create the feature-level I/O contract for the Abaqus input parser at
`/docs/io-definitions/abaqus-input-parser-io.md`.
The contract must explicitly state that FESA supports only the documented
Abaqus keyword subset, not full Abaqus compatibility. Keep this document at a
semantic level. Do not design C++ APIs and do not implement parser code in this
step.
Required scope:
- Model data keywords: `*HEADING`, `*NODE`, `*ELEMENT`, `*NSET`, `*ELSET`,
`*MATERIAL`, `*ELASTIC`, and section keywords needed for V0 bar/truss use.
- History data keywords: `*STEP`, `*STATIC`, `*BOUNDARY`, `*CLOAD`,
`*OUTPUT`, `*NODE OUTPUT`, and `*ELEMENT OUTPUT`.
- Syntax policy for comments beginning with `**`, case-insensitive keywords,
comma-separated parameters and data, blank lines, unsupported keywords, and
parse diagnostics.
- Internal semantic mapping to `Domain`, nodes, elements, sets, materials,
properties, `AnalysisStep`, boundary conditions, loads, and output requests.
- HDF5 and reference CSV comparison schema summary consistent with existing
PRD/architecture documents. Do not create or modify reference artifacts.
## Tests To Write First
No C++ tests are required in this documentation-only step.
## Acceptance Criteria
```powershell
python -m unittest discover -s scripts -p "test_*.py"
python scripts/validate_workspace.py
```
## Verification Procedure
1. Run the acceptance criteria commands.
2. Confirm the contract does not claim full Abaqus compatibility.
3. Confirm every supported keyword has purpose, data requirements, mapping, and
unsupported-case behavior.
4. Update `phases/abaqus-input-parser/index.json` step 0:
- success: `"status": "completed"`, `"summary": "Abaqus input parser I/O contract added"`
- error after three attempts: `"status": "error"`, `"error_message": "<specific error>"`
- blocked: `"status": "blocked"`, `"blocked_reason": "<specific reason>"`
## Forbidden
- Do not implement parser code.
- Do not design C++ APIs.
- Do not run Abaqus, Nastran, or any reference solver.
- Do not generate or modify Abaqus reference CSV files.