Skip to content

refactor(container): consolidate headers under include/kcenon/container/#537

Merged
kcenon merged 1 commit intodevelopfrom
feat/issue-532-header-consolidation
May 1, 2026
Merged

refactor(container): consolidate headers under include/kcenon/container/#537
kcenon merged 1 commit intodevelopfrom
feat/issue-532-header-consolidation

Conversation

@kcenon
Copy link
Copy Markdown
Owner

@kcenon kcenon commented May 1, 2026

What

Consolidates all .h headers from feature directories at the repository root into the canonical include/kcenon/container/ tree, and flattens the awkward include/kcenon/container/container/ nested layout that existed in the previous structure.

Affected Components

  • internal/*.h (16 files) -> include/kcenon/container/internal/
  • internal/async/*.h -> include/kcenon/container/internal/async/
  • integration/messaging_integration.h -> include/kcenon/container/integration/
  • messaging/message_container.h -> include/kcenon/container/messaging/
  • core/*.h forwarders (21 files) deleted - canonical copies were already at include/kcenon/container/
  • include/kcenon/container/container/*.h (7 files) flattened to include/kcenon/container/

Why

include/ already contained some headers under kcenon/container/, but feature directories still held 39 headers at the repo root. As a result:

  • #include paths were ambiguous: the same type was reachable via multiple roots
  • Feature directories at the repo root could not be removed, blocking the EPIC's layout goal
  • Some already-moved headers ended up nested awkwardly (e.g. include/kcenon/container/container/fwd.h); this PR also fixes that

Where

How

Implementation

  1. git mv headers preserving subdirectory structure
  2. Updated relative #include paths inside canonical headers (e.g., "../value_types.h" -> "value_types.h" after flattening)
  3. Updated every #include site in the repo to use <kcenon/container/...> paths
  4. Updated CMakeLists.txt source list to reference headers at new locations
  5. The legacy repo-root container.h forwarder remains in place (will be deprecated in [#531-3/5] Mark legacy include/container/ forwarding [[deprecated]] #534)

Acceptance Criteria

  • core/, internal/, integration/, messaging/ contain no header files
  • All public/internal headers reachable under include/kcenon/container/
  • include/kcenon/container/container/ nested directory removed (flattened)
  • Full build green (verified by CI)
  • All ctest cases pass (verified by CI)
  • Downstream consumers (pacs, network) still build (verified by CI)

Out of Scope (handled in sibling sub-issues)

Verification

Local toolchain unavailable in the working environment; relying on CI for full build and test verification.

Test Plan

  1. CI runs: cmake -S . -B build && cmake --build build/ -j
  2. CI runs: ctest --test-dir build/ --output-on-failure
  3. Verify downstream consumers still build via the kcenon ecosystem CI

Closes #532
Part of #531

Move all .h files from core/, internal/, integration/, messaging/
into the canonical include/kcenon/container/ tree, and flatten the
nested include/kcenon/container/container/ subdirectory.

Changes:
- internal/*.h -> include/kcenon/container/internal/*.h (16 files)
- internal/async/*.h -> include/kcenon/container/internal/async/*.h
- integration/messaging_integration.h -> include/kcenon/container/integration/
- messaging/message_container.h -> include/kcenon/container/messaging/
- core/*.h forwarders deleted (21 files); canonical copies were
  already at include/kcenon/container/*.h
- include/kcenon/container/container/*.h flattened to
  include/kcenon/container/*.h (7 files)
- Updated relative includes in canonical headers
- Updated #include paths in every translation unit (sources, tests,
  examples, benchmarks, integration_tests, fuzz, grpc) to use
  <kcenon/container/...>
- Updated CMakeLists.txt to reference headers at new locations

Out of scope (handled in subsequent issues):
- Moving .cpp files (#533)
- Adding [[deprecated]] to legacy forwarders (#534)
- Decomposing CMakeLists.txt (#535)
- Updating Doxyfile and install(DIRECTORY ...) rules (#536)

Closes #532
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