Step 653: sprint 39 integration summary

This commit is contained in:
Bill
2026-02-17 21:56:30 -07:00
parent 8905076b0d
commit f4259d9864
4 changed files with 133 additions and 0 deletions

View File

@@ -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)

View File

@@ -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;
}
};

View File

@@ -0,0 +1,20 @@
// Step 653: Sprint 39 integration + summary (8 tests)
#include "Sprint39IntegrationSummary.h"
#include <iostream>
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: "<<m<<"\n"; ++f; }
#define C(c,m) if(!(c)){F(m);return;}
void t1(){T(self_hosting_ready);auto r=Sprint39IntegrationSummary::run();C(r.selfHostingReady,"self-host");P();}
void t2(){T(packaging_ready);auto r=Sprint39IntegrationSummary::run();C(r.packagingReady,"packaging");P();}
void t3(){T(auto_update_ready);auto r=Sprint39IntegrationSummary::run();C(r.autoUpdateReady,"update");P();}
void t4(){T(plugin_ready);auto r=Sprint39IntegrationSummary::run();C(r.pluginReady,"plugin");P();}
void t5(){T(telemetry_ready);auto r=Sprint39IntegrationSummary::run();C(r.telemetryReady,"telemetry");P();}
void t6(){T(release_ready);auto r=Sprint39IntegrationSummary::run();C(r.releaseReady,"release");P();}
void t7(){T(release_requires_all_subsystems);auto r=Sprint39IntegrationSummary::run();C(r.selfHostingReady&&r.packagingReady&&r.autoUpdateReady&&r.pluginReady&&r.telemetryReady,"subsystems");P();}
void t8(){T(summary_is_deterministic);auto a=Sprint39IntegrationSummary::run();auto b=Sprint39IntegrationSummary::run();C(a.releaseReady==b.releaseReady,"determinism");P();}
int main(){std::cout<<"Step 653: Sprint 39 integration + summary\n";t1();t2();t3();t4();t5();t6();t7();t8();std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n";return f?1:0;}