modify tolerance policy

This commit is contained in:
KOKO\Mimi
2026-08-18 02:29:26 +09:00
parent 123a1b6ccc
commit 624ea4872c
36 changed files with 1909 additions and 672 deletions
+19 -12
View File
@@ -1311,9 +1311,10 @@ $$
가 일치해야 한다. 따라서 이 V0 조건의 equilibrium end action은 요소 끝에 작용하는
outward action이고, endpoint section resultant는 동일 section을 양의 local $x$ 면으로
자른 값이다. Abaqus node-station force row에는 equilibrium end action이 아니라 section
resultant를 동일한 section-cut 부호로 정규화해 비교하며, interior node의 두 endpoint
승인 tolerance 안에서 먼저 일치해야 한다. 승인된 component mapping은
자른 값이다. Abaqus element-endpoint force row에는 equilibrium end action이 아니라
section resultant를 동일한 section-cut 부호로 정규화해 비교한다. Reference의 element
label과 endpoint node label을 HDF5 row에 직접 대응하며 node station collapse, 대표 endpoint
선택 또는 평균은 하지 않는다. 승인된 component mapping은
`SF1 -> N`, `SM1 -> My`, `SM2 -> Mz`, `SM3 -> T`이고, CSV에 없는 transverse
`SF2`, `SF3`는 reference comparison 대상이 아니다.
@@ -1529,19 +1530,25 @@ $$
\sum\mathbf M_{\mathrm{reaction}}\right\|\le\epsilon_M.
$$
승인된 B33 reference row는 같은 model, step/frame, quantity, componentAbaqus
reference 값만 사용해
승인된 B33 reference row는 같은 model, step/frame, quantity, component로 family를 만들고
Abaqus reference 값만 사용해
$$
\operatorname{reference\_scale}=\max_i|r_i|,\qquad
\operatorname{row\_tolerance}=\operatorname{absolute\_floor}
+10^{-6}\operatorname{reference\_scale}
S=\max_i|r_i|
$$
적용한다. 승인된 SI bundle의 displacement/rotation floor는 $10^{-9}$,
force/moment floor는 $10^{-3}$이다. Reference 값을 zero-clamp하거나 row를 제거하지
않으며 missing, extra, duplicate, nonfinite, schema/identity mismatch는 수치 판정 전에
실패한다. 이 reference policy는 위 formulation/analytical tolerance를 대체하지 않는다.
계산한다. $|r_i|\le0.01S$인 near-zero row는 $|f_i-r_i|\le0.01S$로,
나머지 row는 $|f_i-r_i|/|r_i|\le0.05$로 판정한다. 또한
$$
\frac{\sqrt{n^{-1}\sum_i(f_i-r_i)^2}}{S}\le0.01
$$
을 family 전체에서 만족해야 한다. $S=0$이면 모든 FESA 값이 정확히 0일 때만 통과하고,
그렇지 않으면 zero-reference-scale-nonzero-error로 실패한다. 독립적인 절대오차 gate는
사용하지 않는다. Reference 값을 zero-clamp하거나 row를 제거하지 않으며 missing, extra,
duplicate, nonfinite, schema/identity mismatch는 수치 판정 전에 실패한다. 이 reference
policy는 위 formulation/analytical tolerance를 대체하지 않는다.
## 19. Numerical Risks
+47 -46
View File
@@ -12,7 +12,7 @@
- owner_agent: `io-definition-agent`
- date: `2026-08-09`
- authoritative_output: `results.h5`
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
- reference_baseline: exact read-only artifacts under `reference/cantilever beam/`
이 문서는 승인된 V0의 semantic I/O contract만 정의한다. Parser, HDF5 writer,
comparison tooling의 C++ API나 구현 구조는 정의하지 않으며 Abaqus full compatibility를
@@ -336,7 +336,7 @@ CSV는 `SF1/SM1/SM2/SM3`만 제공하고 section-cut result와 비교하므로 `
0으로 만들거나 reference row로 합성하지 않는다. HDF5의 transverse end action은
unit/analytical test와 physics sanity 대상이다.
### Frame, instance, and node-station normalization
### Frame, instance, and element-endpoint normalization
- Legacy `Frame` value `Increment 1: Step Time = 1.000`은 canonical `(Step-1, frame 0)`으로
변환한다. 승인 bundle의 다른 increment/time string은 `schema-mismatch`다.
@@ -344,29 +344,27 @@ unit/analytical test와 physics sanity 대상이다.
`instance_name`과 case-insensitive lookup 후 raw identity 일치 여부를 확인한다.
- `Node Label`은 instance 안의 preserved source node label로 resolve한다. Displacement와
reaction key는 `(model_id,Step-1,0,instance_name,source_node_label,quantity,component)`다.
- Elemental-force CSV는 element label이 없으므로 HDF5 endpoint section resultants를
source node station으로 project한다. Boundary station은 유일한 incident endpoint를 쓴다.
- Interior station collapse는 정확히 두 incident B33 endpoints, 동일 section/local-axis
orientation, 일관된 chain connectivity, 해당 node의 concentrated force/moment가 없는
경우에만 허용한다. 두 positive-face section-cut 값이 아래 승인 component tolerance
안에서 먼저 일치해야 한다.
- Interior 값이 일치하면 stable internal element ID가 작은 endpoint를 deterministic
representative 선택한다. 두 값을 평균하지 않는다. 불일치는 `tolerance-failure`다.
- Reversed connectivity, local-axis discontinuity, section jump, branch 또는 loaded interior
station은 element label 없는 legacy schema로 collapse할 수 없다. 이 approved bundle
밖에서는 element-aware reference row가 필요하며 legacy projection은 `schema-mismatch`
중단한다.
- Elemental-force CSV`Element Label`은 instance 안의 preserved source element label로,
`Node Label`은 해당 B33 connectivity의 정확한 endpoint source node로 resolve한다.
- Section-resultant key는
`(model_id,Step-1,0,instance_name,source_element_label,source_node_label,quantity,component)`다.
한 element에는 connectivity와 일치하는 두 endpoint 행이 정확히 존재해야 한다.
- Missing, extra, duplicate 또는 element-connectivity-mismatched endpoint row는
`schema-mismatch`로 tolerance 전에 실패한다. Source node station collapse,
deterministic representative 선택 또는 endpoint 평균은 사용하지 않는다.
Projected canonical comparison row는 다음 fields를 가진다.
```text
model_id, step_name, frame_index, instance_name, source_node_label,
quantity, component, value, unit_dimension, coordinate_system, hdf5_dataset_path
model_id, step_name, frame_index, instance_name,
[source_element_label], source_node_label, quantity, component, value,
unit_dimension, coordinate_system, hdf5_dataset_path
```
Stable ordering은 quantity inventory order, instance declaration order, stable source node
order, component order다. Approved model ID는 `cantilever-beam-b33`; nodal quantities는
global Cartesian, section resultants는 beam local이다.
`source_element_label`은 section-resultant row에 필수이고 nodal row에는 적용하지 않는다.
Stable ordering은 quantity inventory order, instance declaration order, stable source
node/element-endpoint order, component order다. Approved model ID는 `cantilever-beam-b33`;
nodal quantities는 global Cartesian, section resultants는 beam local이다.
### Row-set precheck and tolerance
@@ -376,27 +374,32 @@ identity-mismatched row가 하나라도 있으면 tolerance 계산 전에 실패
mandatory인 `SF2/SF3` 대응 end action, generalized results와 `S11`은 계약상 비교 대상이
아니므로 extra reference row가 아니다.
Matched rows는 같은 `model_id`, step/frame, quantity, component로 group한다.
Matched rows는 같은 model/case, step/frame, logical quantity, unit dimension, coordinate
system과 blocking behavior의 component family로 group한다. B33 family는 translation
`UX/UY/UZ`, rotation `URX/URY/URZ`, reaction force `RF1/RF2/RF3`, reaction moment
`RM1/RM2/RM3`, section force `N`, section moment `T/My/Mz`다.
```text
reference_scale = max(abs(reference_value_i))
row_tolerance = absolute_floor + 1e-6 * reference_scale
row_pass = abs(fesa_value_i - reference_value_i) <= row_tolerance
S = max(abs(reference_value_i))
error_i = abs(fesa_value_i-reference_value_i)
near_zero_band = 0.01*S
if abs(reference_value_i) <= near_zero_band:
row_pass = error_i <= near_zero_band
else:
row_pass = error_i/abs(reference_value_i) <= 0.05
relative_rms = sqrt(mean(error_i^2))/S
family_pass = all(row_pass) and relative_rms <= 0.01
```
즉 exact policy는 `absolute_floor + 1e-6 * reference_scale`이다. `reference_scale`
read-only Abaqus values만 사용하고 FESA 값으로 조정하지 않는다. Scale이 zero면 relative
term은 zero다. Reference value나 작은 residue를 zero-clamp하지 않고 모든 row를 판정한다.
| approved SI component class | absolute floor |
| --- | ---: |
| displacement and rotation | `1e-9` |
| force and moment | `1e-3` |
Interior endpoint consistency도 해당 CSV quantity/component의 same Abaqus-only scale과
floor를 사용한다. Verification report는 모든 row pass/fail과 quantity별 max absolute
error, component-scale normalized error, RMS error, norm error, worst row/component를
기록한다. 이 reference tolerance는 analytical/formulation tolerance를 대체하지 않는다.
`S`는 read-only Abaqus values만 사용하고 FESA 값으로 조정하지 않는다. 독립적인
absolute-error gate와 zero clamp는 사용하지 않는다. `S=0`이면 모든 FESA 값도 exact
zero일 때 relative RMS를 0으로 기록하고 통과하며, 하나라도 nonzero이면 NaN/Inf 대신
`zero-reference-scale-nonzero-error`로 실패한다. Verification report는 모든 row의 적용
branch와 pass/fail, family identity/components, scale, near-zero band/count, max absolute
error, scale-relative RMS와 worst row/component를 기록한다. 이 reference tolerance는
analytical/formulation tolerance를 대체하지 않는다.
## CLI and Diagnostics Contract
@@ -445,17 +448,15 @@ release approval을 이 status가 의미하지 않는다.
### Resolved numerical-review handoff
`NR-O03-STATION-NORMALIZATION`approved legacy bundle에 대해 unloaded, consistently
oriented two-endpoint interior station만 collapse하고, tolerance check 후 smaller stable
element ID를 선택하는 규칙으로 구체화했다. Reversed/branched/loaded/jumped station은
element-aware reference가 없는 한 비교하지 않는다.
`NR-O03-STATION-NORMALIZATION`2026-08-18 regenerated elemental-force CSV의
`Element Label`로 해소됐다. Comparator는 `(instance, element label, endpoint node label,
component)`를 직접 대응하며 station collapse, 대표 endpoint 선택 또는 평균을 하지 않는다.
### Reference Model Agent
- Exact legacy inventory, generator `Abaqus/CAE Learning Edition 2024`, source commit
`2b34d0b`, external SI provenance와 stress comparison N/A를 계약에 고정한다.
- 추가 reference model은 canonical filenames와 metadata를 사용하며 이 legacy file을
변경하지 않는다.
- Exact legacy inventory, current row schema와 stress comparison N/A를 계약에 고정한다.
- 추가 reference case의 exact paths와 수치 비교 계약은 해당 feature requirement가 정하며,
canonical naming이나 optional metadata를 readiness 조건으로 추가하지 않는다.
### Implementation Planning Agent
@@ -467,7 +468,7 @@ element-aware reference가 없는 한 비교하지 않는다.
### Reference Verification Agent
- Artifact precheck 뒤 HDF5-to-legacy projection, node-station eligibility, row-set equality,
component-scale comparison 순서를 유지한다.
- Artifact precheck 뒤 HDF5-to-CSV source identity projection, direct element-endpoint row-set
equality, common family-scale comparison 순서를 유지한다.
- Missing/extra/nonfinite row를 무시하거나 `SF2/SF3`/stress reference row를 합성하지 않는다.
@@ -191,8 +191,13 @@ Confirmed defects, risks, and open issues are separated.
2. `NR-O02-DETERMINISTIC-REDUCTION`: stable COO sort and duplicate-summation rules are project policy and must be made explicit before NR-T11.
3. `NR-O03-STATION-NORMALIZATION`: reversed connectivity/local-axis orientation and legitimate jumps at loaded interior nodes need an explicit downstream row-normalization/eligibility rule. The legacy baseline may use its documented stable orientation and unloaded interior stations, but mismatch must never be averaged. NR-T07 covers element signs.
2026-08-18 amendment: `NR-O03-STATION-NORMALIZATION` is resolved and superseded for the
approved case. The regenerated elemental-force CSV supplies `Element Label`, so comparison uses
direct `(instance, element label, endpoint node label, component)` identity and never collapses,
selects or averages adjacent endpoints.
No open issue requires formulation revision. NR-O01/NR-O02 are implementation-planning
handoffs; NR-O03 belongs to I/O and reference-model contracts.
handoffs; the resolved NR-O03 identity is fixed by the I/O and reference-model contracts.
## Required Revisions
@@ -206,7 +211,7 @@ handoffs; NR-O03 belongs to I/O and reference-model contracts.
### Reference Model Agent
- Make NR-O03 orientation and unloaded-interior assumptions explicit without modifying the approved legacy artifacts.
- Enforce the resolved NR-O03 direct element-endpoint identity without modifying reference artifacts.
## Downstream Handoff
@@ -10,11 +10,45 @@
- source_io_definition: `docs/linear-static-3d-euler-beam/io.md`
- source_implementation_plan: `docs/linear-static-3d-euler-beam/implementation-plan.md`
- source_implementation_report: `docs/linear-static-3d-euler-beam/implementation-report.md`
- status: `pass-for-physics-evaluation`
- historical_status: `pass-for-physics-evaluation`
- current_status: `pass-for-physics-evaluation`
- superseded_on: `2026-08-18`
- revalidated_on: `2026-08-18`
- owner_agent: `reference-verification-agent`
- date: `2026-08-09`
- review_fix_date: `2026-08-10`
The 2026-08-09 evidence below is preserved as a historical record of the former 11-station,
component-scale comparison. ADR-022 and the regenerated 20-row element-endpoint CSV supersede
that identity and tolerance. The following revalidation is the current reference-gate evidence.
## 2026-08-18 Common-policy Revalidation
`cmake --build .harness/build --config Debug` passed, followed by
`ctest --test-dir .harness/build -C Debug --output-on-failure`: 214/214 tests passed.
The B33 reference test generated
`.harness/build/reference/cantilever-beam-b33/comparison.json` from the exact read-only
reference paths.
- exact canonical rows: 212 = 66 displacement + 66 reaction + 80 direct element-endpoint
section-resultant rows
- exact families: 6; all row gates and family RMS gates passed
- direct section identity: 20 endpoint rows, 10 B33 elements x 2 connectivity-matched endpoints
- warnings, identity/schema/nonfinite failures: 0
- overall verdict: `passed=true`
| family | rows | scale | near-zero rows | max absolute error | scale-relative RMS |
| --- | ---: | ---: | ---: | ---: | ---: |
| translation `UX/UY/UZ` | 33 | `1.90476272e-2` | 23 | `5.333229170789711e-10` | `8.459623217000381e-9` |
| rotation `URX/URY/URZ` | 33 | `2.85714399e-3` | 23 | `1.000013943180944e-10` | `1.1723557271997219e-8` |
| reaction force `RF1/RF2/RF3` | 33 | `1.0e6` | 32 | `8.195638656616211e-7` | `2.0922817757699256e-13` |
| reaction moment `RM1/RM2/RM3` | 33 | `1.0e7` | 32 | `5.0514936447143555e-6` | `8.811160558471221e-14` |
| section force `N` | 20 | `0` | 20 | `0` | `0` |
| section moment `T/My/Mz` | 60 | `1.0e7` | 41 | `1.2499958951957524e-1` | `2.2910664449287597e-9` |
All values above come from the generated JSON ledger. The historical report body starts below
and must not be read as the current identity/tolerance evidence.
The prerequisite build/test report has status
`pass-for-reference-verification`. This report applies only the approved Abaqus
B33 reference tolerance. It does not approve physics sanity or release readiness.
@@ -12,9 +12,10 @@
- status: `ready-for-implementation-planning`
- owner_agent: `reference-model-agent`
- date: `2026-08-09`
- amended_on: `2026-08-18`
- approved_reference_model: `cantilever-beam-b33`
- approved_reference_schema: `abaqus-cae-report-csv-v0`
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
- approved_reference_identity: direct source-node and element-endpoint rows
- reference_baseline: exact current files under `reference/cantilever beam/`
이 문서는 구현 전에 필요한 code verification, analytical solution verification 및
approved B33 reference comparison의 모델·artifact 계약을 정의한다. 이 status는 모델과
@@ -45,7 +46,7 @@ test fixtures이며 reference artifact bundle로 가장하지 않는다.
논리 모델 `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은 필수지만
수치 비교는 ADR-022의 common family-scale tolerance를 사용한다. Axial `S11` output은 필수지만
Abaqus beam stress comparison은 명시적 N/A다.
### Excluded validation scope
@@ -136,8 +137,8 @@ single-step deck and changes only the named condition.
- 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`
- historical_schema_record: `abaqus-cae-report-csv-v0` for the 2026-08-09 inventory only
- historical_source_commit: `2b34d0b` for the 2026-08-09 inventory only
- generator: `Abaqus/CAE Learning Edition 2024`
- units: SI
- nodal_coordinate_system: global Cartesian
@@ -145,7 +146,7 @@ single-step deck and changes only the named condition.
- step_name: `Step-1`
- increment: `1`
- step_time: `1.0`
- artifact_status: all four exact paths present; structural precheck observed; FESA comparison not run
- artifact_status: all four exact paths present; 20-row element-endpoint comparison passed on 2026-08-18
- 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
@@ -193,93 +194,44 @@ For this approved legacy bundle:
- `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`.
This contract records the exact required paths, row identities, comparison quantities, tolerance
policy and the stress N/A reason. Historical schema/provenance fields are retained as dated
inventory only and are not readiness gates. The optional metadata file's absence and the approved
legacy README/stress exclusions do not change the record to `needs-reference-artifacts`.
### Future reference bundles
### Later reference cases and optional metadata
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.
Each later feature requirement names its exact input and comparison CSV paths, required row
identity/components and N/A quantities. Canonical filenames, `README.md`, `metadata.json`,
generator/version, provenance, duplicated unit/schema fields and a portfolio-wide directory layout
are not readiness gates unless that feature explicitly makes one part of its numerical comparison
contract. No agent may invent unknown provenance. If optional metadata exists, inspect it read-only
and report disagreement without rewriting the reference artifacts.
## 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
preserved instance identity, every declared source identity must be unique, 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 |
| `reference/cantilever beam/cantilever beam elemental forces.csv` | `Frame, Part Instance Name, Element Label, Node Label, SF-SF1, SM-SM1, SM-SM2, SM-SM3` | `(Frame, Part Instance Name, Element Label, Node Label)` | 20 rows; 10 B33 elements x 2 connectivity-matched endpoints; 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.
For the elemental-force CSV, `(Part Instance Name, Element Label, Node Label)` is the source
element-endpoint identity. Each B33 element must have exactly two rows whose node labels match its
ordered input connectivity. Every row maps directly to the corresponding HDF5
`[element,endpoint,N/T/My/Mz]` row. Missing, extra, duplicate or connectivity-mismatched endpoint
identity fails as `schema-mismatch` before tolerance. The comparator does not collapse endpoints to
a node station, choose a representative or average values.
## Coverage Matrix
@@ -288,20 +240,20 @@ 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 |
| 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 | common translation/rotation family policy | HDF5-to-read-only CSV after artifact/row-set precheck | passed 2026-08-18 |
| 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 | common reaction-force family policy | HDF5-to-read-only CSV plus global equilibrium | passed 2026-08-18 |
| 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 | common reaction-moment family policy | HDF5-to-read-only CSV plus moment equilibrium | passed 2026-08-18 |
| 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` | direct instance + source element + endpoint node; beam local | common section-force family policy | direct HDF5-to-endpoint CSV comparison | passed 2026-08-18 |
| 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` | direct instance + source element + endpoint node; beam local | common section-moment family policy | direct HDF5-to-endpoint CSV comparison | passed 2026-08-18 |
| 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.
For every matched family, `S=max(abs(Abaqus reference rows))` uses only read-only reference values.
Rows with `abs(reference)<=0.01*S` use `error<=0.01*S`; other rows use relative error `<=0.05`;
the family also requires `RMS(error)/S<=0.01`. A zero-scale family requires exact-zero FESA values.
Every row branch/decision and family scale, near-zero band/count, max absolute error,
scale-relative RMS, worst row/component and zero-scale diagnostic must be reported.
### Complete must-requirement coverage
@@ -346,19 +298,20 @@ it does not waive the requirement.
| `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-036` | `cantilever-beam-b33` and comparison-policy unit fixtures | exact family membership and Abaqus-only scale tests |
| `FESA-REQ-LS3DEB-037` | same comparison fixtures, including boundary and zero-scale families | near-zero, relative-row, scale-relative RMS 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-039` | verification-report schema fixture | every row branch/decision and family 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-042` | three comparison quantities and direct endpoint projection | exact component mapping plus missing/extra/duplicate/connectivity-mismatch endpoint 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:
The following is historical 2026-08-09 pre-implementation inventory evidence. Its 11-row
elemental-force observation is superseded by the 2026-08-18 regenerated 20-row endpoint file:
- all four exact legacy paths exist;
- the input declares `TYPE=B33`;
@@ -370,6 +323,11 @@ Read-only inventory inspection on `2026-08-09` established the following pre-imp
- 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.
Read-only inspection on `2026-08-18` confirms that the elemental-force CSV has 20 rows,
exactly two connectivity-matched endpoint rows for each of the 10 B33 elements. Displacement and
reaction CSVs remain 11-row source-node tables. The fresh comparison passed on 2026-08-18;
current metrics are recorded in `reference-comparison.md`.
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
@@ -383,8 +341,8 @@ comparison pass.
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.
- Future reversed, branched, loaded-interior or section-jump reference models use the same
element-endpoint identity and require their own approved reference coverage.
### Implementation Planning Agent
@@ -403,8 +361,8 @@ 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
Run `ARTIFACT CHECK -> HDF5 ROW PROJECTION -> EXACT ROW-SET CHECK -> DIRECT ENDPOINT MATCH ->
COMMON FAMILY-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.
+7 -1
View File
@@ -19,11 +19,17 @@
- reference_model_id: `cantilever-beam-b33`
- reference_schema: `abaqus-cae-report-csv-v0`
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
- status: `ready-for-release`
- historical_status: `ready-for-release`
- current_status: `superseded-pending-revalidation`
- superseded_on: `2026-08-18`
- owner_agent: `release-agent`
- date: `2026-08-10`
- final_review_source_head: `b7a1258ce0f36a85b888e23470cf9d936a7595cd`
The readiness evidence below is historical. The 2026-08-18 build/reference revalidation passed,
but fresh physics and release audits are still required before a current `ready-for-release`
verdict may be issued.
This is an internal feature-readiness verdict. It authorizes no publish, deploy, package, tag,
push, external release, or reference-artifact operation.
@@ -10,7 +10,7 @@
- approved_design: `docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
- approval_basis: design `status: approved`, user approval on `2026-08-08`, and amendment on `2026-08-09`
- source_formulation: `docs/linear-static-3d-euler-beam/formulation.md`
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
- reference_baseline: exact read-only artifacts under `reference/cantilever beam/`
## Purpose
@@ -113,7 +113,7 @@ compatibility, 새로운 수학 계약 또는 새로운 구현 정책을 추가
- nodal_displacement: required, global six components, HDF5-to-Abaqus CSV comparison
- reaction: required, global six components plus global force/moment equilibrium
- equilibrium_end_action: required, local endpoint six components; unit/analytical and physics tests
- section_resultant: required, endpoint `[N,T,My,Mz]`, node-station-normalized reference comparison
- section_resultant: required, endpoint `[N,T,My,Mz]`, element-endpoint reference comparison
- generalized_strain_and_resultant: required at two Gauss points; formulation and schema tests
- stress: axial `S11` required; Abaqus reference comparison N/A
- residual: required, free-DOF and normalized global equilibrium checks
@@ -122,21 +122,22 @@ compatibility, 새로운 수학 계약 또는 새로운 구현 정책을 추가
## Tolerance Policy
- **FESA-REQ-LS3DEB-036** — The approved B33 reference comparison shall group rows by the same model, step/frame, quantity, and component, compute `reference_scale` only from read-only Abaqus values, and apply `absolute_floor + 1e-6 * reference_scale` to every matched row.
- **FESA-REQ-LS3DEB-037**For the approved SI bundle, displacement and rotation shall use `absolute_floor=1e-9`, force and moment shall use `absolute_floor=1e-3`, and a zero component scale shall use the applicable absolute floor alone.
- **FESA-REQ-LS3DEB-036** — The approved B33 reference comparison shall group rows into translation, rotation, reaction-force, reaction-moment, section-force and section-moment families and compute each family scale `S=max(abs(reference))` only from read-only Abaqus values.
- **FESA-REQ-LS3DEB-037**A matched row with `abs(reference)<=0.01*S` shall pass when `abs(fesa-reference)<=0.01*S`; every other row shall pass when its relative error is at most `0.05`; each family shall also satisfy `RMS(error)/S<=0.01`. No independent absolute-error gate is used, and a zero-scale family passes only when every FESA value is exactly zero.
- **FESA-REQ-LS3DEB-038** — Reference values shall not be zero-clamped and rows shall not be dropped; missing, extra, duplicate, nonfinite, schema-mismatched, or identity-mismatched rows shall fail before tolerance evaluation.
- **FESA-REQ-LS3DEB-039** — The verification report shall record every row decision and maximum absolute error, component-scale normalized error, RMS error, norm error, and worst row/component for each compared quantity.
- **FESA-REQ-LS3DEB-039** — The verification report shall record every row decision and comparison branch, family identity/components, reference scale, near-zero band/count, maximum absolute error, scale-relative RMS, worst row/component and zero-scale diagnostic for each compared family.
## Reference Artifact Requirements
The approved logical model is `cantilever-beam-b33`, schema is
`abaqus-cae-report-csv-v0`, source commit is `2b34d0b`, generator is
The approved logical model is `cantilever-beam-b33`. The input header records
`Abaqus/CAE Learning Edition 2024`, and the coordinate/output contract is global Cartesian
nodal output plus beam-local section-force output at `Step-1`, increment 1, step time 1.0.
The historical `abaqus-cae-report-csv-v0` and source commit `2b34d0b` inventory is not a
readiness requirement for the regenerated elemental-force CSV.
- **FESA-REQ-LS3DEB-040** — The V0 reference baseline shall use the exact read-only files `reference/cantilever beam/cantilever beam.inp`, `reference/cantilever beam/cantilever beam displacements.csv`, `reference/cantilever beam/cantilever beam reactions.csv`, and `reference/cantilever beam/cantilever beam elemental forces.csv` without rename, rewrite, correction, or restoration; absent `metadata.json` is allowed by project-wide policy and `README.md` is N/A for this approved legacy bundle.
- **FESA-REQ-LS3DEB-041** — Before comparison, artifact validation shall confirm all four files, `TYPE=B33`, expected CAE report headers, unique row keys, and finite values; failure shall be classified as `needs-reference-artifacts` or `schema-mismatch` and comparison shall not start.
- **FESA-REQ-LS3DEB-042** — Reference verification shall compare displacement by source-node identity (`U1/U2/U3/UR1/UR2/UR3`), reaction by source-node identity (`RF1/RF2/RF3/RM1/RM2/RM3`), and node-station-normalized section resultant by `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; adjacent interior endpoints shall first agree within approved tolerance and shall not be averaged to hide a mismatch.
- **FESA-REQ-LS3DEB-042** — Reference verification shall compare displacement by source-node identity (`U1/U2/U3/UR1/UR2/UR3`), reaction by source-node identity (`RF1/RF2/RF3/RM1/RM2/RM3`), and section resultants by direct `(instance, element label, endpoint node label, component)` identity using `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; missing, extra, duplicate or connectivity-mismatched endpoint rows shall fail before tolerance and shall not be collapsed or averaged.
- **FESA-REQ-LS3DEB-043** — Reference comparison shall run only after build/test passes; physics sanity shall run only after reference comparison passes and shall check global force/moment equilibrium, reaction sign, displacement direction, symmetry, element section-force consistency, and normalized residual; release readiness shall require all prior gate evidence and known limitations.
- **FESA-REQ-LS3DEB-044** — FESA agents and Harness shall not execute Abaqus, Nastran, or another reference solver and shall not create, modify, rename, or restore reference artifacts; release documentation shall not claim support for any Out Of Scope behavior.
@@ -180,13 +181,13 @@ nodal output plus beam-local section-force output at `Step-1`, increment 1, step
| FESA-REQ-LS3DEB-033 | The CLI shall support `fesa.exe <model.inp> --output <results.h5>`, default output to the current directory's `results.h5`, use exit codes `0=success`, `2=usage`, `3=input`, `4=model`, `5=solver`, `6=HDF5`, and emit `severity`, `code`, `file`, `line`, `keyword`, `entity_identity`, and `message` diagnostics to stderr in deterministic order. | output | Stabilize automation and failure classification. | Approved design §10 | must | CLI integration and diagnostic ordering tests | Default/explicit output works and every failure class returns its exact code and complete ordered fields. | Exact codes, fields, and order | io-definition-agent; implementation-planning-agent | approved |
| FESA-REQ-LS3DEB-034 | Every production C++ behavior shall be developed in one step as GoogleTest `RED -> GREEN -> VERIFY`, with a related C++ test file, focused CTest evidence, full MSVC x64 Debug build/CTest evidence, at least one discovered test, and no new warning under the FESA target's `/W4 /WX` policy. | verification | Enforce project TDD and warning policy. | Approved design §§11.1, 11.4; ADR-012 | must | Implementation report; build/CTest logs | The related test fails first, then focused/full tests pass, discovery finds tests, and FESA emits no warning. | Zero test failures and new warnings | implementation-planning-agent; implementation-agent; build-test-executor-agent | approved |
| FESA-REQ-LS3DEB-035 | Numerical tests shall satisfy normalized `1e-12` for stiffness symmetry and two-point-Gauss/closed-form agreement, normalized `1e-10` for rigid-mode and linear-system residual, and relative `1e-9` for analytical solutions, while checking six rigid modes, rank 6, positive deformation energy, transformation orthogonality/energy invariance, prescribed-displacement recovery, and axial/torsion/two-plane bending benchmarks. | verification | Detect sign, integration, rank, and transform defects. | Approved design §§11.2, 11.3; formulation §18 | must | Unit, analytical, and orchestration tests | Every listed invariant and analytical case passes at its stated threshold. | `1e-12` matrix; `1e-10` residual; `1e-9` analytical | formulation-agent; numerical-review-agent; implementation-planning-agent | approved |
| FESA-REQ-LS3DEB-036 | The approved B33 reference comparison shall group rows by the same model, step/frame, quantity, and component, compute `reference_scale` only from read-only Abaqus values, and apply `absolute_floor + 1e-6 * reference_scale` to every matched row. | tolerance | Give zero and nonzero rows one deterministic rule. | Approved design §11.3; ADR-014 | must | Comparison unit/integration test; report review | Every group uses the Abaqus-only maximum absolute scale and every matched row uses the exact formula. | Relative coefficient `1e-6` | reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-037 | For the approved SI bundle, displacement and rotation shall use `absolute_floor=1e-9`, force and moment shall use `absolute_floor=1e-3`, and a zero component scale shall use the applicable absolute floor alone. | tolerance | Preserve dimensional meaning near zero. | Approved design §11.3; ADR-014 | must | Comparison tests with zero/near-zero rows | Each quantity uses its exact SI floor and zero-scale groups use no relative contribution. | SI `1e-9` displacement/rotation; `1e-3` force/moment | reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-036 | The approved B33 reference comparison shall group rows into translation, rotation, reaction-force, reaction-moment, section-force and section-moment families and compute `S=max(abs(reference))` from read-only Abaqus values. | tolerance | Give zero-like components a dimensionally compatible reference scale. | Common tolerance design; ADR-022 | must | Comparison unit/integration test; report review | Every family uses the exact declared components and Abaqus-only maximum scale. | Family scale | reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-037 | Near-zero rows shall use the `0.01*S` fallback, other rows relative error `0.05`, and every family scale-relative RMS `0.01`; zero-scale families require exact-zero FESA values and no independent absolute gate is used. | tolerance | Stabilize zero-like rows while retaining row and aggregate checks. | Common tolerance design; ADR-022 | must | Boundary, zero-scale and RMS comparison tests | Every row and family uses the exact common constants and branch rules without NaN/Inf. | `0.01`, `0.05`, `0.01` | reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-038 | Reference values shall not be zero-clamped and rows shall not be dropped; missing, extra, duplicate, nonfinite, schema-mismatched, or identity-mismatched rows shall fail before tolerance evaluation. | tolerance | Prevent false passes through omission or clamping. | Approved design §§11.3, 12; ADR-014 | must | Negative comparison tests | Every listed invalid case fails before numeric comparison and zero values remain unchanged. | No ignored invalid rows | reference-verification-agent | approved |
| FESA-REQ-LS3DEB-039 | The verification report shall record every row decision and maximum absolute error, component-scale normalized error, RMS error, norm error, and worst row/component for each compared quantity. | tolerance | Make the pass/fail decision auditable. | Approved design §11.3; ADR-014 | must | Verification report schema/review | Per-row decisions and all required aggregate/worst metrics are present for every quantity. | Report completeness | reference-verification-agent; release-agent | approved |
| FESA-REQ-LS3DEB-039 | The verification report shall record every row branch/decision, family identity/components, scale, near-zero band/count, maximum absolute error, scale-relative RMS, worst row/component and zero-scale diagnostic. | tolerance | Make the pass/fail decision auditable. | Common tolerance design; ADR-022 | must | Verification report schema/review | Per-row decisions and all required family metrics are present without nonfinite report values. | Report completeness | reference-verification-agent; release-agent | approved |
| FESA-REQ-LS3DEB-040 | The V0 reference baseline shall use the exact read-only files `reference/cantilever beam/cantilever beam.inp`, `reference/cantilever beam/cantilever beam displacements.csv`, `reference/cantilever beam/cantilever beam reactions.csv`, and `reference/cantilever beam/cantilever beam elemental forces.csv` without rename, rewrite, correction, or restoration; absent `metadata.json` is allowed by project-wide policy and `README.md` is N/A for this approved legacy bundle. | reference | Protect the approved correctness baseline. | Approved design §12; ADR-010, ADR-014 | must | Artifact inventory; Git diff review | Exact filenames exist and no reference file is added, removed, renamed, or content-modified. | Exact path/content identity | reference-model-agent; reference-verification-agent; release-agent | approved |
| FESA-REQ-LS3DEB-041 | Before comparison, artifact validation shall confirm all four files, `TYPE=B33`, expected CAE report headers, unique row keys, and finite values; failure shall be classified as `needs-reference-artifacts` or `schema-mismatch` and comparison shall not start. | reference | Detect stale B31 or malformed evidence. | Approved design §§6.3, 12 | must | Artifact-check integration test | All checks pass before comparison and every failure uses an approved classification. | Exact inventory and schema | reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-042 | Reference verification shall compare displacement by source-node identity (`U1/U2/U3/UR1/UR2/UR3`), reaction by source-node identity (`RF1/RF2/RF3/RM1/RM2/RM3`), and node-station-normalized section resultant by `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; adjacent interior endpoints shall first agree within approved tolerance and shall not be averaged to hide a mismatch. | reference | Compare equivalent quantities despite legacy station rows. | Approved design §§8.2, 12 | must | Reference comparison test/report | All components match by source identity and interior endpoints pass before deterministic representative selection. | Requirements 036 and 037 policy | io-definition-agent; reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-042 | Reference verification shall compare displacement and reaction by source-node identity and section resultants by direct `(instance, element label, endpoint node label, component)` identity using `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; endpoint rows shall not be collapsed or averaged. | reference | Preserve the source identity supplied by the element-endpoint CSV and HDF5. | Common tolerance design; ADR-022 | must | Reference comparison test/report | All 20 B33 endpoint rows map one-to-one and malformed endpoint identity fails before tolerance. | Requirements 036 and 037 policy | io-definition-agent; reference-model-agent; reference-verification-agent | approved |
| FESA-REQ-LS3DEB-043 | Reference comparison shall run only after build/test passes; physics sanity shall run only after reference comparison passes and shall check global force/moment equilibrium, reaction sign, displacement direction, symmetry, element section-force consistency, and normalized residual; release readiness shall require all prior gate evidence and known limitations. | governance | Keep numerical similarity distinct from physical/release approval. | Approved design §§11, 12, 13 | must | Gate evidence audit | Each downstream report cites the preceding pass and physics evidence covers all six checks before release review. | Relevant upstream tolerances | coordinator-agent; physics-evaluation-agent; release-agent | approved |
| FESA-REQ-LS3DEB-044 | FESA agents and Harness shall not execute Abaqus, Nastran, or another reference solver and shall not create, modify, rename, or restore reference artifacts; release documentation shall not claim support for any Out Of Scope behavior. | governance | Prevent baseline contamination and scope inflation. | Approved design §§2.2, 12; ADR-010 | must | Process audit; Git diff; release documentation review | No reference execution or artifact mutation occurs and every exclusion is recorded without a support claim. | N/A | coordinator-agent; reference-model-agent; release-agent | approved |