What
Add a dedicated integration test workflow that performs a bottom-up vcpkg install of all eight kcenon ecosystem ports using overlay-ports, verifying that the full dependency graph resolves and that each layer produces working find_package targets.
This is the final verification gate for the ecosystem-wide vcpkg readiness rollout. It runs after the per-system fixes (P0, P1) and the automation (P2) have landed.
Why
Individually, each port may install correctly, but the vcpkg readiness analysis raised a concern that has not been tested: does the full dependency graph actually resolve? Cycles, missing transitive declarations, and drift between vcpkg.json and portfile.cmake can all hide until you try to install the entire stack in one shot.
A single CI job that walks the dependency graph from common_system all the way up to pacs_system catches these failures before they reach a downstream user. It also functions as an executable spec for the ecosystem's layering — any future change that accidentally introduces a cycle will turn this job red.
Where
- New file:
.github/workflows/ecosystem-vcpkg-integration.yml in this repo (kcenon/common_system)
- Supporting consumer projects:
tests/ecosystem-consumer/<port-name>/ — one minimal consumer per layer
How
Dependency Layering (Bottom-Up Install Order)
1. common_system (base, no kcenon deps)
2. thread_system (depends on common_system)
3. logger_system (depends on thread_system)
4. container_system (depends on common_system)
5. network_system (depends on thread_system)
6. database_system (depends on common_system)
7. monitoring_system (depends on logger_system, thread_system, network_system)
8. pacs_system (depends on monitoring_system + most of the stack)
The workflow installs each port in this order, and after every layer builds a minimal consumer (~10-line main.cpp) to prove find_package → link → run succeeds at that layer.
Failure Diagnosis Matrix
| Failure mode |
Root cause category |
vcpkg install fails |
portfile.cmake (SHA512, feature mapping, source fetch) |
find_package fails after successful install |
Config template (PACKAGE_NAME, lib/cmake// path) |
| Link error on consumer build |
install(TARGETS ... EXPORT) PUBLIC headers, namespace/alias mismatch |
Acceptance Criteria
Dependencies
This verification issue depends on:
[P0] container_system portfile.cmake (blocker — cannot install without it)
[P1] database_system naming unification
[P1] network_system CI workflow
- (Optional)
[P2] SHA512 automation — for sustainable long-term maintenance
Do not start implementation until the P0 and P1 issues are merged.
Scope Boundary
This is a verification issue, not a remediation one. If it uncovers new failures, file dedicated issues for each and link them here.
What
Add a dedicated integration test workflow that performs a bottom-up
vcpkg installof all eight kcenon ecosystem ports using overlay-ports, verifying that the full dependency graph resolves and that each layer produces workingfind_packagetargets.This is the final verification gate for the ecosystem-wide vcpkg readiness rollout. It runs after the per-system fixes (P0, P1) and the automation (P2) have landed.
Why
Individually, each port may install correctly, but the vcpkg readiness analysis raised a concern that has not been tested: does the full dependency graph actually resolve? Cycles, missing transitive declarations, and drift between
vcpkg.jsonandportfile.cmakecan all hide until you try to install the entire stack in one shot.A single CI job that walks the dependency graph from
common_systemall the way up topacs_systemcatches these failures before they reach a downstream user. It also functions as an executable spec for the ecosystem's layering — any future change that accidentally introduces a cycle will turn this job red.Where
.github/workflows/ecosystem-vcpkg-integration.ymlin this repo (kcenon/common_system)tests/ecosystem-consumer/<port-name>/— one minimal consumer per layerHow
Dependency Layering (Bottom-Up Install Order)
The workflow installs each port in this order, and after every layer builds a minimal consumer (~10-line
main.cpp) to provefind_package→ link → run succeeds at that layer.Failure Diagnosis Matrix
vcpkg installfailsfind_packagefails after successful installinstall(TARGETS ... EXPORT)PUBLIC headers, namespace/alias mismatchAcceptance Criteria
ecosystem-vcpkg-integration.ymlruns onpull_requestand nightlyscheduleubuntu-latestandmacos-latestat minimum (Windows optional initially)Dependencies
This verification issue depends on:
[P0]container_system portfile.cmake (blocker — cannot install without it)[P1]database_system naming unification[P1]network_system CI workflow[P2]SHA512 automation — for sustainable long-term maintenanceDo not start implementation until the P0 and P1 issues are merged.
Scope Boundary
This is a verification issue, not a remediation one. If it uncovers new failures, file dedicated issues for each and link them here.