Implement sprints 118-119 distributed failure evidence and triage

This commit is contained in:
Bill
2026-02-24 12:31:17 -07:00
parent b9e666dc9c
commit 1c0645b2f9
40 changed files with 1021 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
#include "graduation/DistributedFailureEvidenceSchemaNormalizer.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(id); auto v=DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=DistributedFailureEvidenceSchemaNormalizerFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=DistributedFailureEvidenceSchemaNormalizerFactory::toJson(DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=DistributedFailureEvidenceSchemaNormalizerFactory::toJson(DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=DistributedFailureEvidenceSchemaNormalizerFactory::toJson(DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=DistributedFailureEvidenceSchemaNormalizerFactory::toJson(DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true)); auto b=DistributedFailureEvidenceSchemaNormalizerFactory::toJson(DistributedFailureEvidenceSchemaNormalizerFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1419: `DistributedFailureEvidence` schema + normalizer\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/JobOutputCanonicalizationAndTruncationUtilities.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(id); auto v=JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=JobOutputCanonicalizationAndTruncationUtilitiesFactory::toJson(JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=JobOutputCanonicalizationAndTruncationUtilitiesFactory::toJson(JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=JobOutputCanonicalizationAndTruncationUtilitiesFactory::toJson(JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=JobOutputCanonicalizationAndTruncationUtilitiesFactory::toJson(JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true)); auto b=JobOutputCanonicalizationAndTruncationUtilitiesFactory::toJson(JobOutputCanonicalizationAndTruncationUtilitiesFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1420: Job-output canonicalization and truncation utilities\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/DistributedReproCommandResolverModel.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(id); auto v=DistributedReproCommandResolverModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=DistributedReproCommandResolverModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=DistributedReproCommandResolverModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=DistributedReproCommandResolverModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=DistributedReproCommandResolverModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=DistributedReproCommandResolverModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=DistributedReproCommandResolverModelFactory::toJson(DistributedReproCommandResolverModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=DistributedReproCommandResolverModelFactory::toJson(DistributedReproCommandResolverModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=DistributedReproCommandResolverModelFactory::toJson(DistributedReproCommandResolverModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=DistributedReproCommandResolverModelFactory::toJson(DistributedReproCommandResolverModelFactory::make("x1","d1",7,true)); auto b=DistributedReproCommandResolverModelFactory::toJson(DistributedReproCommandResolverModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1421: Distributed repro command resolver model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/EvidenceBundleStoreDeterministicOrdering.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(id); auto v=EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=EvidenceBundleStoreDeterministicOrderingFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=EvidenceBundleStoreDeterministicOrderingFactory::toJson(EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=EvidenceBundleStoreDeterministicOrderingFactory::toJson(EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=EvidenceBundleStoreDeterministicOrderingFactory::toJson(EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=EvidenceBundleStoreDeterministicOrderingFactory::toJson(EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true)); auto b=EvidenceBundleStoreDeterministicOrderingFactory::toJson(EvidenceBundleStoreDeterministicOrderingFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1422: Evidence bundle store + deterministic ordering\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,16 @@
#include "MCPServer.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(tool_reg); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_capture_distributed_failure") found=true; C(found,"r"); P();}
void t2(){T(missing_fail); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",nlohmann::json::object()}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(!j["success"].get<bool>(),"f"); P();}
void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["success"].get<bool>(),"s"); P();}
void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j.contains("data"),"d"); P();}
void t5(){T(id_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["id"]=="x1","i"); P();}
void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["tool"]=="whetstone_capture_distributed_failure","t"); P();}
void t7(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["status"]=="ok","o"); P();}
void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_capture_distributed_failure"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get<std::string>()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get<std::string>()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();}
int main(){ std::cout<<"Step 1423: `whetstone_capture_distributed_failure` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,16 @@
#include "MCPServer.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(tool_reg); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_list_distributed_failures") found=true; C(found,"r"); P();}
void t2(){T(missing_fail); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",nlohmann::json::object()}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(!j["success"].get<bool>(),"f"); P();}
void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["success"].get<bool>(),"s"); P();}
void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j.contains("data"),"d"); P();}
void t5(){T(id_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["id"]=="x1","i"); P();}
void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["tool"]=="whetstone_list_distributed_failures","t"); P();}
void t7(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["status"]=="ok","o"); P();}
void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_list_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get<std::string>()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get<std::string>()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();}
int main(){ std::cout<<"Step 1424: `whetstone_list_distributed_failures` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,16 @@
#include "MCPServer.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(tool_reg); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_get_distributed_failure_bundle") found=true; C(found,"r"); P();}
void t2(){T(missing_fail); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",nlohmann::json::object()}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(!j["success"].get<bool>(),"f"); P();}
void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["success"].get<bool>(),"s"); P();}
void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j.contains("data"),"d"); P();}
void t5(){T(id_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["id"]=="x1","i"); P();}
void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["tool"]=="whetstone_get_distributed_failure_bundle","t"); P();}
void t7(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["status"]=="ok","o"); P();}
void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_failure_bundle"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get<std::string>()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get<std::string>()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();}
int main(){ std::cout<<"Step 1425: `whetstone_get_distributed_failure_bundle` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/DistributedEvidenceQualityScorerModel.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(id); auto v=DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=DistributedEvidenceQualityScorerModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=DistributedEvidenceQualityScorerModelFactory::toJson(DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=DistributedEvidenceQualityScorerModelFactory::toJson(DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=DistributedEvidenceQualityScorerModelFactory::toJson(DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=DistributedEvidenceQualityScorerModelFactory::toJson(DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true)); auto b=DistributedEvidenceQualityScorerModelFactory::toJson(DistributedEvidenceQualityScorerModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1426: Distributed evidence quality scorer model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/DistributedEvidencePacketExportModel.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(id); auto v=DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=DistributedEvidencePacketExportModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=DistributedEvidencePacketExportModelFactory::toJson(DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=DistributedEvidencePacketExportModelFactory::toJson(DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=DistributedEvidencePacketExportModelFactory::toJson(DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=DistributedEvidencePacketExportModelFactory::toJson(DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true)); auto b=DistributedEvidencePacketExportModelFactory::toJson(DistributedEvidencePacketExportModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1427: Distributed evidence packet export model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,17 @@
#include "Sprint118IntegrationSummary.h"
#include "MCPServer.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(verify); C(Sprint118IntegrationSummary::verify(),"v"); P();}
void t2(){T(sprint); auto j=Sprint118IntegrationSummary::toJson(); C(j["sprint"]==118,"s"); P();}
void t3(){T(steps); auto j=Sprint118IntegrationSummary::toJson(); C(j["steps"]==10,"s"); P();}
void t4(){T(theme); auto j=Sprint118IntegrationSummary::toJson(); C(j.contains("theme"),"t"); P();}
void t5(){T(tools); auto j=Sprint118IntegrationSummary::toJson(); C(j.contains("tools_added"),"t"); P();}
void t6(){T(reg_tool_1); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_capture_distributed_failure") found=true; C(found,"r"); P();}
void t7(){T(reg_tool_2); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_list_distributed_failures") found=true; C(found,"r"); P();}
void t8(){T(reg_tool_3); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_get_distributed_failure_bundle") found=true; C(found,"r"); P();}
int main(){ std::cout<<"Step 1428: Sprint 118 integration summary + full-program regression\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/CrossNodeFailureClusterModel.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(id); auto v=CrossNodeFailureClusterModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=CrossNodeFailureClusterModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=CrossNodeFailureClusterModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=CrossNodeFailureClusterModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=CrossNodeFailureClusterModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=CrossNodeFailureClusterModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=CrossNodeFailureClusterModelFactory::toJson(CrossNodeFailureClusterModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=CrossNodeFailureClusterModelFactory::toJson(CrossNodeFailureClusterModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=CrossNodeFailureClusterModelFactory::toJson(CrossNodeFailureClusterModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=CrossNodeFailureClusterModelFactory::toJson(CrossNodeFailureClusterModelFactory::make("x1","d1",7,true)); auto b=CrossNodeFailureClusterModelFactory::toJson(CrossNodeFailureClusterModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1429: Cross-node failure cluster model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/RootCauseRankingPolicyModel.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(id); auto v=RootCauseRankingPolicyModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=RootCauseRankingPolicyModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=RootCauseRankingPolicyModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=RootCauseRankingPolicyModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=RootCauseRankingPolicyModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=RootCauseRankingPolicyModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=RootCauseRankingPolicyModelFactory::toJson(RootCauseRankingPolicyModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=RootCauseRankingPolicyModelFactory::toJson(RootCauseRankingPolicyModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=RootCauseRankingPolicyModelFactory::toJson(RootCauseRankingPolicyModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=RootCauseRankingPolicyModelFactory::toJson(RootCauseRankingPolicyModelFactory::make("x1","d1",7,true)); auto b=RootCauseRankingPolicyModelFactory::toJson(RootCauseRankingPolicyModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1430: Root-cause ranking policy model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/BlastRadiusEstimatorForDistributedFailures.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(id); auto v=BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=BlastRadiusEstimatorForDistributedFailuresFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=BlastRadiusEstimatorForDistributedFailuresFactory::toJson(BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=BlastRadiusEstimatorForDistributedFailuresFactory::toJson(BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=BlastRadiusEstimatorForDistributedFailuresFactory::toJson(BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=BlastRadiusEstimatorForDistributedFailuresFactory::toJson(BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true)); auto b=BlastRadiusEstimatorForDistributedFailuresFactory::toJson(BlastRadiusEstimatorForDistributedFailuresFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1431: Blast-radius estimator for distributed failures\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/DeterministicTriageQueuePlannerModel.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(id); auto v=DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=DeterministicTriageQueuePlannerModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=DeterministicTriageQueuePlannerModelFactory::toJson(DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=DeterministicTriageQueuePlannerModelFactory::toJson(DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=DeterministicTriageQueuePlannerModelFactory::toJson(DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=DeterministicTriageQueuePlannerModelFactory::toJson(DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true)); auto b=DeterministicTriageQueuePlannerModelFactory::toJson(DeterministicTriageQueuePlannerModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1432: Deterministic triage queue planner model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,16 @@
#include "MCPServer.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(tool_reg); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_cluster_distributed_failures") found=true; C(found,"r"); P();}
void t2(){T(missing_fail); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",nlohmann::json::object()}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(!j["success"].get<bool>(),"f"); P();}
void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["success"].get<bool>(),"s"); P();}
void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j.contains("data"),"d"); P();}
void t5(){T(id_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["id"]=="x1","i"); P();}
void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["tool"]=="whetstone_cluster_distributed_failures","t"); P();}
void t7(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["status"]=="ok","o"); P();}
void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_cluster_distributed_failures"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get<std::string>()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get<std::string>()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();}
int main(){ std::cout<<"Step 1433: `whetstone_cluster_distributed_failures` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,16 @@
#include "MCPServer.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(tool_reg); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_rank_failure_triage_actions") found=true; C(found,"r"); P();}
void t2(){T(missing_fail); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",nlohmann::json::object()}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(!j["success"].get<bool>(),"f"); P();}
void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["success"].get<bool>(),"s"); P();}
void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j.contains("data"),"d"); P();}
void t5(){T(id_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["id"]=="x1","i"); P();}
void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["tool"]=="whetstone_rank_failure_triage_actions","t"); P();}
void t7(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["status"]=="ok","o"); P();}
void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_rank_failure_triage_actions"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get<std::string>()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get<std::string>()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();}
int main(){ std::cout<<"Step 1434: `whetstone_rank_failure_triage_actions` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,16 @@
#include "MCPServer.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(tool_reg); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_get_distributed_triage_queue") found=true; C(found,"r"); P();}
void t2(){T(missing_fail); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",nlohmann::json::object()}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(!j["success"].get<bool>(),"f"); P();}
void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["success"].get<bool>(),"s"); P();}
void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j.contains("data"),"d"); P();}
void t5(){T(id_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["id"]=="x1","i"); P();}
void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["tool"]=="whetstone_get_distributed_triage_queue","t"); P();}
void t7(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get<std::string>()); C(j["status"]=="ok","o"); P();}
void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_distributed_triage_queue"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get<std::string>()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get<std::string>()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();}
int main(){ std::cout<<"Step 1435: `whetstone_get_distributed_triage_queue` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/EscalationReasonClassifierModel.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(id); auto v=EscalationReasonClassifierModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=EscalationReasonClassifierModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=EscalationReasonClassifierModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=EscalationReasonClassifierModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=EscalationReasonClassifierModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=EscalationReasonClassifierModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=EscalationReasonClassifierModelFactory::toJson(EscalationReasonClassifierModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=EscalationReasonClassifierModelFactory::toJson(EscalationReasonClassifierModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=EscalationReasonClassifierModelFactory::toJson(EscalationReasonClassifierModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=EscalationReasonClassifierModelFactory::toJson(EscalationReasonClassifierModelFactory::make("x1","d1",7,true)); auto b=EscalationReasonClassifierModelFactory::toJson(EscalationReasonClassifierModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1436: Escalation reason classifier model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,18 @@
#include "graduation/TriagePacketBundleModel.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(id); auto v=TriagePacketBundleModelFactory::make("x1","d1",7,true); C(v.id=="x1","i"); P();}
void t2(){T(detail); auto v=TriagePacketBundleModelFactory::make("x1","d1",7,true); C(v.detail=="d1","d"); P();}
void t3(){T(score); auto v=TriagePacketBundleModelFactory::make("x1","d1",7,true); C(v.score==7,"s"); P();}
void t4(){T(enabled); auto v=TriagePacketBundleModelFactory::make("x1","d1",7,true); C(v.enabled,"e"); P();}
void t5(){T(valid_true); auto v=TriagePacketBundleModelFactory::make("x1","d1",7,true); C(v.valid,"v"); P();}
void t6(){T(valid_false); auto v=TriagePacketBundleModelFactory::make("","d1",7,true); C(!v.valid,"v"); P();}
void t7(){T(json_valid); auto j=TriagePacketBundleModelFactory::toJson(TriagePacketBundleModelFactory::make("x1","d1",7,true)); C(j["valid"].get<bool>(),"j"); P();}
void t8(){T(json_score); auto j=TriagePacketBundleModelFactory::toJson(TriagePacketBundleModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();}
void t9(){T(json_id); auto j=TriagePacketBundleModelFactory::toJson(TriagePacketBundleModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();}
void t10(){T(deterministic); auto a=TriagePacketBundleModelFactory::toJson(TriagePacketBundleModelFactory::make("x1","d1",7,true)); auto b=TriagePacketBundleModelFactory::toJson(TriagePacketBundleModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();}
int main(){ std::cout<<"Step 1437: Triage packet bundle model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }

View File

@@ -0,0 +1,17 @@
#include "Sprint119IntegrationSummary.h"
#include "MCPServer.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(verify); C(Sprint119IntegrationSummary::verify(),"v"); P();}
void t2(){T(sprint); auto j=Sprint119IntegrationSummary::toJson(); C(j["sprint"]==119,"s"); P();}
void t3(){T(steps); auto j=Sprint119IntegrationSummary::toJson(); C(j["steps"]==10,"s"); P();}
void t4(){T(theme); auto j=Sprint119IntegrationSummary::toJson(); C(j.contains("theme"),"t"); P();}
void t5(){T(tools); auto j=Sprint119IntegrationSummary::toJson(); C(j.contains("tools_added"),"t"); P();}
void t6(){T(reg_tool_1); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_cluster_distributed_failures") found=true; C(found,"r"); P();}
void t7(){T(reg_tool_2); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_rank_failure_triage_actions") found=true; C(found,"r"); P();}
void t8(){T(reg_tool_3); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/list"},{"params",{}}}); bool found=false; for(auto&t:r["result"]["tools"]) if(t["name"]=="whetstone_get_distributed_triage_queue") found=true; C(found,"r"); P();}
int main(){ std::cout<<"Step 1438: Sprint 119 integration summary + full-program regression\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n"; return f?1:0; }