7.3 KiB
Step 2: reject-invalid-pressure-input
과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다. 현재 구현과 검증 한계는 기능 요약을 따른다.
실행 범위와 상태 소유권
이 Step의 단일 책임은 Step 1의 pressure input/model mapping에 deterministic fail-closed negative semantics, duplicate rules, diagnostics and atomic commit behavior를 완결하는 것이다. 동일 Step 안에서 RED부터 full green까지 끝낸다.
Implementation Agent는 Executor-selected Step 2만 수행하고 task index의 Step 2 status와 한 줄 summary/error_message/blocked_reason만 기록한다. Executor가 timestamps, commits, retry, advancement, top-level status와 output JSON을 소유한다.
읽어야 할 파일
AGENTS.md../../docs/solver-core/README.md../../docs/solver-core/README.md../../docs/solver-core/README.md../../docs/solver-core/README.md../../docs/solver-core/README.md.codex/hooks.json../../docs/shell-surface-pressure-load/README.md../../docs/shell-surface-pressure-load/formulation.md../../docs/shell-surface-pressure-load/README.md../../docs/shell-surface-pressure-load/README.md../../docs/shell-surface-pressure-load/README.mdinclude/fesa/core/ascii.hinclude/fesa/core/diagnostic.hinclude/fesa/model/source_target_resolver.hsrc/fesa/model/source_target_resolver.cppinclude/fesa/io/abaqus/input_syntax.hsrc/fesa/io/abaqus/input_reader.cppsrc/fesa/io/abaqus/domain_mapping_context.hsrc/fesa/io/abaqus/domain_mapping_context.cppsrc/fesa/io/abaqus/surface_definition_mapper.hsrc/fesa/io/abaqus/surface_definition_mapper.cppsrc/fesa/io/abaqus/step_definition_mapper.cppsrc/fesa/io/abaqus/domain_builder.cpptests/unit/io/abaqus/shell_surface_pressure_domain_test.cpptests/unit/io/abaqus/domain_mapper_test.cpptests/unit/io/abaqus/domain_mapping_components_test.cpp
Read Step 1's implementation and tests closely. Its required outputs are the Domain-owned immutable surface/facet inventory, Step-owned provenance-rich pressure records, multi-explicit-instance valid support and non-owning AnalysisModel accessors. Do not replace those contracts.
소유 파일
- Modify/Test first:
tests/unit/io/abaqus/shell_surface_pressure_domain_test.cpp - Modify/Test if needed:
tests/unit/io/abaqus/domain_mapper_test.cpp - Modify/Test if needed:
tests/unit/io/abaqus/domain_mapping_components_test.cpp - Modify:
src/fesa/io/abaqus/input_reader.cpp - Modify:
src/fesa/io/abaqus/domain_mapping_context.h - Modify:
src/fesa/io/abaqus/domain_mapping_context.cpp - Modify:
src/fesa/io/abaqus/surface_definition_mapper.h - Modify:
src/fesa/io/abaqus/surface_definition_mapper.cpp - Modify:
src/fesa/io/abaqus/step_definition_mapper.cpp - Modify:
src/fesa/io/abaqus/domain_builder.cpp
Do not add another production type or parser framework.
RED
Add these named tests first:
ShellSurfacePressureInput.RejectsNonAsciiOverlengthOrIllegalContinuationAtStableLocationShellSurfacePressureInput.RejectsUnsupportedSurfaceParametersTypesSidesAndTargetKindsShellSurfacePressureInput.RejectsDsloadParametersLabelsDistributionsAndCardinalityShellSurfacePressureInput.RejectsEmptyMissingAmbiguousAndCrossScopeSurfaceTargetsShellSurfacePressureInput.RejectsImplicitInstanceNestedCyclicAndMalformedElsetsShellSurfacePressureInput.NormalizesExactSameSideDuplicatesWithOneStableWarningShellSurfacePressureInput.RejectsConflictingSidesForOneElementShellSurfacePressureInput.RejectsNonfiniteDExponentAndLocaleDependentMagnitudesShellSurfacePressureInput.PreservesAdditiveRepeatedPressureRowsWithoutDeduplicationShellSurfacePressureDomain.MappingFailureCommitsNoPartialSemanticCandidateShellSurfacePressureInput.EmitsDiagnosticsInStableSourceOrderAcrossRepeatedRuns
Run before production edits:
과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다.
Expected RED: the Step 1 happy-path mapper accepts at least one unsupported form, lacks complete stable diagnostics, or does not distinguish exact same-side normalization from conflicting-side failure. Record command, exit, duration and tail. Unexpected pass is an evidence gap; unrelated failure is regression and must be resolved/classified before GREEN.
Minimal GREEN
- Apply exact allowed parameter/label/cardinality tables from
io.md§§2–3. Reject unsupported flags, types, labels, distributions, scopes and target kinds without reinterpretation. - Reject non-ASCII/control/overlength physical input, illegal continuation, malformed or nonfinite numeric tokens,
Dexponent and locale-dependent forms at the actual failing source line. - Reject missing, empty, ambiguous, cross-scope, implicit-instance, nested/cyclic and malformed ELSET targets. A single mixed-instance ELSET remains unsupported; multiple separately explicit-instance members in one surface remain valid from Step 1.
- Normalize an exact same
(instance, element label, side)duplicate to one facet and emit exactly one deterministicduplicate-surface-member-normalizedwarning after the first identity. Reject conflicting SPOS/SNEG for the same instance/element and duplicate case-insensitive surface declarations. - Never deduplicate identical DSLOAD rows: each remains a distinct additive
load_ordinal. - Validate every raw target before semantic commit, sort diagnostics by
(file source order, line, member/load ordinal, code, entity identity), and return no Domain on error. Preserve fullentity_identityfields fromio.md§9.
VERIFY and Acceptance Criteria
If 과거 검증 자료(정리됨) exists, use its resolved commands first. Otherwise run:
과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다.
Acceptance requires every named negative test and legacy parser/domain test green, exact diagnostic tuple (severity,code,file,line,keyword,entity_identity,message), repeated-run diagnostic order exact, no partial Domain, nonzero CTest discovery, no new warning and full CTest pass. Let Stop hook run automatically.
불변식, 실패 처리와 증거
- Exact duplicate normalization and incompatible duplicate error are distinct.
- All missing/extra/ambiguous/cyclic/cross-scope/nonfinite failures occur before tolerance/analysis/HDF5.
- Existing inputs without pressure remain unchanged.
- Evidence records RED and GREEN commands/exits/durations/tails, expected diagnostic codes/locations/entities, warning count and repeated diagnostic sequence.
- Failure classification:
configure | compile | link | test | harness | environment | upstream-contract | regression | evidence-gap.
Trace: FESA-REQ-SHELL-PRESSURE-002–004, 013–017; io.md §§2–6, 9; formulation.md §11; numerical-review.md §6 invalid-input checks.
금지사항
- Do not implement the evaluator/assembler, change tolerance, rewrite artifacts or refactor the general parser. 이유: 이 Step의 negative semantic scope 밖이다.
- Do not weaken the valid multi-explicit-instance contract from Step 1.
- Do not modify upstream docs, HDF5 writers, source reference files or phase statuses other than Step 2's Executor-selected record.