From 1354aa54ba5c673f877e7765cbacbe00f69eebca Mon Sep 17 00:00:00 2001 From: wyc <1104749580@qq.com> Date: Sat, 8 Aug 2026 22:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agents/skills/structive-development/SKILL.md | 3 +++ AGENTS.md | 5 +++++ CMakeLists.txt | 1 + README.md | 2 ++ RELEASE.md | 16 ++++++++++++++++ THIRD_PARTY_NOTICES.md | 5 +++++ cmake/RunInstallConsumer.cmake | 5 +++++ 7 files changed, 37 insertions(+) create mode 100644 RELEASE.md create mode 100644 THIRD_PARTY_NOTICES.md diff --git a/.agents/skills/structive-development/SKILL.md b/.agents/skills/structive-development/SKILL.md index 0e6b33e..2d458c6 100644 --- a/.agents/skills/structive-development/SKILL.md +++ b/.agents/skills/structive-development/SKILL.md @@ -177,3 +177,6 @@ Before handoff, verify: - Public headers compile alone and the standalone install consumer works. - Adminive still builds/tests if the public Structive contract changed. - Only checks actually run are reported as passing. +## Release workflow + +Structive currently ships without third-party library dependencies. Standalone install/export must stay self-contained apart from the C++ standard library, and `RELEASE.md` must remain part of the installed release metadata. The source tree does not declare an outbound license for Structive project-owned code; do not generate one without an explicit owner decision. diff --git a/AGENTS.md b/AGENTS.md index 2e2b6ff..f48fa17 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -87,3 +87,8 @@ When Structive is edited inside Adminive, also run the relevant Adminive tests b 6. Runtime adapter result semantics, including copy-write support. 7. Extension-to-Core dependency direction. 8. Public-header independence, compile-fail matrix, install consumer, and Adminive consumer compatibility. +## Release policy + +- Structive currently has no third-party library dependency in its standalone package. Do not add one casually or inherit Adminive adapter dependencies. +- Keep `RELEASE.md` installed with the standalone package and keep the install-consumer gate green. +- No outbound license for Structive project-owned code is declared in this tree. Do not invent or infer one. diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f60315..a85455c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,7 @@ if(STRUCTIVE_INSTALL) configure_package_config_file("${CMAKE_CURRENT_LIST_DIR}/cmake/StructiveConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/StructiveConfig.cmake" INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Structive") write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/StructiveConfigVersion.cmake" VERSION "${PROJECT_VERSION}" COMPATIBILITY SameMajorVersion) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/StructiveConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/StructiveConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Structive") + install(FILES "${CMAKE_CURRENT_LIST_DIR}/RELEASE.md" "${CMAKE_CURRENT_LIST_DIR}/THIRD_PARTY_NOTICES.md" DESTINATION "${CMAKE_INSTALL_DATADIR}/Structive") endif() if(PROJECT_IS_TOP_LEVEL AND STRUCTIVE_BUILD_TESTS AND STRUCTIVE_INSTALL) add_test(NAME structive_install_consumer_test COMMAND "${CMAKE_COMMAND}" "-DSTRUCTIVE_SOURCE_DIR=${CMAKE_CURRENT_LIST_DIR}" "-DSTRUCTIVE_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}" "-DSTRUCTIVE_CONFIG=$" "-DSTRUCTIVE_GENERATOR=${CMAKE_GENERATOR}" "-DSTRUCTIVE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}" "-DSTRUCTIVE_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET}" -P "${CMAKE_CURRENT_LIST_DIR}/cmake/RunInstallConsumer.cmake") diff --git a/README.md b/README.md index 4984c75..008fa7e 100644 --- a/README.md +++ b/README.md @@ -365,3 +365,5 @@ Standalone configuration exposes `STRUCTIVE_BUILD_EXAMPLES`, `STRUCTIVE_BUILD_TE - [设计理念与原则(中文)](docs/DESIGN.zh-CN.md) - [核心使用指南(中文)](docs/CORE_GUIDE.zh-CN.md) - [扩展体系(中文)](docs/EXTENSIONS.zh-CN.md) +- [Release Policy](RELEASE.md) +- [Third-Party Notices](THIRD_PARTY_NOTICES.md) diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..facff68 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,16 @@ +# Structive Release Policy + +Structive Core and the bundled Presentation extension have no third-party library dependency in the current standalone CMake package. Keep that property unless a deliberate architecture change requires otherwise. + +The Structive source tree does not currently declare an outbound license for project-owned code. Do not infer a project license from Adminive or from dependencies used by an embedding project. + +Standalone release verification must keep these gates green: + +- Debug and Release tests. +- Public-header independent compilation. +- Compile-fail contract matrix. +- Standalone install/export consumer using `find_package(Structive CONFIG)`. +- Sanitizer/concurrency checks where supported. +- Adminive consumer tests when Structive public behavior changes. + +Installed Structive packages should contain Structive's public headers, CMake package metadata, and this release policy only; they must not acquire Adminive adapter/UI/HTTP dependencies. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..1fd68c3 --- /dev/null +++ b/THIRD_PARTY_NOTICES.md @@ -0,0 +1,5 @@ +# Structive Third-Party Notices + +The current standalone Structive Core and Presentation extension do not bundle or require third-party libraries beyond the C++ standard library. + +This notice does not declare or grant an outbound license for Structive project-owned code. No such project license is declared by this source tree. diff --git a/cmake/RunInstallConsumer.cmake b/cmake/RunInstallConsumer.cmake index 501280a..ab9a764 100644 --- a/cmake/RunInstallConsumer.cmake +++ b/cmake/RunInstallConsumer.cmake @@ -20,6 +20,11 @@ execute_process(COMMAND ${install_command} RESULT_VARIABLE install_result) if(NOT install_result EQUAL 0) message(FATAL_ERROR "Failed to install Structive") endif() +foreach(path IN ITEMS "${prefix}/share/Structive/RELEASE.md" "${prefix}/share/Structive/THIRD_PARTY_NOTICES.md") + if(NOT EXISTS "${path}") + message(FATAL_ERROR "Structive install is missing release metadata: ${path}") + endif() +endforeach() set(configure_command "${CMAKE_COMMAND}" -S "${STRUCTIVE_SOURCE_DIR}/install_consumer" -B "${consumer_binary}" "-DCMAKE_PREFIX_PATH=${prefix}") if(DEFINED STRUCTIVE_GENERATOR AND NOT STRUCTIVE_GENERATOR STREQUAL "") list(APPEND configure_command -G "${STRUCTIVE_GENERATOR}")