feat(linear-static-3d-euler-beam): step 11 - inp-syntax-parser
This commit is contained in:
@@ -189,3 +189,52 @@
|
||||
- handoff: backend-free `EntityIndex`, semantic model records,
|
||||
`ModelDefinition`, and immutable `Domain::create`/const accessors are
|
||||
available to Step 11 syntax parsing and Step 12 semantic mapping.
|
||||
|
||||
## Step 11 — inp-syntax-parser
|
||||
|
||||
- task_id: `TASK-11`
|
||||
- status: `completed`
|
||||
- changed_files: `include/fesa/io/abaqus/input_syntax.hpp`,
|
||||
`include/fesa/io/abaqus/input_reader.hpp`,
|
||||
`src/fesa/io/abaqus/input_reader.cpp`,
|
||||
`tests/unit/io/abaqus/input_syntax_test.cpp`,
|
||||
`tests/unit/io/abaqus/input_reader_test.cpp`, `src/fesa/CMakeLists.txt`,
|
||||
`tests/CMakeLists.txt`,
|
||||
`docs/implementation-plans/linear-static-3d-euler-beam-implementation-report.md`,
|
||||
`phases/linear-static-3d-euler-beam/index.json`,
|
||||
`.superpowers/sdd/linear-static-3d-euler-beam/task-11-report.md`
|
||||
- requirement_ids: `FESA-REQ-LS3DEB-010`, `FESA-REQ-LS3DEB-034`,
|
||||
`FESA-REQ-LS3DEB-040`
|
||||
- test_ids: `T11-SYN-001`, `T11-SYN-002`, `T11-SYN-003`, `T11-SYN-004`
|
||||
|
||||
| stage | exact command | exit_code | expected_or_observed_result | evidence_tail |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| RED | `cmake --build .harness/build --config Debug --target fesa_tests`; `ctest --test-dir .harness/build -C Debug -R InpSyntax --output-on-failure` | 1 | Both planned test files are registered before production and fail for the missing reader API | MSVC C1083 for `fesa/io/abaqus/input_reader.hpp` in both new test translation units; CTest subsequently reported `No tests were found` because the executable could not build |
|
||||
| GREEN-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | Minimal syntax records, binary reader, and four tests compile and link | `input_reader.cpp`, both parser test files, `fesa_solver.lib`, and `fesa_unit_tests.exe` built without a FESA warning under `/W4 /WX` |
|
||||
| GREEN-test | `ctest --test-dir .harness/build -C Debug -R InpSyntax --output-on-failure` | 0 | All exact syntax parsing behaviors pass | 4/4 `InpSyntax` tests passed |
|
||||
| VERIFY-configure | `cmake -S . -B .harness/build -A x64 -DFESA_GTEST_SOURCE_DIR=C:/git/googletest "-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" "-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" "-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake"` | 0 | Approved MSVC x64 build tree regenerates with explicit dependencies | Visual Studio 18 2026/MSVC environment selected; configure and generate completed; oneMKL 2026.1 resolved |
|
||||
| VERIFY-build | `cmake --build .harness/build --config Debug` | 0 | Full Debug build passes without a new FESA warning | `fesa_solver.lib` and `fesa_unit_tests.exe` built under `/W4 /WX` |
|
||||
| VERIFY-targeted | `ctest --test-dir .harness/build -C Debug -R InpSyntax --output-on-failure` | 0 | Focused Step 11 suite remains green | 4/4 exact `InpSyntax` tests passed |
|
||||
| VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | CTest discovers the accumulated suite and all four exact syntax tests | 14 tests discovered with all four `InpSyntax` names and feature/unit labels |
|
||||
| VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | Full accumulated C++ suite has zero failures | 14/14 tests passed |
|
||||
| VERIFY-dependency-direction | Backend, upward I/O, core-to-I/O, and semantic-policy scans over the Step 11 public/production files using `rg -n` fail-on-match wrappers | 0 | Public headers retain backend-free `core -> io/abaqus` direction and syntax parsing contains no Step 12 policy | backend leaks 0; upward I/O dependencies 0; core-to-I/O dependencies 0; semantic-policy matches 0; exactly four `InpSyntax` tests found |
|
||||
| VERIFY-diff | `git diff --check` | 0 | Patch has no whitespace errors | Exit 0; only informational Git LF-to-CRLF working-copy notices were emitted |
|
||||
| VERIFY-reference | `git diff --exit-code -- reference/`; `git status --short -- reference/` | 0 | Approved legacy reference artifacts remain unchanged | Diff exit 0 and reference status empty |
|
||||
|
||||
- contract_checks: `ParsedInput` records the absolute lexically normalized
|
||||
source path and exact binary-byte FNV-1a identity formatted as
|
||||
`fnv1a64:` plus 16 lowercase hexadecimal digits. Keyword and parameter names
|
||||
alone become ASCII uppercase; parameter values, data label lexemes, empty
|
||||
and trailing data fields, and each keyword `originalLine` preserve source
|
||||
spelling. Comments and blanks remain excluded while physical 1-based file
|
||||
line accounting is retained. Unreadable file, empty keyword, and orphan data
|
||||
return categorized input diagnostics. No keyword allowlist, wrapper/nesting,
|
||||
numeric conversion, B31/B33, or output-request decision exists in this Step.
|
||||
The read-only legacy input parses as 30 keyword blocks with exact identity
|
||||
`fnv1a64:04543464cc970405`, unchanged bytes, and unchanged modification time.
|
||||
- generated_evidence: `.harness/build/src/fesa/Debug/fesa_solver.lib`,
|
||||
`.harness/build/tests/Debug/fesa_unit_tests.exe`
|
||||
- reference_diff: unchanged; `git diff --exit-code -- reference/` exit 0
|
||||
- handoff: backend-free `KeywordParameter`, `DataLine`, `KeywordBlock`,
|
||||
`ParsedInput`, and `AbaqusInputReader::read` with syntax/source provenance are
|
||||
available to Step 12 semantic mapping.
|
||||
|
||||
Reference in New Issue
Block a user