From f4259d98642138fc2bcb491d0fab89441aa44374 Mon Sep 17 00:00:00 2001 From: Bill Date: Tue, 17 Feb 2026 21:56:30 -0700 Subject: [PATCH] Step 653: sprint 39 integration summary --- editor/CMakeLists.txt | 9 ++++ editor/src/Sprint39IntegrationSummary.h | 45 +++++++++++++++++++ editor/tests/step653_test.cpp | 20 +++++++++ progress.md | 59 +++++++++++++++++++++++++ 4 files changed, 133 insertions(+) create mode 100644 editor/src/Sprint39IntegrationSummary.h create mode 100644 editor/tests/step653_test.cpp diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index e4edb46..4049d3c 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -4756,4 +4756,13 @@ target_link_libraries(step652_test PRIVATE tree_sitter_javascript tree_sitter_typescript tree_sitter_java tree_sitter_rust tree_sitter_go) +add_executable(step653_test tests/step653_test.cpp) +target_include_directories(step653_test PRIVATE src) +target_link_libraries(step653_test PRIVATE + nlohmann_json::nlohmann_json + unofficial::tree-sitter::tree-sitter + tree_sitter_python tree_sitter_cpp tree_sitter_elisp + tree_sitter_javascript tree_sitter_typescript + tree_sitter_java tree_sitter_rust tree_sitter_go) + # Step 12: Dear ImGui shell scaffolding created (main.cpp exists but not built due to dependencies) diff --git a/editor/src/Sprint39IntegrationSummary.h b/editor/src/Sprint39IntegrationSummary.h new file mode 100644 index 0000000..e292a48 --- /dev/null +++ b/editor/src/Sprint39IntegrationSummary.h @@ -0,0 +1,45 @@ +#pragma once +// Step 653: Sprint 39 integration + summary + +#include "HiveMindAutoUpdateModel.h" +#include "LanguageGeneratorPluginManifest.h" +#include "PackageScriptGenerator.h" +#include "Phase39aIntegration.h" +#include "LocalTelemetryModel.h" + +struct Sprint39IntegrationResult { + bool selfHostingReady = false; + bool packagingReady = false; + bool autoUpdateReady = false; + bool pluginReady = false; + bool telemetryReady = false; + bool releaseReady = false; +}; + +class Sprint39IntegrationSummary { +public: + static Sprint39IntegrationResult run() { + Sprint39IntegrationResult out; + auto phase39a = Phase39aIntegration::run(); + out.selfHostingReady = phase39a.integrationReady; + + auto pkg = PackageScriptGenerator::generate("whetstone", "1.0.0"); + out.packagingReady = pkg.success; + + auto update = HiveMindAutoUpdateModel::execute({"1.0.0", "https://apiary/whetstone.AppImage", "abc"}, "abc"); + out.autoUpdateReady = update.accepted && update.hashVerified && update.restartScheduled; + + PluginManifest manifest{"RustGen", "whetstone-plugin-rust.so", "RustGenerator", {"rust"}}; + out.pluginReady = LanguageGeneratorPluginManifest::isValid(manifest) && + LanguageGeneratorPluginManifest::isPluginFile(manifest.sharedObject); + + TelemetryCounters counters; + LocalTelemetryModel::recordSessionMinutes(&counters, 10); + LocalTelemetryModel::recordToolCall(&counters); + out.telemetryReady = LocalTelemetryModel::weeklyReport(counters).find("session_minutes=10") != std::string::npos; + + out.releaseReady = out.selfHostingReady && out.packagingReady && out.autoUpdateReady && + out.pluginReady && out.telemetryReady; + return out; + } +}; diff --git a/editor/tests/step653_test.cpp b/editor/tests/step653_test.cpp new file mode 100644 index 0000000..4fcb5d0 --- /dev/null +++ b/editor/tests/step653_test.cpp @@ -0,0 +1,20 @@ +// Step 653: Sprint 39 integration + summary (8 tests) + +#include "Sprint39IntegrationSummary.h" +#include +static int p=0,f=0; +#define T(n) { std::cout<<" "<<#n<<"... "; } +#define P() { std::cout<<"PASS\n"; ++p; } +#define F(m) { std::cout<<"FAIL: "<