Files
whetstone_DSL/editor/src/Sprint28IntegrationSummary.h

71 lines
2.9 KiB
C++

#pragma once
// Step 543: Sprint 28 Integration + Summary
#include <string>
#include <vector>
struct Sprint28Signals {
bool operationSelectorApi = false; // Step 534
bool symbolSelectorApi = false; // Step 535
bool argumentShapeValidator = false; // Step 536
bool constrainedExecutionTelemetry = false; // Step 537
bool phase28aIntegration = false; // Step 538
bool cppAdapter = false; // Step 539
bool pyTsAdapter = false; // Step 540
bool rustGoAdapter = false; // Step 541
bool crossLanguageConsistencyGate = false; // Step 542
};
struct Sprint28IntegrationResult {
bool phase28aPass = false;
bool phase28bPass = false;
bool sprint28Pass = false;
std::vector<std::string> notes;
};
class Sprint28IntegrationSummary {
public:
static Sprint28IntegrationResult summarize(const Sprint28Signals& s) {
Sprint28IntegrationResult r;
r.phase28aPass = s.operationSelectorApi &&
s.symbolSelectorApi &&
s.argumentShapeValidator &&
s.constrainedExecutionTelemetry &&
s.phase28aIntegration;
r.phase28bPass = s.cppAdapter &&
s.pyTsAdapter &&
s.rustGoAdapter &&
s.crossLanguageConsistencyGate;
r.sprint28Pass = r.phase28aPass && r.phase28bPass;
r.notes = buildNotes(s, r);
return r;
}
private:
static std::vector<std::string> buildNotes(const Sprint28Signals& s,
const Sprint28IntegrationResult& r) {
std::vector<std::string> notes;
if (!s.operationSelectorApi) notes.push_back("fail:step534_operation_selector");
if (!s.symbolSelectorApi) notes.push_back("fail:step535_symbol_selector");
if (!s.argumentShapeValidator) notes.push_back("fail:step536_argument_shape_validator");
if (!s.constrainedExecutionTelemetry) notes.push_back("fail:step537_constrained_telemetry");
if (!s.phase28aIntegration) notes.push_back("fail:step538_phase28a_integration");
if (!s.cppAdapter) notes.push_back("fail:step539_cpp_adapter");
if (!s.pyTsAdapter) notes.push_back("fail:step540_pyts_adapter");
if (!s.rustGoAdapter) notes.push_back("fail:step541_rustgo_adapter");
if (!s.crossLanguageConsistencyGate) notes.push_back("fail:step542_cross_language_consistency");
if (r.sprint28Pass) {
notes.push_back("sprint28:legal_choice_execution_stable");
notes.push_back("sprint28:multi_language_adapters_consistent");
notes.push_back("sprint28:out_of_scope_and_hallucinated_edits_blocked");
} else {
if (!r.phase28aPass) notes.push_back("phase28a:blocked");
if (!r.phase28bPass) notes.push_back("phase28b:blocked");
}
return notes;
}
};