Files
FESADev/phases/1-structure-alignment-refactor/step1.md
T

2.4 KiB

Sprint Contract: Module Scaffold And Facade

Objective

Create the target module directory scaffold and public include facade policy so later steps can move code incrementally while preserving existing tests and user includes.

Required Reading

  • /AGENTS.md
  • /PROGRESS.md
  • /PLAN.md
  • /docs/README.md
  • /docs/HARNESS_ENGINEERING.md
  • /docs/ARCHITECTURE.md
  • /docs/ADR.md
  • /phases/1-structure-alignment-refactor/step0-architecture-map.md

Scope

  • Add the documented module directories under include/fesa/ and src/ as needed, including Analysis, Assembly, Boundary, Core, Element, IO, Load, Math, Material, Property, Results, and Util.
  • Update CMakeLists.txt so future .cpp files under the module directories are compiled by fesa_core.
  • Keep include/fesa/fesa.hpp as the stable umbrella header for current tests and clients.
  • Add minimal module header smoke coverage proving selected module headers and fesa/fesa.hpp can be included together.

Allowed Files

  • CMakeLists.txt
  • include/fesa/
  • src/
  • tests/
  • phases/1-structure-alignment-refactor/index.json
  • PLAN.md
  • PROGRESS.md

Explicit Non-Goals

  • Do not move large implementations yet.
  • Do not change class names, namespaces, DOF order, result labels, parser behavior, or solver outputs.
  • Do not add MKL, TBB, or HDF5 dependencies.
  • Do not replace the umbrella header with module-only includes.

Tests To Write First

  • Add or update a compile/include smoke test that includes the new module headers and fesa/fesa.hpp together.
  • The test should fail before the scaffold exists and pass after the scaffold is added.

Reference Artifacts

  • None.

Acceptance Commands

python scripts/validate_workspace.py

Evaluator Checklist

  • Module directory names align with docs/ARCHITECTURE.md.
  • fesa_core builds with the scaffold on Windows/MSVC.
  • Existing tests still include fesa/fesa.hpp successfully.
  • New module headers do not expose external MKL, TBB, or HDF5 APIs.
  • No solver behavior changes are mixed into the scaffold.

Handoff Requirements

  • Update this step status in phases/1-structure-alignment-refactor/index.json.
  • Record validation output and any CMake/source-list decisions in PROGRESS.md.
  • Leave detailed code movement to later steps.

Do Not

  • Do not introduce broad formatting churn in fesa.hpp.
  • Do not change public API semantics while creating empty or thin module boundaries.