# Linear Static 3D Euler Beam Reference Models

## Metadata

- feature_id: `linear-static-3d-euler-beam`
- source_requirement: `docs/requirements/linear-static-3d-euler-beam.md`
- source_research: `docs/research/linear-static-3d-euler-beam-research.md`
- source_formulation: `docs/formulations/3d-isoparametric-euler-beam-formulation.md`
- source_numerical_review: `docs/numerical-reviews/linear-static-3d-euler-beam-review.md`
- source_io_definition: `docs/io-definitions/linear-static-3d-euler-beam-io.md`
- approved_design: `docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
- status: `ready-for-implementation-planning`
- owner_agent: `reference-model-agent`
- date: `2026-08-09`
- approved_reference_model: `cantilever-beam-b33`
- approved_reference_schema: `abaqus-cae-report-csv-v0`
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`

이 문서는 구현 전에 필요한 code verification, analytical solution verification 및
approved B33 reference comparison의 모델·artifact 계약을 정의한다. 이 status는 모델과
테스트를 구현 계획으로 넘길 준비가 되었다는 뜻일 뿐, FESA 결과 비교, physics sanity,
release readiness 또는 Abaqus full compatibility의 pass를 뜻하지 않는다.

## Reference Strategy

### Code verification

요소 수식과 solver infrastructure를 외부 reference 값 없이 직접 검사한다. Hermite
보간, `theta_y=-dw/dx`, 4x12 `B`, 12x12 closed-form stiffness, 2-point Gauss, six rigid
modes/rank 6, positive deformation energy, local/global transform, constant local line-load
kernel, constrained partition, deterministic assembly 및 HDF5 schema가 대상이다. Numerical
Review의 `NR-T01`부터 `NR-T11`까지를 구현 전 RED test inventory로 사용한다.

### Analytical solution verification

서로 분리된 axial, torsion, local y bending, local z bending cantilever와 rigidly rotated
beam을 사용한다. 각 모델은 displacement/rotation, reaction, end action, section
resultant, residual 및 해당되는 axial `S11`을 upstream closed form과 비교한다. Nonzero
prescribed displacement는 partition 식을, constant local line load는 formulation-only
equivalent-vector 식을 검증한다. 이 모델들은 Abaqus CSV를 요구하지 않는 code/solution
test fixtures이며 reference artifact bundle로 가장하지 않는다.

### B33 reference comparison

논리 모델 `cantilever-beam-b33`의 exact read-only legacy bundle만 사용하여 FESA
`results.h5`의 displacement, reaction 및 endpoint section resultant를 Abaqus/CAE report
CSV row와 비교한다. Artifact precheck와 exact row-set matching이 먼저 통과해야 하며,
수치 비교는 component-scale mixed tolerance를 사용한다. Axial `S11` output은 필수지만
Abaqus beam stress comparison은 명시적 N/A다.

### Excluded validation scope

실험 자료에 대한 physical validation, Abaqus/Nastran 실행, 새로운 reference 값 생성,
deep-beam/Timoshenko validation, warping, `I12!=0`, instance transform, nonlinear/dynamic
behavior는 이 portfolio에 포함하지 않는다.

## Model Inventory

| model_id | category | purpose | target quantities or tests | required artifacts | status |
| --- | --- | --- | --- | --- | --- |
| `smoke-b33-cli` | smoke | 단일 B33 deck의 parse-to-HDF5와 mandatory output 확인 | CLI, diagnostics, HDF5 paths/identity/atomicity | implementation test fixture; Abaqus CSV N/A | planned |
| `cv-b33-shape-stiffness` | code verification | Hermite, `B`, closed-form stiffness, 2-point Gauss와 signed line-load kernel 격리 | `NR-T01`, `NR-T03`, `NR-T06` | in-process test data; reference bundle N/A | planned |
| `cv-b33-patch-rigid-assembly` | patch test | constant strain/curvature, six rigid modes, rank/energy와 deterministic assembly 확인 | `NR-T02`, `NR-T04`, `NR-T11` | implementation test mesh; Abaqus CSV N/A | planned |
| `an-b33-axial-cantilever` | analytical | axial response와 centroidal axial stress 확인 | `UX`, `RF1`, `N`, `FX`, `S11`, residual | analytical test fixture; Abaqus CSV N/A | planned |
| `an-b33-torsion-cantilever` | analytical | Saint-Venant torsion response 확인 | `URX`, `RM1`, `T`, `MX`, residual | analytical test fixture; Abaqus CSV N/A | planned |
| `an-b33-local-y-bending` | analytical | local `+y` force와 `Iz=I22` bending 확인 | `UY`, `URZ`, `RF2`, `RM3`, `Mz`, `FY`, residual | analytical test fixture; Abaqus CSV N/A | planned |
| `an-b33-local-z-bending` | analytical | local `+z` force와 `Iy=I11`, `theta_y=-w'` 확인 | `UZ`, `URY`, `RF3`, `RM2`, `My`, `FZ`, `S11`, residual | analytical test fixture; Abaqus CSV N/A | planned |
| `an-b33-rotated-space` | analytical | non-axis-aligned 3D beam의 transform와 energy invariance 확인 | transformed displacement/reaction/resultant, work, energy, `NR-T05` | analytical test fixture; Abaqus CSV N/A | planned |
| `an-b33-prescribed-displacement` | analytical | nonzero `dc` effective RHS, full reconstruction와 reaction 확인 | `df`, `dc`, `K*d-F`, `NR-T09` | analytical algebra fixture; Abaqus CSV N/A | planned |
| `an-b33-line-load-kernel` | analytical | formulation-only constant local line-load equivalent vector 확인 | signed 12-component vector, mesh convergence negative/positive control | element unit fixture; `*DLOAD` reference N/A | planned |
| `neg-b33-input-contract` | negative/invalid-input | unsupported/malformed input과 model-validation diagnostic 확인 | B31, second step, transform, nested assembly, `I12`, geometry, property, keyword cases | invalid input fixtures; result CSV N/A | planned |
| `cantilever-beam-b33` | benchmark and regression | approved Abaqus B33 nodal/section rows와 end-to-end 회귀 비교 | displacement, reaction, section resultant; stress N/A | exact legacy four-file bundle | inventory-ready; comparison not run |

`planned` analytical/code rows do not have missing reference artifacts: their acceptance source is
the reviewed formulation or an exact invariant. Only a model intended for Abaqus reference
comparison is subject to the CSV bundle requirement.

## Model Records

### Code and patch verification records

| model_id | analysis and element | material/section | boundary/load | expected target and tolerance | source |
| --- | --- | --- | --- | --- | --- |
| `smoke-b33-cli` | single linear static, two-node `B33` minimum deck | finite positive isotropic `E,nu,A,Iy,Iz,J`, `I12=0` | stable cantilever constraint and one `*CLOAD` | mandatory HDF5 inventory, identity and finite rows; exact schema | requirements and I/O definition |
| `cv-b33-shape-stiffness` | free two-node Euler beam element | unequal positive `EA,GJ,EIy,EIz` to expose component swaps | no global BC/load; direct element states and local line load | matrix/Gauss/line-load normalized error `<=1e-12`; signed components exact by contract | formulation sections 8-13; `NR-T01/T03/T06` |
| `cv-b33-patch-rigid-assembly` | one/multiple identity-oriented B33 elements | positive, well-scaled properties | rigid translation/rotation and constant strain/curvature fields | rigid residual `<=1e-10`, rank 6, positive deformation energy; identical CSR structure and values normalized `<=1e-12` | numerical review `NR-T02/T04/T11` |

### Analytical inventory

All analytical beam records use a straight prismatic B33 member, homogeneous isotropic linear
elasticity with positive `E,G,A,Iy,Iz,J`, `I12=0`, small displacement/rotation and a fixed root.
Signs follow the approved local `(x,y,z)=(t,n1,t x n1)` convention.

| model_id | boundary conditions and load | target quantity/test | analytical target | tolerance/status |
| --- | --- | --- | --- | --- |
| `an-b33-axial-cantilever` | root DOFs fixed; free-end local axial force `Px` | tip `UX`, root `RF1`, constant `N`, outward `FX`, centroid `S11`, residual | `u(L)=Px*L/(E*A)` with force equilibrium and `S11=N/A` | relative `1e-9`; residual normalized `1e-10`; planned |
| `an-b33-torsion-cantilever` | root fixed; free-end local torque `Mx` | tip `URX`, root `RM1`, constant `T`, outward `MX`, residual | `theta_x(L)=Mx*L/(G*J)` with torque equilibrium | relative `1e-9`; residual normalized `1e-10`; planned |
| `an-b33-local-y-bending` | root fixed; free-end force `Py` along local `+y` | tip `UY`, `URZ`, root `RF2/RM3`, endpoint `Mz/FY`, residual | `v(L)=Py*L^3/(3*E*Iz)`, `theta_z(L)=Py*L^2/(2*E*Iz)` | relative `1e-9`; end-sign normalized `1e-12`; planned |
| `an-b33-local-z-bending` | root fixed; free-end force `Pz` along local `+z` | tip `UZ`, `URY`, root `RF3/RM2`, endpoint `My/FZ`, section-point `S11`, residual | `w(L)=Pz*L^3/(3*E*Iy)`, `theta_y(L)=-Pz*L^2/(2*E*Iy)` | relative `1e-9`; end-sign normalized `1e-12`; planned |
| `an-b33-rotated-space` | rigidly rotate the axial/torsion/two-bending fixtures to a non-axis-aligned direction | `R*R^T`, `det(R)`, transformed displacement/reaction/resultant, work and energy | inverse-rotated physical results equal axis-aligned cases; `det(R)=+1` | normalized `1e-12`; planned |
| `an-b33-prescribed-displacement` | stable free/constrained partition with nonzero `dc`, finite `Ff` and `Fc` | effective RHS, `df`, full `d`, constrained reaction and free residual | `rhs=Ff-Kfc*dc`, `Rc=Kcf*df+Kcc*dc-Fc` | normalized `1e-10`; planned |
| `an-b33-line-load-kernel` | element-level constant local `[px,py,pz,mx]`; no parser/CLI `*DLOAD` | all 12 equivalent nodal components and signed end moments | formulation section 12.2 closed-form vector | normalized `1e-12`; planned |

The rotated record covers transformation rather than Abaqus instance transforms. The line-load
record covers only the element kernel and must be paired with a negative parser test proving that
`*DLOAD` remains unsupported.

### Invalid-input record

`neg-b33-input-contract` is a table-driven portfolio. Each case uses the smallest otherwise-valid
single-step deck and changes only the named condition.

| case | expected result |
| --- | --- |
| `TYPE=B31` | `unsupported-element-formulation`; no Euler element |
| second `*STEP` | `unsupported-multiple-step`; no solve/output |
| instance translation or rotation data | `unsupported-instance-transform` |
| nested assembly/dependent mesh semantic | structured unsupported diagnostic |
| `I12!=0` | `unsupported-coupled-section` model failure |
| nonpositive `E,G,A,Iy,Iz,J` | `invalid-beam-property` model failure |
| zero/near-zero length | `invalid-beam-length` at the approved scale-aware boundary |
| zero/tangent-parallel guide vector | `invalid-beam-guide-vector` at the approved projection boundary |
| `*DLOAD` or unlisted model-affecting keyword | `unsupported-keyword`; no distributed-load Domain object |
| malformed row, duplicate entity or dangling reference | input failure with source-backed deterministic diagnostic |
| missing/extra/duplicate/nonfinite/schema- or identity-mismatched reference row | comparison precheck failure before tolerance evaluation |

### Approved reference record: `cantilever-beam-b33`

- category: benchmark and regression
- purpose: end-to-end B33 displacement, reaction and section-resultant comparison
- analysis_type: single linear static
- element_type: ten straight two-node `TYPE=B33` elements, source labels 1 through 10
- geometry: global x-axis cantilever, total length 10 m, eleven source nodes
- material: `E=2.1e11`, `nu=0.3`, SI
- section: `A=1`, `I11=0.0833333`, `I12=0`, `I22=0.0833333`, `J=0.140833`; `n1=(0,1,0)`
- boundary_conditions: source node 1, DOFs 1 through 6 fixed
- load: source node 11, global DOF 3, magnitude `-1e6` N
- model_id: `cantilever-beam-b33`
- logical_schema: `abaqus-cae-report-csv-v0`
- source_commit: `2b34d0b`
- generator: `Abaqus/CAE Learning Edition 2024`
- units: SI
- nodal_coordinate_system: global Cartesian
- section_force_coordinate_system: beam local
- step_name: `Step-1`
- increment: `1`
- step_time: `1.0`
- artifact_status: all four exact paths present; structural precheck observed; FESA comparison not run
- stress: N/A for Abaqus reference comparison; mandatory FESA `S11` remains covered by unit/analytical and HDF5 schema tests

The input and CSV numeric reference values are not recalculated, repaired, rounded, clamped or
otherwise re-derived by this contract.

## Abaqus Input Requirements

The approved input is exactly
`reference/cantilever beam/cantilever beam.inp`. Read-only inspection confirms that it contains
`*ELEMENT, TYPE=B33` and remains within the V0 supported subset plus the documented warning
no-op output-request allowlist. Its single identity instance is `PART-1_1-1`; its canonical result
identity is `(Step-1, frame 0)` from increment 1, step time 1.0.

For later reference models:

- `model.inp` shall use only the feature-approved Abaqus keyword subset.
- Model data shall define nodes, B33 connectivity, sets, material, general section and orientation.
- History data shall define exactly one `*STEP, *STATIC`, supported boundary conditions and nodal
  loads.
- `TYPE=B31`, instance transform, nested assembly, `I12!=0` and `*DLOAD` are not admissible ways
  to create a positive V0 reference model.
- Abaqus output requests may be present for human generation of required CSVs, but they are
  warning no-ops for FESA and never select mandatory HDF5 output.

## Artifact Bundle Contract

### Approved legacy exception

The following exact paths are the entire approved read-only bundle:

```text
reference/cantilever beam/cantilever beam.inp
reference/cantilever beam/cantilever beam displacements.csv
reference/cantilever beam/cantilever beam reactions.csv
reference/cantilever beam/cantilever beam elemental forces.csv
```

These files shall not be generated, modified, renamed, corrected or restored by an agent or
Harness. Their spaces and existing CAE report headers are legacy aliases, not a naming pattern for
new models.

For this approved legacy bundle:

- `metadata.json`: absent-allowed under the project-wide optional metadata policy
- `README.md`: N/A
- stress CSV: N/A because beam stress reference comparison is outside the approved V0 scope

The approved design and this contract record model ID, provenance, generator, source commit,
units, coordinate systems, step/frame identity, logical CSV schema, exact inventory, tolerance
policy and the stress N/A reason. The optional metadata file's absence and the approved legacy
README/stress exclusions therefore do not change the record to `needs-reference-artifacts`.

### Future reference bundles

Every later reference model shall use this structure unless its approved requirement explicitly
marks a quantity N/A:

```text
reference/
  <model-id>/
    model.inp
    metadata.json                     # optional
    <model-id>_displacements.csv
    <model-id>_reactions.csv
    <model-id>_internalforces.csv
    <model-id>_stresses.csv
    README.md
```

CSV names are canonical `<model-id>_*.csv` names. `README.md` is mandatory for later bundles;
`metadata.json` is optional. A quantity CSV may be omitted only when the upstream acceptance
contract explicitly records N/A and gives its verification replacement. Missing required files
or required Reference Model Contract provenance keep that model at `needs-reference-artifacts`.

## Reference Metadata Contract

This document is the required source of truth for the following metadata. A later bundle may
optionally duplicate it in `metadata.json` using at least this schema:

```json
{
  "feature_id": "linear-static-3d-euler-beam",
  "model_id": "<model-id>",
  "artifact_status": "needs-reference-artifacts | ready-for-verification",
  "input_file": "model.inp",
  "abaqus_version": "<exact generator/version>",
  "generation_owner": "<person or approved procedure>",
  "generation_date": "<YYYY-MM-DD>",
  "source_commit": "<commit>",
  "units": "<consistent unit system>",
  "coordinate_system": "<nodal and element result systems>",
  "analysis_type": "single linear static",
  "element_types": ["B33"],
  "step_name": "Step-1",
  "increment": 1,
  "step_time": 1.0,
  "output_requests": ["U", "RF", "SF"],
  "reference_csv_schema_version": "<approved schema>",
  "reference_csv_files": ["<canonical filenames>"],
  "tolerance_policy": "<approved quantity/component policy>",
  "limitations": ["<known limitations and explicit N/A quantities>"]
}
```

No agent may invent unknown provenance fields or mark a bundle ready merely because filenames
exist. An absent `metadata.json` is allowed. If the file exists, inventory it read-only and report
any disagreement with this contract or stored artifacts as an upstream contract/provenance issue.

## Abaqus Reference CSV Requirements

Header comparison trims whitespace around each comma-separated field but does not rename fields.
For every file, `Frame` must normalize exactly from
`Increment 1: Step Time = 1.000` to `(Step-1, frame 0)`, `Part Instance Name` must resolve to the
preserved instance identity, `Node Label` must be a unique source-node station, and all projected
numeric values must be finite.

| exact legacy path | expected trimmed header | unique row key | observed inventory |
| --- | --- | --- | --- |
| `reference/cantilever beam/cantilever beam displacements.csv` | `Frame, Part Instance Name, Node Label, U-U1, U-U2, U-U3, UR-UR1, UR-UR2, UR-UR3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed |
| `reference/cantilever beam/cantilever beam reactions.csv` | `Frame, Part Instance Name, Node Label, RF-RF1, RF-RF2, RF-RF3, RM-RM1, RM-RM2, RM-RM3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed |
| `reference/cantilever beam/cantilever beam elemental forces.csv` | `Frame, Part Instance Name, Node Label, SF-SF1, SM-SM1, SM-SM2, SM-SM3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed |

The wide-row key becomes unique canonical component rows after adding `quantity` and `component`.
Missing, extra, duplicate, nonfinite, header/schema or identity mismatch stops comparison as
`needs-reference-artifacts` or `schema-mismatch`. No bad or near-zero row may be silently dropped.

For the elemental-force CSV, source node station is not an element-end identity. A boundary
station uses its only incident endpoint. An interior station may collapse exactly two endpoints
only when chain connectivity, section and local axes are consistent and the station has no
concentrated force/moment. The two positive-local-x section-cut values must first agree within the
approved component tolerance. If they agree, choose the endpoint with smaller stable internal
element ID; never average. Reversed orientation, branch, section jump, local-axis discontinuity or
loaded interior station requires an element-aware future schema and is a `schema-mismatch` under
this legacy schema.

## Coverage Matrix

The authoritative comparison source is FESA HDF5, not an extracted FESA CSV. Dataset paths use
the canonical V0 step identity.

| verification quantity | requirement ids | model_id | FESA HDF5 dataset | legacy CSV and components | row identity/location | tolerance | verification method | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| nodal displacement/rotation | 003, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/displacement` | `reference/cantilever beam/cantilever beam displacements.csv`: `U-U1/U-U2/U-U3 -> UX/UY/UZ`, `UR-UR1/UR-UR2/UR-UR3 -> URX/URY/URZ` | preserved instance + source node; global nodal | `1e-9 + 1e-6*reference_scale` per displacement/rotation component | HDF5-to-read-only CSV after artifact/row-set precheck | ready for implementation planning; comparison not run |
| nodal reaction force | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RF-RF1/RF-RF2/RF-RF3 -> RF1/RF2/RF3` | preserved instance + source node; global nodal | `1e-3 + 1e-6*reference_scale` per force component | HDF5-to-read-only CSV plus global equilibrium | ready for implementation planning; comparison not run |
| nodal reaction moment | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RM-RM1/RM-RM2/RM-RM3 -> RM1/RM2/RM3` | preserved instance + source node; global nodal | `1e-3 + 1e-6*reference_scale` per moment component | HDF5-to-read-only CSV plus moment equilibrium | ready for implementation planning; comparison not run |
| section axial force | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SF-SF1 -> N` | positive-local-x endpoint projected to eligible source node station | `1e-3 + 1e-6*reference_scale` for `N` | endpoint consistency, deterministic station selection, HDF5-to-CSV | ready for implementation planning; comparison not run |
| section moments/torsion | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SM-SM1 -> My`, `SM-SM2 -> Mz`, `SM-SM3 -> T` | positive-local-x endpoint projected to eligible source node station; beam local | `1e-3 + 1e-6*reference_scale` separately for `My`, `Mz`, `T` | endpoint consistency, deterministic station selection, HDF5-to-CSV | ready for implementation planning; comparison not run |
| equilibrium end action | 031, 035, 043 | analytical models and physics portfolio | `/steps/Step-1/frames/0/element/end_force_local` | Abaqus CSV N/A for direct outward-action comparison | element endpoint `xi=-1,+1`; local outward action `[FX,FY,FZ,MX,MY,MZ]` | analytical normalized `1e-12`; residual `1e-10` | unit/analytical end-sign tests and later physics sanity | planned |
| generalized strain/resultant | 029, 031, 035 | code and analytical models | `/steps/Step-1/frames/0/element/generalized_strain` and `/steps/Step-1/frames/0/element/generalized_resultant` | Abaqus CSV N/A | two Gauss points; beam local | matrix/formulation normalized `1e-12`, analytical relative `1e-9` | formulation/unit/HDF5 schema tests | planned |
| axial stress | 029, 032, 035 | axial/local-z analytical models | `/steps/Step-1/frames/0/element/stress_s11` | stress CSV N/A; Abaqus beam stress reference comparison N/A | element, Gauss point, input section point or `fesa-default` centroid | analytical relative `1e-9`; exact unit/row schema | unit/analytical recovery and HDF5 schema tests | planned; reference N/A |

For every matched reference group,
`reference_scale=max(abs(Abaqus reference rows))` for the same model, step/frame, quantity and
component, and `row_tolerance=absolute_floor+1e-6*reference_scale`. Abaqus values alone set the
scale. A zero scale uses only the floor. Every row decision and max absolute, component-scale
normalized, RMS, norm and worst-row/component metrics must be reported.

### Complete must-requirement coverage

Every approved `must` requirement is connected below to a model/test/quantity or an explicit
non-reference governance check. `N/A` means that an Abaqus CSV is not the applicable evidence;
it does not waive the requirement.

| requirement | model/test/quantity or explicit N/A | planned verification |
| --- | --- | --- |
| `FESA-REQ-LS3DEB-001` | `smoke-b33-cli`; `neg-b33-input-contract` second-step case | positive single-step and structured rejection test |
| `FESA-REQ-LS3DEB-002` | all analytical B33 records | model-validation and formulation scope tests; CSV N/A except approved benchmark |
| `FESA-REQ-LS3DEB-003` | all code/analytical records; displacement/reaction rows | exact DOF/component-order tests |
| `FESA-REQ-LS3DEB-004` | axial, torsion and both bending records | four independent analytical solution tests |
| `FESA-REQ-LS3DEB-005` | `smoke-b33-cli`, `cantilever-beam-b33` | B33 semantic mapping and artifact type precheck |
| `FESA-REQ-LS3DEB-006` | `neg-b33-input-contract` B31 case | exact `unsupported-element-formulation` test |
| `FESA-REQ-LS3DEB-007` | four cantilevers and prescribed-displacement record | DOF 1..6 load/BC and nonzero `dc` tests |
| `FESA-REQ-LS3DEB-008` | `an-b33-line-load-kernel`; negative `*DLOAD` case | closed-form vector and unsupported parser tests; reference CSV N/A |
| `FESA-REQ-LS3DEB-009` | `smoke-b33-cli`, keyword table tests, approved legacy input | exact positive keyword inventory |
| `FESA-REQ-LS3DEB-010` | parser code-verification cases | case/comment/source-label preservation tests; CSV N/A |
| `FESA-REQ-LS3DEB-011` | analytical load/BC decks and invalid arity/target cases | target expansion and row grammar tests |
| `FESA-REQ-LS3DEB-012` | both bending and rotated-space records | property/axis mapping and transform checks |
| `FESA-REQ-LS3DEB-013` | all analytical records; invalid property cases | `G` calculation and positive property tests |
| `FESA-REQ-LS3DEB-014` | `neg-b33-input-contract` geometry cases; `NR-T05` | exact scale-aware length/projection boundary tests |
| `FESA-REQ-LS3DEB-015` | multi-instance semantic fixture and all HDF5/reference identities | stable source/internal identity tests |
| `FESA-REQ-LS3DEB-016` | multi-instance semantic fixture | distinct deterministic identity test; reference CSV N/A |
| `FESA-REQ-LS3DEB-017` | invalid instance-transform case | exact diagnostic test |
| `FESA-REQ-LS3DEB-018` | invalid nested/dependent cases | structured unsupported tests |
| `FESA-REQ-LS3DEB-019` | `cantilever-beam-b33` input and allowlist table cases | warning/no-op and no semantic-effect tests |
| `FESA-REQ-LS3DEB-020` | unknown-keyword negative case and `smoke-b33-cli` | error plus mandatory-output independence test |
| `FESA-REQ-LS3DEB-021` | Domain/AnalysisModel code-verification fixture | non-copy/non-mutation ownership tests; CSV N/A |
| `FESA-REQ-LS3DEB-022` | DOF/scatter/reconstruction code-verification fixture | DofManager ownership and exact mapping tests; CSV N/A |
| `FESA-REQ-LS3DEB-023` | `smoke-b33-cli` and HDF5 state fixture | required/excluded state allocation tests; CSV N/A |
| `FESA-REQ-LS3DEB-024` | `cv-b33-patch-rigid-assembly`, `NR-T11` | repeated thread-count CSR determinism test; CSV N/A |
| `FESA-REQ-LS3DEB-025` | math/adapter dependency fixtures | storage/layout and public dependency review; CSV N/A |
| `FESA-REQ-LS3DEB-026` | orchestration event-trace fixture | exact factorize-before-load order test; CSV N/A |
| `FESA-REQ-LS3DEB-027` | `an-b33-prescribed-displacement` | effective RHS, reconstruction and residual reaction test |
| `FESA-REQ-LS3DEB-028` | `smoke-b33-cli` writer failure/success fixtures | authoritative output and atomicity tests; CSV N/A |
| `FESA-REQ-LS3DEB-029` | HDF5 rows in this Coverage Matrix | exact path/shape/component schema test |
| `FESA-REQ-LS3DEB-030` | `smoke-b33-cli`; `cantilever-beam-b33` provenance | ordinary unit label and external SI metadata tests |
| `FESA-REQ-LS3DEB-031` | all code/analytical models and three legacy CSV quantities | recovery component/location and mandatory-output tests |
| `FESA-REQ-LS3DEB-032` | axial/local-z analytical stress; HDF5 `stress_s11` | stress unit/analytical/schema tests; Abaqus stress comparison N/A |
| `FESA-REQ-LS3DEB-033` | `smoke-b33-cli`, diagnostic negative cases | CLI exit-code/field/order integration tests; CSV N/A |
| `FESA-REQ-LS3DEB-034` | every implementation model/test | per-step RED/GREEN/VERIFY and full MSVC/CTest evidence; model CSV N/A |
| `FESA-REQ-LS3DEB-035` | `NR-T01` through `NR-T11` and analytical inventory | exact numerical criteria in model records |
| `FESA-REQ-LS3DEB-036` | `cantilever-beam-b33` and comparison-policy unit fixtures | Abaqus-only component scale and exact formula tests |
| `FESA-REQ-LS3DEB-037` | same comparison fixtures, including zero-scale groups | exact SI floors and zero-scale tests |
| `FESA-REQ-LS3DEB-038` | malformed reference cases in `neg-b33-input-contract` | pre-tolerance fail-fast and no-clamp/no-drop tests |
| `FESA-REQ-LS3DEB-039` | verification-report schema fixture | every row decision and aggregate/worst metrics test |
| `FESA-REQ-LS3DEB-040` | exact legacy Artifact Bundle Contract | inventory plus `git diff --exit-code -- reference/` process check |
| `FESA-REQ-LS3DEB-041` | approved artifact precheck | four files, B33, exact headers, unique keys, finite values |
| `FESA-REQ-LS3DEB-042` | three comparison quantities and station normalization | exact component mapping, endpoint consistency and no-average tests |
| `FESA-REQ-LS3DEB-043` | gate audit; later physics portfolio | reference execution N/A at this step; enforce build/test -> comparison -> physics -> release order |
| `FESA-REQ-LS3DEB-044` | process/Git diff audit and limitations review | no reference execution/mutation and no out-of-scope support claim |

## Artifact Acceptance Checklist

Read-only inventory inspection on `2026-08-09` established the following pre-implementation facts:

- all four exact legacy paths exist;
- the input declares `TYPE=B33`;
- each CSV trimmed header matches the documented `abaqus-cae-report-csv-v0` inventory;
- each CSV has 11 data rows with a unique `(Frame, Part Instance Name, Node Label)` key;
- every projected numeric field is finite and every row has the header arity;
- generator, source commit, SI units, coordinates, step/increment/time and tolerance provenance are
  recorded in the approved design and this contract;
- absent `metadata.json` is allowed by project-wide policy; legacy `README.md` and stress CSV are accepted N/A exceptions;
- no reference value was recalculated and no comparison was performed.

Before an actual comparison, tooling must repeat all artifact checks, verify the exact Frame and
instance identities, compare the complete projected row sets, and stop on any failure. The Step AC
must also show no working-tree diff under `reference/`. Passing this checklist is not a reference
comparison pass.

## Open Issues and Downstream Handoff

### Open issues

- No missing artifact or user decision blocks implementation planning for the approved legacy
  model.
- `NR-O01` (official oneMKL PARDISO contract) and `NR-O02` (deterministic duplicate-reduction
  algorithm) remain implementation-planning inputs, not reference artifact defects.
- Future reversed, branched, loaded-interior or section-jump reference models require an
  element-aware canonical CSV schema; the legacy node-station schema must not be generalized.

### Implementation Planning Agent

Use this order for tests that must fail before their production implementation:

1. Hermite/DOF/sign and `B` checks.
2. Gauss/closed stiffness, rigid modes, rank and energy.
3. Rotation/local-axis and signed line-load kernel.
4. Axial, torsion, local-y and local-z analytical cantilevers.
5. Nonzero prescribed displacement, SPD/residual and deterministic assembly.
6. Parser invalid-input portfolio and CLI/HDF5 output contract.
7. Legacy artifact precheck, row projection and tolerance/report policy.

Keep reference comparison after the full MSVC build/test gate and do not require new Abaqus
artifacts for code/analytical fixtures.

### Reference Verification Agent

Run `ARTIFACT CHECK -> HDF5 ROW PROJECTION -> EXACT ROW-SET CHECK -> ENDPOINT CONSISTENCY ->
COMPONENT-SCALE COMPARE -> REPORT`. Use only the exact legacy files and the HDF5 paths/component
mappings in the Coverage Matrix. Do not synthesize `SF2/SF3` or stress rows, clamp values, omit
rows, average interior endpoints, or change the approved tolerance.

### Physics Evaluation Agent

Only after reference comparison passes, check global force/moment equilibrium, reaction sign,
displacement direction, bending symmetry, outward end action versus positive-face section
resultant consistency, and normalized residual. The approved reference model is one local-z
bending cantilever; broader physical coverage comes from the analytical portfolio, not an inflated
claim about the single CSV bundle.

### I/O Definition Agent

No upstream contract revision is requested. If a future reference model needs an element-aware row
identity, define and approve that schema separately without changing the read-only legacy aliases.
