Files
FESADev/phases/nonlinear-static-newton-raphson/step12.md
T

12 KiB
Raw Blame History

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/PRD.md
  • docs/ARCHITECTURE.md
  • docs/ADR.md
  • docs/CODINGSTYLE.md
  • docs/TOLERANCE.md
  • docs/SOLVER_AGENT_DESIGN.md
  • docs/HARNESS.md
  • docs/HARNESS_WORKFLOW.md
  • docs/nonlinear-static-newton-raphson/requirements.md
  • docs/nonlinear-static-newton-raphson/formulation.md §§11.4, 13.1, 13.4, 14.1
  • docs/nonlinear-static-newton-raphson/numerical-review.md §§3.2, 6.2, 6.3
  • docs/nonlinear-static-newton-raphson/reference-model.md §§3–6
  • docs/nonlinear-static-newton-raphson/io.md §§7.5.1, 8.1–8.7
  • docs/nonlinear-static-newton-raphson/implementation-plan.md
  • docs/nonlinear-static-newton-raphson/corrections.md §13
  • phases/nonlinear-static-newton-raphson/index.json
  • phases/nonlinear-static-newton-raphson/step11.md
  • All source/test/CMake files actually changed by Steps 0–11
  • .harness/config.json
  • CMakePresets.json

시작 전 hard gate

  • Steps 0–10의 completed history를 그대로 유지한다.
  • Step 11 must be completed with 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/PRD.md
  • Modify only directly superseded statements: docs/ARCHITECTURE.md
  • Modify only directly superseded decisions or add the minimum accepted decision record: docs/ADR.md
  • Create from actual outputs: docs/nonlinear-static-newton-raphson/implementation-report.md
  • Create from actual outputs: docs/nonlinear-static-newton-raphson/build-test.md
  • Create from actual outputs: docs/nonlinear-static-newton-raphson/reference-comparison.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.md is missing or stale unless it records every Step 11 new RED test, the observed reason, minimal GREEN diff, focused/full VERIFY and preserved NSNR-CTRL-018..021/NSNR-LOG-012 evidence.
  • NSNR-EVID-002: build-test.md is 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.md is missing or stale unless it records the literal ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT run 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/equilibrium as 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 inclusive 1e-8 force/moment boundary and exact-zero-scale regressions, and the distinct constrained-reaction summary.
  • NSNR-EVID-006: implementation evidence is stale unless it closes AUDIT-001 with actual tests for nonzero prescribed translation/rotation, x=X+u, mask-before-conversion, independent InverseTransposeLeftJacobianSO3(phi) conversion, and location=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 .harness/config.json 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.md and step11.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/TOLERANCE.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/equilibrium as 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 --check passes 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 run scripts/execute.py from this Step. 이유: Executor already owns the active Step session.
  • 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.