12 KiB
Step 12: execution-closure-and-evidence-docs
과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다. 현재 구현과 검증 한계는 기능 요약을 따른다.
목적
Step 11이 실제로 통과한 뒤에만 fresh MSVC/CTest와 reference gate evidence를 수집하고 Stage 6 canonical reports를 actual output으로 작성한다. 직접 superseded된 PRD/ARCHITECTURE/ADR 문장만 최소 동기화한다. 이 Step은 solver 동작을 새로 구현하지 않는다.
읽어야 할 파일
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../../docs/solver-core/README.md../../docs/solver-core/README.md../../docs/solver-core/README.md../../docs/nonlinear-static-newton-raphson/README.md../../docs/nonlinear-static-newton-raphson/formulation.md§§11.4, 13.1, 13.4, 14.1../../docs/nonlinear-static-newton-raphson/README.md§§3.2, 6.2, 6.3../../docs/nonlinear-static-newton-raphson/README.md§§3–6../../docs/nonlinear-static-newton-raphson/README.md§§7.5.1, 8.1–8.7../../docs/nonlinear-static-newton-raphson/README.md../../docs/nonlinear-static-newton-raphson/README.md§13phases/nonlinear-static-newton-raphson/index.jsonphases/nonlinear-static-newton-raphson/step11.md- All source/test/CMake files actually changed by Steps 0–11
- 과거 검증 자료(정리됨)
CMakePresets.json
시작 전 hard gate
- Steps 0–10의 completed history를 그대로 유지한다.
- Step 11 must be
completedwith an actual summary and passing RED/GREEN/VERIFY evidence. - If Step 11 is not completed, stop without creating/updating evidence docs or global docs.
- Do not infer Step 11 success from a prior blocked run, diagnostic spike or translation-only report.
소유 파일
- Modify only directly superseded statements:
../../docs/solver-core/README.md - Modify only directly superseded statements:
../../docs/solver-core/README.md - Modify only directly superseded decisions or add the minimum accepted decision record:
../../docs/solver-core/README.md - Create from actual outputs:
../../docs/nonlinear-static-newton-raphson/README.md - Create from actual outputs:
../../docs/nonlinear-static-newton-raphson/README.md - Create from actual outputs:
../../docs/nonlinear-static-newton-raphson/README.md
No C++ production, public header, test, CMake, Harness, reference or tolerance file is owned by this Step.
RED: evidence freshness audit
Perform this audit before writing reports. The expected initial result is failure because the three canonical reports are missing or do not contain this Step's fresh evidence.
NSNR-EVID-001:implementation-report.mdis missing or stale unless it records every Step 11 new RED test, the observed reason, minimal GREEN diff, focused/full VERIFY and preservedNSNR-CTRL-018..021/NSNR-LOG-012evidence.NSNR-EVID-002:build-test.mdis missing or stale unless it records fresh configure, build, discovery, focused/full CTest commands with exit code, duration, output tail, MSVC x64 Debug environment, warning audit and failure classification.NSNR-EVID-003:reference-comparison.mdis missing or stale unless it records the literalARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORTrun with exact paths/hashes, generated HDF5/log paths, projection, row decisions, metrics, classification and no-change evidence.NSNR-EVID-004: evidence or global docs are stale if they still classify local RF/RM as blocking, omit review-only findings, identify coarse shellNL as the only nonlinear case, or describe/global/equilibriumas raw full-residual/initial-arm evidence.NSNR-EVID-005: reference evidence is stale if it lacks fine-primary/coarse-companion/linear-control inventory, separate U/UR/local reaction families, four coarse and four fine internal blocking equilibrium families, the inclusive1e-8force/moment boundary and exact-zero-scale regressions, and the distinct constrained-reaction summary.NSNR-EVID-006: implementation evidence is stale unless it closesAUDIT-001with actual tests for nonzero prescribed translation/rotation,x=X+u, mask-before-conversion, independentInverseTransposeLeftJacobianSO3(phi)conversion, andlocation=global-balance-error.NSNR-EVID-007: command evidence is stale if copied from an earlier run, omits artifact pre/post immutability, lacks command output/exit/duration, changes the required stage order, or claims a verdict before CLASSIFY.
Record this expected failing freshness audit in implementation-report.md only after fresh evidence
has been collected. If the audit unexpectedly passes before this Step's commands, stop and report the
evidence provenance conflict.
GREEN: fresh evidence execution
Use the ignored 과거 검증 자료(정리됨) and tracked windows-msvc-ninja-debug preset. The parent
environment must be VsDevCmd x64 and contain FESA_GTEST_SOURCE_DIR, MKL_DIR, TBB_DIR, and
HDF5_DIR.
1. Fresh build and regression evidence
cmake --preset windows-msvc-ninja-debug
cmake --build --preset windows-msvc-ninja-debug
ctest --preset windows-msvc-ninja-debug --show-only=json-v1
ctest --preset windows-msvc-ninja-debug -R "^(NonlinearConvergence|NewtonIterationLog)\." --output-on-failure
ctest --preset windows-msvc-ninja-debug -R "^(NonlinearStaticProcedure|NonlinearHdf5ResultsWriter)\." --output-on-failure
ctest --preset windows-msvc-ninja-debug --output-on-failure
Record command, working directory, exit code, duration, stdout/stderr tail and failed-test inventory.
Audit new compiler warnings. Stop at the first decisive failure and classify it as
configure | compile | link | test | reference-comparison | harness | environment | upstream-contract.
2. Final reference gate in literal order
ARTIFACT CHECK
- Verify every exact fine/coarse/linear input/CSV path and SHA-256 from
reference-model.mdandstep11.md. - Verify readable headers, exact nonlinear factor-one Frame, source node/component inventories, uniqueness and finite required values.
- Snapshot original inventory, size, timestamps and hashes before any copied-input run.
- Verify generated results will be written only under unique build-local copied-input directories.
COMPARE
ctest --preset windows-msvc-ninja-debug -R "^NonlinearStaticReference\." --output-on-failure
ctest --preset windows-msvc-ninja-debug -R "^(NonlinearStaticReference|ReferenceTolerance|Mitc4Reference)\." --output-on-failure
Compare by (case_id, accepted_state, canonical_instance_name, source_node_label, component), never
by row order. Apply ../../docs/solver-core/README.md only to external U/UR/local-review families. Apply internal
1e-8 force/moment balance and NSNR-069 free-residual gates separately. Preserve the exact
blocking/warning/review/excluded dispositions.
CLASSIFY
- Blocking pass requires fine/coarse U families, linear U regression and all eight fine/coarse internal equilibrium families to pass.
- UR failure is warning-only.
- Local RF/RM precheck/row/RMS failure is a deterministic review finding and cannot change blocking pass/fail.
- RM3/stress values are excluded.
- Any blocking missing/extra/duplicate/nonfinite row fails before tolerance.
- Classify actual failures without relaxing tolerance, changing artifacts or claiming external solver internal equivalence.
REPORT
Only after CLASSIFY, write the three canonical reports from actual outputs.
Report contracts
implementation-report.md
Record metadata, approved upstream hashes, Steps 0–10 preserved summaries, Step 11 RED failures,
minimal GREEN file/symbol changes, focused/full VERIFY commands and results, AUDIT-001 closure,
requirement/test traceability, no-change assertion, classification and open issues. Do not invent
unobserved output.
build-test.md
Use owner_agent: implementation-agent. Record execution environment, exact commands, working
directories, exit codes, durations, output tails, discovered test inventory, focused/full results,
new-warning audit, failure classification, failed tests, handoff recommendation, no-change assertion
and open issues.
reference-comparison.md
Record exact input/CSV SHA inventory, copied input and generated HDF5/log paths, accepted factor-one frame, every HDF5 projection/path/component, stable source-key matching, row prechecks, external common tolerance, internal gates, per-family/per-row decisions, max absolute error, applicable relative error, RMS/scale metric, constrained-reaction summary, warnings/review findings, final classification, original artifact post-run identity, no-change assertion and open issues.
The report must explicitly state that FESA HDF5 is authoritative, CSV is external comparison evidence, and numerical agreement does not imply Abaqus S4 internal formulation equivalence.
Minimal PRD/ARCHITECTURE/ADR sync
After actual passing evidence exists, update only statements directly superseded by the implemented feature:
- repository-wide derived result/log names and removal of
--output; - prepared parse-once linear/nonlinear procedure boundary and separate nonlinear state/solver/writer;
- nonlinear HDF5 schema v1 accepted-frame meaning;
/global/equilibriumas current-arm/spatial-moment applied-plus-reaction balance error;- distinct accepted free residual and constrained reaction resultant projections;
- fine primary/coarse companion, U blocking, UR warning-only, local RF/RM review-only and RM3/stress exclusion.
Do not rewrite unrelated V0 history, refactor architecture prose or add future scope.
Final validation
git diff --check
git status --short
Confirm the original reference pre/post hashes, sizes, timestamps and inventory are equal. Confirm that every required report statement is backed by a command or deterministic artifact observation. Harness Python validation is not required because this Step does not change Harness Python, hooks or agent configuration.
Acceptance Criteria
- Evidence freshness audit initially fails for the declared stale/missing reason and is recorded.
- Fresh configure/build/discovery/focused/full CTest all pass with MSVC x64 Debug and no new warnings.
- Final gate executes in exact order
ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT. - All blocking external and internal families pass; warnings and review findings remain nonblocking and are fully reported.
AUDIT-001, fine/coarse roles and reaction disposition have direct test/output evidence.- Three canonical Stage 6 reports contain reproducible commands, metrics, classifications and no-change assertions.
- PRD/ARCHITECTURE/ADR edits are limited to directly superseded statements.
git diff --checkpasses and reference artifacts remain byte-for-byte unchanged.
상태 기록
On success, update only Step 12 to completed and add one concise summary. Executor owns
timestamps, commits, top-level completion and advancement. A passing Step 12 returns Stage 6 evidence
to Coordinator; it does not itself dispatch Physics or Release.
금지사항
- Do not create or update evidence reports before actual fresh output exists. 이유: Stage 6 reports are execution evidence, not predictions.
- Do not change C++ code, tests, CMake, Harness configuration, tolerance or reference artifacts. 이유: Step 12 is evidence closure only.
- Do not reorder or collapse
ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT. 이유: schema and identity failures must precede tolerance and verdict. - Do not make local RF/RM blocking, omit their errors, or compare RM3/stress. 이유: USER-DECISION-004 fixes the disposition.
- Do not use Abaqus CSV/tolerance for internal balance/free-residual gates or claim Abaqus internal equivalence. 이유: external comparison and internal physics evidence are distinct.
- Do not broadly rewrite PRD/ARCHITECTURE/ADR, alter Steps 0–11 history, commit, push, run a reference solver, or claim Physics/Release readiness.