Skip to content

refactor(container): migrate sources into src/{core,internal,integration,messaging}/#538

Merged
kcenon merged 1 commit intodevelopfrom
feat/issue-533-source-migration
May 1, 2026
Merged

refactor(container): migrate sources into src/{core,internal,integration,messaging}/#538
kcenon merged 1 commit intodevelopfrom
feat/issue-533-source-migration

Conversation

@kcenon
Copy link
Copy Markdown
Owner

@kcenon kcenon commented May 1, 2026

What

Summary

Move all 14 .cpp source files from the four root-level feature directories
(core/, internal/, integration/, messaging/) into src/<subdir>/, then
remove those four directories from the repository root. CMake target source
lists, the in-source DOXYGEN_INPUT block, the standalone Doxyfile INPUT
directive, and the fuzz/CMakeLists.txt include path are updated to match.

Change Type

  • Refactor (no functional changes)

Affected Components

  • src/{core,internal,integration,messaging}/ (new homes for 14 sources)
  • CMakeLists.txt (target source paths + minimal install/Doxygen drift fix)
  • Doxyfile (minimal INPUT drift fix)
  • fuzz/CMakeLists.txt (drop dead include path)

Why

Problem Solved

After PR #537 consolidated headers under include/kcenon/container/, the four
root-level feature directories still held ~14 .cpp files. Mixing sources at
the repo root blocks clean install(...) layout and prevents the four
directories from being removed. Moving sources to src/{core,internal,integration,messaging}/
matches the canonical template used by sibling repositories in the EPIC.

Related Issues

Where

Source Moves

From To Files
core/*.cpp src/core/*.cpp 4
core/serializers/*.cpp src/core/serializers/*.cpp 5
internal/*.cpp src/internal/*.cpp 3
integration/messaging_integration.cpp src/integration/messaging_integration.cpp 1
messaging/message_container.cpp src/messaging/message_container.cpp 1

Build Configuration

  • CMakeLists.txt: 14 ${CMAKE_CURRENT_SOURCE_DIR}/<dir>/*.cpp references retargeted to ${CMAKE_CURRENT_SOURCE_DIR}/src/<dir>/*.cpp
  • CMakeLists.txt: dropped install(DIRECTORY core/ internal/ integration/ messaging/ ...) block (those directories no longer exist; full install rewrite stays in scope of [#531-5/5] Update Doxygen input paths and install rules #536)
  • CMakeLists.txt: in-source DOXYGEN_INPUT paths updated to use include/kcenon/container and src in place of the removed feature dirs
  • Doxyfile: standalone INPUT directive updated the same way
  • fuzz/CMakeLists.txt: removed dead ${CMAKE_SOURCE_DIR}/internal include from both fuzz targets (internal headers reach fuzz targets via container_system's public include directory)

How

Implementation

  1. git mv each of the 14 .cpp files (preserves Git rename detection).
  2. Remove now-empty core/, internal/, integration/, messaging/ directories from the working tree.
  3. Update target_sources paths and minimal install/Doxygen drift fixes.
  4. No change to header includes inside the moved sources: every .cpp already uses the angle-bracket form <kcenon/container/...> resolved through target_include_directories, so source location is decoupled from include resolution.

Out of Scope (handled by sibling sub-issues)

Testing

  • Local C++ toolchain unavailable in the dev container (no cmake/g++/clang++); relying on CI for cmake -S . -B build && cmake --build build/ -j and ctest --output-on-failure.
  • Sanity checks performed locally: parentheses balance in CMakeLists.txt and fuzz/CMakeLists.txt; no remaining references to root-level core/|internal/|integration/|messaging/ paths.

Breaking Changes

None at the public API or include level. Only internal target source lists and
documentation/install rules changed.

Acceptance Criteria

  • core/, internal/, integration/, messaging/ no longer exist at repo root
  • All sources reachable under src/<subdir>/
  • cmake -S . -B build && cmake --build build/ -j succeeds (CI)
  • ctest --test-dir build/ --output-on-failure passes (CI)

…ion,messaging}/

Move all 14 .cpp files from the four root-level feature directories into
src/<subdir>/ to match the canonical kcenon ecosystem template. The four
root-level directories (core/, internal/, integration/, messaging/) are
removed by this commit.

Source moves (preserving subdirectory structure):
  core/*.cpp                   -> src/core/*.cpp                  (4 files)
  core/serializers/*.cpp       -> src/core/serializers/*.cpp      (5 files)
  internal/*.cpp               -> src/internal/*.cpp              (3 files)
  integration/*.cpp            -> src/integration/*.cpp           (1 file)
  messaging/*.cpp              -> src/messaging/*.cpp             (1 file)

Header includes are unchanged: every .cpp uses angle-bracket form
<kcenon/container/...> resolved through target_include_directories,
so source location is decoupled from include resolution.

Drift fixes (minimal, scoped to keep the build green):
- CMakeLists.txt: target source list paths updated to src/<subdir>/.
- CMakeLists.txt: install(DIRECTORY core/ internal/ integration/ messaging/)
  block dropped because the directories no longer exist. The full install
  layout will be revisited in #536.
- CMakeLists.txt: in-source DOXYGEN_INPUT block updated to use
  include/kcenon/container and src in place of the removed feature dirs.
- Doxyfile: standalone INPUT directive updated the same way.
- fuzz/CMakeLists.txt: removed dead ${CMAKE_SOURCE_DIR}/internal include
  path; internal headers are reachable via container_system's public
  include directory.

Out of scope (handled by sibling sub-issues): forwarder deprecation (#534),
CMake module decomposition (#535), full Doxyfile/install rewrite (#536).

Closes #533
Part of #531
@kcenon kcenon merged commit 6c6804d into develop May 1, 2026
4 checks passed
@kcenon kcenon deleted the feat/issue-533-source-migration branch May 1, 2026 14:00
kcenon added a commit that referenced this pull request May 1, 2026
Drop legacy layout references from Doxyfile, cmake/documentation.cmake,
and cmake/install.cmake now that the post-EPIC-#531 directory layout is
stable.

- Doxyfile INCLUDE_PATH: replace removed roots (core/, values/,
  internal/, integration/) with the canonical include/, include/kcenon/
  container/, and src/ paths.
- Doxyfile INPUT: keep the canonical roots and explicit docs/*.dox
  pages; drop the temporary layout-disclaimer comment.
- cmake/documentation.cmake DOXYGEN_INPUT: remove the source-root
  catch-all and the non-existent root mainpage.dox reference; add
  utilities/ and the explicit docs/*.dox pages so the CMake target and
  the standalone Doxyfile drive the same set of inputs.
- cmake/install.cmake: rewrite the documentation block to reflect the
  actual install layout (canonical include/kcenon/container/ plus
  deprecated include/container/), record the v1.2.0 removal milestone
  for the legacy forwarding tree as a TODO marker, and drop the dropped-
  install-rule comment that was kept as a breadcrumb during #538/#535.
- CHANGELOG.md and docs/CHANGELOG.md: record the cleanup under
  Unreleased > Changed.

All INPUT paths verified to exist on disk. Toolchain unavailable in
sandbox; relying on CI for cmake configure, build, and Doxygen target
runs.

Closes #536
Part of #531
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant