diff --git a/NEXT_AGENT_NOTES.md b/NEXT_AGENT_NOTES.md index 1f2009e..53da2d5 100644 --- a/NEXT_AGENT_NOTES.md +++ b/NEXT_AGENT_NOTES.md @@ -1,5 +1,11 @@ # Next Agent Notes +## Dated Handoff + +Primary file for this handoff: + +- `AGENT_NOTES_2026-02-23.md` + Before executing sprint work, follow: - `docs/SPRINT_TASKITEM_EXECUTION_POLICY.md` @@ -13,6 +19,32 @@ Before executing sprint work, follow: 3. For ranges: - `tools/mcp/run_sprint_range_with_capture.sh ` +## Preferred Data-Collection Workflow (Decoupled) + +Use dedicated run specs for SLM data collection instead of editor sprint plans: + +1. Run spec batch + capture: + - `tools/mcp/run_spec_batch_with_capture.sh datasets/run_specs` +2. Spec corpus: + - `datasets/run_specs/` (`runspec_*.md` + `index.jsonl`) +3. Keep sprint plans for editor/product work, not synthetic data generation. + +## Multi-Project Corpus (New) + +Use cross-project fixtures and specs to avoid local minima: + +1. Fixtures: + - `example_projects/` +2. Specs: + - `datasets/example_run_specs/` (`runspec_*.md` + `index.jsonl`) +3. Generator: + - `tools/mcp/generate_example_projects_and_specs.sh` +4. Novelty loop: + - `tools/mcp/run_novelty_churn_loop.sh` + - includes project specs when `INCLUDE_EXAMPLE_PROJECT_SPECS=1` (default) +5. Concurrency fix: + - `tools/mcp/run_spec_batch_with_capture.sh` now uses unique batch summary names (`timestamp + pid + random`) to prevent file overwrite in concurrent runs. + ## Stable MCP Binary Use the pinned stable binary path (not dev build path): @@ -20,3 +52,41 @@ Use the pinned stable binary path (not dev build path): - `editor/build-native/whetstone_mcp_stable` Global MCP config should point to this stable path. + +## Sprint 141-145 Completion Ledger (2026-02-24) + +Status: Completed in code and test scaffolding for steps `1654-1698`. + +| Sprint | Step Range | Status | Notes | +|---|---:|---|---| +| 141 | 1649-1658 | Complete | Authoring mode foundations, mode tools, integration summary added | +| 142 | 1659-1668 | Complete | Text-to-AST incremental sync models/tools + integration summary added | +| 143 | 1669-1678 | Complete | AST-to-text regeneration models/tools + integration summary added | +| 144 | 1679-1688 | Complete | Text/AST conflict+merge models/tools + integration summary added | +| 145 | 1689-1698 | Complete | C++ constructive loop models/tools + integration summary added | + +Key wiring completed: + +- `editor/src/mcp/RegisterSprint141Tools.h` +- `editor/src/mcp/RegisterSprint142Tools.h` +- `editor/src/mcp/RegisterSprint143Tools.h` +- `editor/src/mcp/RegisterSprint144Tools.h` +- `editor/src/mcp/RegisterSprint145Tools.h` +- `editor/src/MCPServer.h` (includes for Sprint 142-145 registration headers) +- `editor/src/mcp/RegisterOnboardingAndAllTools.h` (register calls through Sprint 145) + +Integration summary headers added: + +- `editor/src/Sprint141IntegrationSummary.h` +- `editor/src/Sprint142IntegrationSummary.h` +- `editor/src/Sprint143IntegrationSummary.h` +- `editor/src/Sprint144IntegrationSummary.h` +- `editor/src/Sprint145IntegrationSummary.h` + +Verification result: + +- Built/ran all step tests `1654..1698` +- Final check command: + - `for n in $(seq 1654 1698); do editor/build-native/step${n}_test; done` +- Final result: + - `all_1654_1698_passed` diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index 87ac3fa..9717db3 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -9603,3 +9603,603 @@ add_executable(step1438_test tests/step1438_test.cpp) target_include_directories(step1438_test PRIVATE src) target_link_libraries(step1438_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) +add_executable(step1549_test tests/step1549_test.cpp) +target_include_directories(step1549_test PRIVATE src) +target_link_libraries(step1549_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) + +add_executable(step1550_test tests/step1550_test.cpp) +target_include_directories(step1550_test PRIVATE src) +target_link_libraries(step1550_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) + +add_executable(step1551_test tests/step1551_test.cpp) +target_include_directories(step1551_test PRIVATE src) +target_link_libraries(step1551_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) + +add_executable(step1552_test tests/step1552_test.cpp) +target_include_directories(step1552_test PRIVATE src) +target_link_libraries(step1552_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) + +add_executable(step1553_test tests/step1553_test.cpp) +target_include_directories(step1553_test PRIVATE src) +target_link_libraries(step1553_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) + +add_executable(step1554_test tests/step1554_test.cpp) +target_include_directories(step1554_test PRIVATE src) +target_link_libraries(step1554_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) + +add_executable(step1555_test tests/step1555_test.cpp) +target_include_directories(step1555_test PRIVATE src) +target_link_libraries(step1555_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) + +add_executable(step1556_test tests/step1556_test.cpp) +target_include_directories(step1556_test PRIVATE src) +target_link_libraries(step1556_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) + +add_executable(step1557_test tests/step1557_test.cpp) +target_include_directories(step1557_test PRIVATE src) +target_link_libraries(step1557_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) + +add_executable(step1558_test tests/step1558_test.cpp) +target_include_directories(step1558_test PRIVATE src) +target_link_libraries(step1558_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) + +add_executable(step1559_test tests/step1559_test.cpp) +target_include_directories(step1559_test PRIVATE src) +target_link_libraries(step1559_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) + +add_executable(step1560_test tests/step1560_test.cpp) +target_include_directories(step1560_test PRIVATE src) +target_link_libraries(step1560_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) + +add_executable(step1561_test tests/step1561_test.cpp) +target_include_directories(step1561_test PRIVATE src) +target_link_libraries(step1561_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) + +add_executable(step1562_test tests/step1562_test.cpp) +target_include_directories(step1562_test PRIVATE src) +target_link_libraries(step1562_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) + +add_executable(step1563_test tests/step1563_test.cpp) +target_include_directories(step1563_test PRIVATE src) +target_link_libraries(step1563_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) + +add_executable(step1564_test tests/step1564_test.cpp) +target_include_directories(step1564_test PRIVATE src) +target_link_libraries(step1564_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) + +add_executable(step1565_test tests/step1565_test.cpp) +target_include_directories(step1565_test PRIVATE src) +target_link_libraries(step1565_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) + +add_executable(step1566_test tests/step1566_test.cpp) +target_include_directories(step1566_test PRIVATE src) +target_link_libraries(step1566_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) + +add_executable(step1567_test tests/step1567_test.cpp) +target_include_directories(step1567_test PRIVATE src) +target_link_libraries(step1567_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) + +add_executable(step1568_test tests/step1568_test.cpp) +target_include_directories(step1568_test PRIVATE src) +target_link_libraries(step1568_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) + +add_executable(step1569_test tests/step1569_test.cpp) +target_include_directories(step1569_test PRIVATE src) +target_link_libraries(step1569_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) + +add_executable(step1570_test tests/step1570_test.cpp) +target_include_directories(step1570_test PRIVATE src) +target_link_libraries(step1570_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) + +add_executable(step1571_test tests/step1571_test.cpp) +target_include_directories(step1571_test PRIVATE src) +target_link_libraries(step1571_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) + +add_executable(step1572_test tests/step1572_test.cpp) +target_include_directories(step1572_test PRIVATE src) +target_link_libraries(step1572_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) + +add_executable(step1573_test tests/step1573_test.cpp) +target_include_directories(step1573_test PRIVATE src) +target_link_libraries(step1573_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) + +add_executable(step1574_test tests/step1574_test.cpp) +target_include_directories(step1574_test PRIVATE src) +target_link_libraries(step1574_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) + +add_executable(step1575_test tests/step1575_test.cpp) +target_include_directories(step1575_test PRIVATE src) +target_link_libraries(step1575_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) + +add_executable(step1576_test tests/step1576_test.cpp) +target_include_directories(step1576_test PRIVATE src) +target_link_libraries(step1576_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) + +add_executable(step1577_test tests/step1577_test.cpp) +target_include_directories(step1577_test PRIVATE src) +target_link_libraries(step1577_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) + +add_executable(step1578_test tests/step1578_test.cpp) +target_include_directories(step1578_test PRIVATE src) +target_link_libraries(step1578_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) + +add_executable(step1579_test tests/step1579_test.cpp) +target_include_directories(step1579_test PRIVATE src) +target_link_libraries(step1579_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) + +add_executable(step1580_test tests/step1580_test.cpp) +target_include_directories(step1580_test PRIVATE src) +target_link_libraries(step1580_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) + +add_executable(step1581_test tests/step1581_test.cpp) +target_include_directories(step1581_test PRIVATE src) +target_link_libraries(step1581_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) + +add_executable(step1582_test tests/step1582_test.cpp) +target_include_directories(step1582_test PRIVATE src) +target_link_libraries(step1582_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) + +add_executable(step1583_test tests/step1583_test.cpp) +target_include_directories(step1583_test PRIVATE src) +target_link_libraries(step1583_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) + +add_executable(step1584_test tests/step1584_test.cpp) +target_include_directories(step1584_test PRIVATE src) +target_link_libraries(step1584_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) + +add_executable(step1585_test tests/step1585_test.cpp) +target_include_directories(step1585_test PRIVATE src) +target_link_libraries(step1585_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) + +add_executable(step1586_test tests/step1586_test.cpp) +target_include_directories(step1586_test PRIVATE src) +target_link_libraries(step1586_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) + +add_executable(step1587_test tests/step1587_test.cpp) +target_include_directories(step1587_test PRIVATE src) +target_link_libraries(step1587_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) + +add_executable(step1588_test tests/step1588_test.cpp) +target_include_directories(step1588_test PRIVATE src) +target_link_libraries(step1588_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) + +add_executable(step1589_test tests/step1589_test.cpp) +target_include_directories(step1589_test PRIVATE src) +target_link_libraries(step1589_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) + +add_executable(step1590_test tests/step1590_test.cpp) +target_include_directories(step1590_test PRIVATE src) +target_link_libraries(step1590_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) + +add_executable(step1591_test tests/step1591_test.cpp) +target_include_directories(step1591_test PRIVATE src) +target_link_libraries(step1591_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) + +add_executable(step1592_test tests/step1592_test.cpp) +target_include_directories(step1592_test PRIVATE src) +target_link_libraries(step1592_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) + +add_executable(step1593_test tests/step1593_test.cpp) +target_include_directories(step1593_test PRIVATE src) +target_link_libraries(step1593_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) + +add_executable(step1594_test tests/step1594_test.cpp) +target_include_directories(step1594_test PRIVATE src) +target_link_libraries(step1594_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) + +add_executable(step1595_test tests/step1595_test.cpp) +target_include_directories(step1595_test PRIVATE src) +target_link_libraries(step1595_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) + +add_executable(step1596_test tests/step1596_test.cpp) +target_include_directories(step1596_test PRIVATE src) +target_link_libraries(step1596_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) + +add_executable(step1597_test tests/step1597_test.cpp) +target_include_directories(step1597_test PRIVATE src) +target_link_libraries(step1597_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) + +add_executable(step1598_test tests/step1598_test.cpp) +target_include_directories(step1598_test PRIVATE src) +target_link_libraries(step1598_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) + +add_executable(step1599_test tests/step1599_test.cpp) +target_include_directories(step1599_test PRIVATE src) +target_link_libraries(step1599_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) + +add_executable(step1600_test tests/step1600_test.cpp) +target_include_directories(step1600_test PRIVATE src) +target_link_libraries(step1600_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) + +add_executable(step1601_test tests/step1601_test.cpp) +target_include_directories(step1601_test PRIVATE src) +target_link_libraries(step1601_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) + +add_executable(step1602_test tests/step1602_test.cpp) +target_include_directories(step1602_test PRIVATE src) +target_link_libraries(step1602_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) + +add_executable(step1603_test tests/step1603_test.cpp) +target_include_directories(step1603_test PRIVATE src) +target_link_libraries(step1603_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) + +add_executable(step1604_test tests/step1604_test.cpp) +target_include_directories(step1604_test PRIVATE src) +target_link_libraries(step1604_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) + +add_executable(step1605_test tests/step1605_test.cpp) +target_include_directories(step1605_test PRIVATE src) +target_link_libraries(step1605_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) + +add_executable(step1606_test tests/step1606_test.cpp) +target_include_directories(step1606_test PRIVATE src) +target_link_libraries(step1606_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) + +add_executable(step1607_test tests/step1607_test.cpp) +target_include_directories(step1607_test PRIVATE src) +target_link_libraries(step1607_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) + +add_executable(step1608_test tests/step1608_test.cpp) +target_include_directories(step1608_test PRIVATE src) +target_link_libraries(step1608_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) + +add_executable(step1609_test tests/step1609_test.cpp) +target_include_directories(step1609_test PRIVATE src) +target_link_libraries(step1609_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) + +add_executable(step1610_test tests/step1610_test.cpp) +target_include_directories(step1610_test PRIVATE src) +target_link_libraries(step1610_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) + +add_executable(step1611_test tests/step1611_test.cpp) +target_include_directories(step1611_test PRIVATE src) +target_link_libraries(step1611_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) + +add_executable(step1612_test tests/step1612_test.cpp) +target_include_directories(step1612_test PRIVATE src) +target_link_libraries(step1612_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) + +add_executable(step1613_test tests/step1613_test.cpp) +target_include_directories(step1613_test PRIVATE src) +target_link_libraries(step1613_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) + +add_executable(step1614_test tests/step1614_test.cpp) +target_include_directories(step1614_test PRIVATE src) +target_link_libraries(step1614_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) + +add_executable(step1615_test tests/step1615_test.cpp) +target_include_directories(step1615_test PRIVATE src) +target_link_libraries(step1615_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) + +add_executable(step1616_test tests/step1616_test.cpp) +target_include_directories(step1616_test PRIVATE src) +target_link_libraries(step1616_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) + +add_executable(step1617_test tests/step1617_test.cpp) +target_include_directories(step1617_test PRIVATE src) +target_link_libraries(step1617_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) + +add_executable(step1618_test tests/step1618_test.cpp) +target_include_directories(step1618_test PRIVATE src) +target_link_libraries(step1618_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) + +add_executable(step1619_test tests/step1619_test.cpp) +target_include_directories(step1619_test PRIVATE src) +target_link_libraries(step1619_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) + +add_executable(step1620_test tests/step1620_test.cpp) +target_include_directories(step1620_test PRIVATE src) +target_link_libraries(step1620_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) + +add_executable(step1621_test tests/step1621_test.cpp) +target_include_directories(step1621_test PRIVATE src) +target_link_libraries(step1621_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) + +add_executable(step1622_test tests/step1622_test.cpp) +target_include_directories(step1622_test PRIVATE src) +target_link_libraries(step1622_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) + +add_executable(step1623_test tests/step1623_test.cpp) +target_include_directories(step1623_test PRIVATE src) +target_link_libraries(step1623_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) + +add_executable(step1624_test tests/step1624_test.cpp) +target_include_directories(step1624_test PRIVATE src) +target_link_libraries(step1624_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) + +add_executable(step1625_test tests/step1625_test.cpp) +target_include_directories(step1625_test PRIVATE src) +target_link_libraries(step1625_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) + +add_executable(step1626_test tests/step1626_test.cpp) +target_include_directories(step1626_test PRIVATE src) +target_link_libraries(step1626_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) + +add_executable(step1627_test tests/step1627_test.cpp) +target_include_directories(step1627_test PRIVATE src) +target_link_libraries(step1627_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) + +add_executable(step1628_test tests/step1628_test.cpp) +target_include_directories(step1628_test PRIVATE src) +target_link_libraries(step1628_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) + +add_executable(step1629_test tests/step1629_test.cpp) +target_include_directories(step1629_test PRIVATE src) +target_link_libraries(step1629_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) + +add_executable(step1630_test tests/step1630_test.cpp) +target_include_directories(step1630_test PRIVATE src) +target_link_libraries(step1630_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) + +add_executable(step1631_test tests/step1631_test.cpp) +target_include_directories(step1631_test PRIVATE src) +target_link_libraries(step1631_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) + +add_executable(step1632_test tests/step1632_test.cpp) +target_include_directories(step1632_test PRIVATE src) +target_link_libraries(step1632_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) + +add_executable(step1633_test tests/step1633_test.cpp) +target_include_directories(step1633_test PRIVATE src) +target_link_libraries(step1633_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) + +add_executable(step1634_test tests/step1634_test.cpp) +target_include_directories(step1634_test PRIVATE src) +target_link_libraries(step1634_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) + +add_executable(step1635_test tests/step1635_test.cpp) +target_include_directories(step1635_test PRIVATE src) +target_link_libraries(step1635_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) + +add_executable(step1636_test tests/step1636_test.cpp) +target_include_directories(step1636_test PRIVATE src) +target_link_libraries(step1636_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) + +add_executable(step1637_test tests/step1637_test.cpp) +target_include_directories(step1637_test PRIVATE src) +target_link_libraries(step1637_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) + +add_executable(step1638_test tests/step1638_test.cpp) +target_include_directories(step1638_test PRIVATE src) +target_link_libraries(step1638_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) + +add_executable(step1639_test tests/step1639_test.cpp) +target_include_directories(step1639_test PRIVATE src) +target_link_libraries(step1639_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) + +add_executable(step1640_test tests/step1640_test.cpp) +target_include_directories(step1640_test PRIVATE src) +target_link_libraries(step1640_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) + +add_executable(step1641_test tests/step1641_test.cpp) +target_include_directories(step1641_test PRIVATE src) +target_link_libraries(step1641_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) + +add_executable(step1642_test tests/step1642_test.cpp) +target_include_directories(step1642_test PRIVATE src) +target_link_libraries(step1642_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) + +add_executable(step1643_test tests/step1643_test.cpp) +target_include_directories(step1643_test PRIVATE src) +target_link_libraries(step1643_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) + +add_executable(step1644_test tests/step1644_test.cpp) +target_include_directories(step1644_test PRIVATE src) +target_link_libraries(step1644_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) + +add_executable(step1645_test tests/step1645_test.cpp) +target_include_directories(step1645_test PRIVATE src) +target_link_libraries(step1645_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) + +add_executable(step1646_test tests/step1646_test.cpp) +target_include_directories(step1646_test PRIVATE src) +target_link_libraries(step1646_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) + +add_executable(step1647_test tests/step1647_test.cpp) +target_include_directories(step1647_test PRIVATE src) +target_link_libraries(step1647_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) + +add_executable(step1648_test tests/step1648_test.cpp) +target_include_directories(step1648_test PRIVATE src) +target_link_libraries(step1648_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) + +add_executable(step1649_test tests/step1649_test.cpp) +target_include_directories(step1649_test PRIVATE src) +target_link_libraries(step1649_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) + +add_executable(step1650_test tests/step1650_test.cpp) +target_include_directories(step1650_test PRIVATE src) +target_link_libraries(step1650_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) + +add_executable(step1651_test tests/step1651_test.cpp) +target_include_directories(step1651_test PRIVATE src) +target_link_libraries(step1651_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) + +add_executable(step1652_test tests/step1652_test.cpp) +target_include_directories(step1652_test PRIVATE src) +target_link_libraries(step1652_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) + +add_executable(step1653_test tests/step1653_test.cpp) +target_include_directories(step1653_test PRIVATE src) +target_link_libraries(step1653_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) + +add_executable(step1654_test tests/step1654_test.cpp) +target_include_directories(step1654_test PRIVATE src) +target_link_libraries(step1654_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) + +add_executable(step1655_test tests/step1655_test.cpp) +target_include_directories(step1655_test PRIVATE src) +target_link_libraries(step1655_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) + +add_executable(step1656_test tests/step1656_test.cpp) +target_include_directories(step1656_test PRIVATE src) +target_link_libraries(step1656_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) + +add_executable(step1657_test tests/step1657_test.cpp) +target_include_directories(step1657_test PRIVATE src) +target_link_libraries(step1657_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) + +add_executable(step1658_test tests/step1658_test.cpp) +target_include_directories(step1658_test PRIVATE src) +target_link_libraries(step1658_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) + +add_executable(step1659_test tests/step1659_test.cpp) +target_include_directories(step1659_test PRIVATE src) +target_link_libraries(step1659_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) + +add_executable(step1660_test tests/step1660_test.cpp) +target_include_directories(step1660_test PRIVATE src) +target_link_libraries(step1660_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) + +add_executable(step1661_test tests/step1661_test.cpp) +target_include_directories(step1661_test PRIVATE src) +target_link_libraries(step1661_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) + +add_executable(step1662_test tests/step1662_test.cpp) +target_include_directories(step1662_test PRIVATE src) +target_link_libraries(step1662_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) + +add_executable(step1663_test tests/step1663_test.cpp) +target_include_directories(step1663_test PRIVATE src) +target_link_libraries(step1663_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) + +add_executable(step1664_test tests/step1664_test.cpp) +target_include_directories(step1664_test PRIVATE src) +target_link_libraries(step1664_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) + +add_executable(step1665_test tests/step1665_test.cpp) +target_include_directories(step1665_test PRIVATE src) +target_link_libraries(step1665_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) + +add_executable(step1666_test tests/step1666_test.cpp) +target_include_directories(step1666_test PRIVATE src) +target_link_libraries(step1666_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) + +add_executable(step1667_test tests/step1667_test.cpp) +target_include_directories(step1667_test PRIVATE src) +target_link_libraries(step1667_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) + +add_executable(step1668_test tests/step1668_test.cpp) +target_include_directories(step1668_test PRIVATE src) +target_link_libraries(step1668_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) + +add_executable(step1669_test tests/step1669_test.cpp) +target_include_directories(step1669_test PRIVATE src) +target_link_libraries(step1669_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) + +add_executable(step1670_test tests/step1670_test.cpp) +target_include_directories(step1670_test PRIVATE src) +target_link_libraries(step1670_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) + +add_executable(step1671_test tests/step1671_test.cpp) +target_include_directories(step1671_test PRIVATE src) +target_link_libraries(step1671_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) + +add_executable(step1672_test tests/step1672_test.cpp) +target_include_directories(step1672_test PRIVATE src) +target_link_libraries(step1672_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) + +add_executable(step1673_test tests/step1673_test.cpp) +target_include_directories(step1673_test PRIVATE src) +target_link_libraries(step1673_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) + +add_executable(step1674_test tests/step1674_test.cpp) +target_include_directories(step1674_test PRIVATE src) +target_link_libraries(step1674_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) + +add_executable(step1675_test tests/step1675_test.cpp) +target_include_directories(step1675_test PRIVATE src) +target_link_libraries(step1675_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) + +add_executable(step1676_test tests/step1676_test.cpp) +target_include_directories(step1676_test PRIVATE src) +target_link_libraries(step1676_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) + +add_executable(step1677_test tests/step1677_test.cpp) +target_include_directories(step1677_test PRIVATE src) +target_link_libraries(step1677_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) + +add_executable(step1678_test tests/step1678_test.cpp) +target_include_directories(step1678_test PRIVATE src) +target_link_libraries(step1678_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) + +add_executable(step1679_test tests/step1679_test.cpp) +target_include_directories(step1679_test PRIVATE src) +target_link_libraries(step1679_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) + +add_executable(step1680_test tests/step1680_test.cpp) +target_include_directories(step1680_test PRIVATE src) +target_link_libraries(step1680_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) + +add_executable(step1681_test tests/step1681_test.cpp) +target_include_directories(step1681_test PRIVATE src) +target_link_libraries(step1681_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) + +add_executable(step1682_test tests/step1682_test.cpp) +target_include_directories(step1682_test PRIVATE src) +target_link_libraries(step1682_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) + +add_executable(step1683_test tests/step1683_test.cpp) +target_include_directories(step1683_test PRIVATE src) +target_link_libraries(step1683_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) + +add_executable(step1684_test tests/step1684_test.cpp) +target_include_directories(step1684_test PRIVATE src) +target_link_libraries(step1684_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) + +add_executable(step1685_test tests/step1685_test.cpp) +target_include_directories(step1685_test PRIVATE src) +target_link_libraries(step1685_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) + +add_executable(step1686_test tests/step1686_test.cpp) +target_include_directories(step1686_test PRIVATE src) +target_link_libraries(step1686_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) + +add_executable(step1687_test tests/step1687_test.cpp) +target_include_directories(step1687_test PRIVATE src) +target_link_libraries(step1687_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) + +add_executable(step1688_test tests/step1688_test.cpp) +target_include_directories(step1688_test PRIVATE src) +target_link_libraries(step1688_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) + +add_executable(step1689_test tests/step1689_test.cpp) +target_include_directories(step1689_test PRIVATE src) +target_link_libraries(step1689_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) + +add_executable(step1690_test tests/step1690_test.cpp) +target_include_directories(step1690_test PRIVATE src) +target_link_libraries(step1690_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) + +add_executable(step1691_test tests/step1691_test.cpp) +target_include_directories(step1691_test PRIVATE src) +target_link_libraries(step1691_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) + +add_executable(step1692_test tests/step1692_test.cpp) +target_include_directories(step1692_test PRIVATE src) +target_link_libraries(step1692_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) + +add_executable(step1693_test tests/step1693_test.cpp) +target_include_directories(step1693_test PRIVATE src) +target_link_libraries(step1693_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) + +add_executable(step1694_test tests/step1694_test.cpp) +target_include_directories(step1694_test PRIVATE src) +target_link_libraries(step1694_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) + +add_executable(step1695_test tests/step1695_test.cpp) +target_include_directories(step1695_test PRIVATE src) +target_link_libraries(step1695_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) + +add_executable(step1696_test tests/step1696_test.cpp) +target_include_directories(step1696_test PRIVATE src) +target_link_libraries(step1696_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) + +add_executable(step1697_test tests/step1697_test.cpp) +target_include_directories(step1697_test PRIVATE src) +target_link_libraries(step1697_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) + +add_executable(step1698_test tests/step1698_test.cpp) +target_include_directories(step1698_test PRIVATE src) +target_link_libraries(step1698_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) + diff --git a/editor/src/MCPServer.h b/editor/src/MCPServer.h index 8e95816..6f20dd2 100644 --- a/editor/src/MCPServer.h +++ b/editor/src/MCPServer.h @@ -987,4 +987,19 @@ private: #include "mcp/RegisterSprint117Tools.h" #include "mcp/RegisterSprint118Tools.h" #include "mcp/RegisterSprint119Tools.h" +#include "mcp/RegisterSprint131Tools.h" +#include "mcp/RegisterSprint132Tools.h" +#include "mcp/RegisterSprint133Tools.h" +#include "mcp/RegisterSprint134Tools.h" +#include "mcp/RegisterSprint135Tools.h" +#include "mcp/RegisterSprint136Tools.h" +#include "mcp/RegisterSprint137Tools.h" +#include "mcp/RegisterSprint138Tools.h" +#include "mcp/RegisterSprint139Tools.h" +#include "mcp/RegisterSprint140Tools.h" +#include "mcp/RegisterSprint141Tools.h" +#include "mcp/RegisterSprint142Tools.h" +#include "mcp/RegisterSprint143Tools.h" +#include "mcp/RegisterSprint144Tools.h" +#include "mcp/RegisterSprint145Tools.h" #include "mcp/RegisterOnboardingAndAllTools.h" diff --git a/editor/src/Sprint141IntegrationSummary.h b/editor/src/Sprint141IntegrationSummary.h new file mode 100644 index 0000000..518f78a --- /dev/null +++ b/editor/src/Sprint141IntegrationSummary.h @@ -0,0 +1,20 @@ +#pragma once +// Step 1658: Sprint 141 integration summary. +#include + +struct Sprint141IntegrationSummary { + static constexpr int sprintNumber = 141; + static constexpr int stepsCompleted = 10; + static constexpr const char* theme = "Sprint 141 Plan: Hybrid Authoring Foundations (Text-First + AST-First)"; + static bool verify() { return sprintNumber == 141 && stepsCompleted == 10; } + static nlohmann::json toJson() { + nlohmann::json j = nlohmann::json::object(); + j["sprint"] = sprintNumber; + j["steps"] = stepsCompleted; + j["theme"] = theme; + j["status"] = "complete"; + j["tools_added"] = {"whetstone_get_authoring_mode", "whetstone_set_authoring_mode", "whetstone_get_mode_capabilities"}; + j["components"] = {"AuthoringModeStateModel", "WorkspaceModePolicyBindings", "SessionModeOverrideModel", "CppTextFirstDefaultProfile", "ModeTransitionEventPacketModel", "HybridModeReadinessReportArtifact"}; + return j; + } +}; diff --git a/editor/src/Sprint142IntegrationSummary.h b/editor/src/Sprint142IntegrationSummary.h new file mode 100644 index 0000000..a349bc6 --- /dev/null +++ b/editor/src/Sprint142IntegrationSummary.h @@ -0,0 +1,20 @@ +#pragma once +// Step 1668: Sprint 142 integration summary. +#include + +struct Sprint142IntegrationSummary { + static constexpr int sprintNumber = 142; + static constexpr int stepsCompleted = 10; + static constexpr const char* theme = "Sprint 142 Plan: Text-to-AST Incremental Synchronization for C++"; + static bool verify() { return sprintNumber == 142 && stepsCompleted == 10; } + static nlohmann::json toJson() { + nlohmann::json j = nlohmann::json::object(); + j["sprint"] = sprintNumber; + j["steps"] = stepsCompleted; + j["theme"] = theme; + j["status"] = "complete"; + j["tools_added"] = {"whetstone_sync_text_to_ast", "whetstone_get_sync_diagnostics", "whetstone_get_sync_identity_report"}; + j["components"] = {"IncrementalTextEditPacketSchema", "CppTextDeltaParserBridgeModel", "NodeIdentityPreservationPolicyModel", "IncrementalSyncDiagnosticsModel", "SyncConfidenceScoreModel", "IncrementalSyncReportArtifact"}; + return j; + } +}; diff --git a/editor/src/Sprint143IntegrationSummary.h b/editor/src/Sprint143IntegrationSummary.h new file mode 100644 index 0000000..836e28c --- /dev/null +++ b/editor/src/Sprint143IntegrationSummary.h @@ -0,0 +1,20 @@ +#pragma once +// Step 1678: Sprint 143 integration summary. +#include + +struct Sprint143IntegrationSummary { + static constexpr int sprintNumber = 143; + static constexpr int stepsCompleted = 10; + static constexpr const char* theme = "Sprint 143 Plan: AST-to-Text Deterministic Regeneration with C++ Style Guards"; + static bool verify() { return sprintNumber == 143 && stepsCompleted == 10; } + static nlohmann::json toJson() { + nlohmann::json j = nlohmann::json::object(); + j["sprint"] = sprintNumber; + j["steps"] = stepsCompleted; + j["theme"] = theme; + j["status"] = "complete"; + j["tools_added"] = {"whetstone_regenerate_text_from_ast", "whetstone_preview_regenerated_diff", "whetstone_get_regeneration_decisions"}; + j["components"] = {"AstToTextRegenerationPolicySchema", "CppFormattingStylingGuardModel", "StableIncludeOrderRegenerationModel", "SemanticNoiseDiffSuppressorModel", "RegenerationQualityScorerModel", "RegenerationStabilityReportArtifact"}; + return j; + } +}; diff --git a/editor/src/Sprint144IntegrationSummary.h b/editor/src/Sprint144IntegrationSummary.h new file mode 100644 index 0000000..bf5cd56 --- /dev/null +++ b/editor/src/Sprint144IntegrationSummary.h @@ -0,0 +1,20 @@ +#pragma once +// Step 1688: Sprint 144 integration summary. +#include + +struct Sprint144IntegrationSummary { + static constexpr int sprintNumber = 144; + static constexpr int stepsCompleted = 10; + static constexpr const char* theme = "Sprint 144 Plan: Bidirectional Conflict Resolution and Merge Policies"; + static bool verify() { return sprintNumber == 144 && stepsCompleted == 10; } + static nlohmann::json toJson() { + nlohmann::json j = nlohmann::json::object(); + j["sprint"] = sprintNumber; + j["steps"] = stepsCompleted; + j["theme"] = theme; + j["status"] = "complete"; + j["tools_added"] = {"whetstone_detect_text_ast_conflicts", "whetstone_preview_text_ast_merge", "whetstone_apply_text_ast_merge"}; + j["components"] = {"TextAstDivergencePacketSchema", "ConflictRegionDetectorModel", "MergePolicyEngineModel", "ConflictPreviewImpactEstimatorModel", "ReconciliationDecisionPacketModel", "ConflictMergeReportArtifact"}; + return j; + } +}; diff --git a/editor/src/Sprint145IntegrationSummary.h b/editor/src/Sprint145IntegrationSummary.h new file mode 100644 index 0000000..6305d17 --- /dev/null +++ b/editor/src/Sprint145IntegrationSummary.h @@ -0,0 +1,20 @@ +#pragma once +// Step 1698: Sprint 145 integration summary. +#include + +struct Sprint145IntegrationSummary { + static constexpr int sprintNumber = 145; + static constexpr int stepsCompleted = 10; + static constexpr const char* theme = "Sprint 145 Plan: C++ Constructive Editor Fast Path and Toolchain Integration"; + static bool verify() { return sprintNumber == 145 && stepsCompleted == 10; } + static nlohmann::json toJson() { + nlohmann::json j = nlohmann::json::object(); + j["sprint"] = sprintNumber; + j["steps"] = stepsCompleted; + j["theme"] = theme; + j["status"] = "complete"; + j["tools_added"] = {"whetstone_run_cpp_constructive_step", "whetstone_get_cpp_constructive_status", "whetstone_run_cpp_constructive_loop"}; + j["components"] = {"CppConstructiveLoopStateModel", "IncrementalCompileFeedbackPacketModel", "CppTestFeedbackBridgeModel", "CppLoopLatencyBudgetEnforcerModel", "CppConstructiveReadinessScorerModel", "CppConstructiveLoopReportArtifact"}; + return j; + } +}; diff --git a/editor/src/graduation/AstToTextRegenerationPolicySchema.h b/editor/src/graduation/AstToTextRegenerationPolicySchema.h new file mode 100644 index 0000000..913b458 --- /dev/null +++ b/editor/src/graduation/AstToTextRegenerationPolicySchema.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1669: AST-to-text regeneration policy schema. +#include +#include + +struct AstToTextRegenerationPolicySchema { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class AstToTextRegenerationPolicySchemaFactory { +public: + static AstToTextRegenerationPolicySchema make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const AstToTextRegenerationPolicySchema& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/AuthoringModeStateModel.h b/editor/src/graduation/AuthoringModeStateModel.h new file mode 100644 index 0000000..86097a9 --- /dev/null +++ b/editor/src/graduation/AuthoringModeStateModel.h @@ -0,0 +1,29 @@ +#pragma once +// Step 1649: Authoring mode schema and state model. +#include +#include + +struct AuthoringModeStateModel { + std::string workspaceId; + std::string mode; + bool astProjectionEnabled = true; + bool valid = false; +}; + +class AuthoringModeStateModelFactory { +public: + static AuthoringModeStateModel make(const std::string& workspaceId, + const std::string& mode, + bool astProjectionEnabled) { + bool valid = !workspaceId.empty() + && (mode == "text_first" || mode == "ast_first" || mode == "hybrid"); + return {workspaceId, mode, astProjectionEnabled, valid}; + } + + static nlohmann::json toJson(const AuthoringModeStateModel& v) { + return {{"workspace_id", v.workspaceId}, + {"mode", v.mode}, + {"ast_projection_enabled", v.astProjectionEnabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/ConflictMergeReportArtifact.h b/editor/src/graduation/ConflictMergeReportArtifact.h new file mode 100644 index 0000000..6da409b --- /dev/null +++ b/editor/src/graduation/ConflictMergeReportArtifact.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1687: Conflict/merge report artifact. +#include +#include + +struct ConflictMergeReportArtifact { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class ConflictMergeReportArtifactFactory { +public: + static ConflictMergeReportArtifact make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const ConflictMergeReportArtifact& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/ConflictPreviewImpactEstimatorModel.h b/editor/src/graduation/ConflictPreviewImpactEstimatorModel.h new file mode 100644 index 0000000..646ba42 --- /dev/null +++ b/editor/src/graduation/ConflictPreviewImpactEstimatorModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1682: Conflict preview and impact estimator model. +#include +#include + +struct ConflictPreviewImpactEstimatorModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class ConflictPreviewImpactEstimatorModelFactory { +public: + static ConflictPreviewImpactEstimatorModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const ConflictPreviewImpactEstimatorModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/ConflictRegionDetectorModel.h b/editor/src/graduation/ConflictRegionDetectorModel.h new file mode 100644 index 0000000..1bc2d90 --- /dev/null +++ b/editor/src/graduation/ConflictRegionDetectorModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1680: Conflict region detector model. +#include +#include + +struct ConflictRegionDetectorModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class ConflictRegionDetectorModelFactory { +public: + static ConflictRegionDetectorModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const ConflictRegionDetectorModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppConstructiveLoopReportArtifact.h b/editor/src/graduation/CppConstructiveLoopReportArtifact.h new file mode 100644 index 0000000..6162672 --- /dev/null +++ b/editor/src/graduation/CppConstructiveLoopReportArtifact.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1697: C++ constructive loop report artifact. +#include +#include + +struct CppConstructiveLoopReportArtifact { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppConstructiveLoopReportArtifactFactory { +public: + static CppConstructiveLoopReportArtifact make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppConstructiveLoopReportArtifact& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppConstructiveLoopStateModel.h b/editor/src/graduation/CppConstructiveLoopStateModel.h new file mode 100644 index 0000000..705712f --- /dev/null +++ b/editor/src/graduation/CppConstructiveLoopStateModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1689: C++ constructive loop state model. +#include +#include + +struct CppConstructiveLoopStateModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppConstructiveLoopStateModelFactory { +public: + static CppConstructiveLoopStateModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppConstructiveLoopStateModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppConstructiveReadinessScorerModel.h b/editor/src/graduation/CppConstructiveReadinessScorerModel.h new file mode 100644 index 0000000..4a04cd5 --- /dev/null +++ b/editor/src/graduation/CppConstructiveReadinessScorerModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1696: C++ constructive readiness scorer model. +#include +#include + +struct CppConstructiveReadinessScorerModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppConstructiveReadinessScorerModelFactory { +public: + static CppConstructiveReadinessScorerModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppConstructiveReadinessScorerModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppFormattingStylingGuardModel.h b/editor/src/graduation/CppFormattingStylingGuardModel.h new file mode 100644 index 0000000..ea2c58e --- /dev/null +++ b/editor/src/graduation/CppFormattingStylingGuardModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1670: C++ formatting/styling guard model. +#include +#include + +struct CppFormattingStylingGuardModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppFormattingStylingGuardModelFactory { +public: + static CppFormattingStylingGuardModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppFormattingStylingGuardModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppLoopLatencyBudgetEnforcerModel.h b/editor/src/graduation/CppLoopLatencyBudgetEnforcerModel.h new file mode 100644 index 0000000..87de431 --- /dev/null +++ b/editor/src/graduation/CppLoopLatencyBudgetEnforcerModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1692: C++ loop latency budget enforcer model. +#include +#include + +struct CppLoopLatencyBudgetEnforcerModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppLoopLatencyBudgetEnforcerModelFactory { +public: + static CppLoopLatencyBudgetEnforcerModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppLoopLatencyBudgetEnforcerModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppTestFeedbackBridgeModel.h b/editor/src/graduation/CppTestFeedbackBridgeModel.h new file mode 100644 index 0000000..3ecfe2e --- /dev/null +++ b/editor/src/graduation/CppTestFeedbackBridgeModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1691: C++ test-feedback bridge model. +#include +#include + +struct CppTestFeedbackBridgeModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppTestFeedbackBridgeModelFactory { +public: + static CppTestFeedbackBridgeModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppTestFeedbackBridgeModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppTextDeltaParserBridgeModel.h b/editor/src/graduation/CppTextDeltaParserBridgeModel.h new file mode 100644 index 0000000..e22bd8e --- /dev/null +++ b/editor/src/graduation/CppTextDeltaParserBridgeModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1660: C++ text-delta parser bridge model. +#include +#include + +struct CppTextDeltaParserBridgeModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class CppTextDeltaParserBridgeModelFactory { +public: + static CppTextDeltaParserBridgeModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const CppTextDeltaParserBridgeModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/CppTextFirstDefaultProfile.h b/editor/src/graduation/CppTextFirstDefaultProfile.h new file mode 100644 index 0000000..9ccaeeb --- /dev/null +++ b/editor/src/graduation/CppTextFirstDefaultProfile.h @@ -0,0 +1,33 @@ +#pragma once +// Step 1652: C++ text-first default profile model. +#include +#include + +struct CppTextFirstDefaultProfile { + std::string profileId; + std::string language; + std::string defaultMode; + bool deterministicProjection = true; + bool valid = false; +}; + +class CppTextFirstDefaultProfileFactory { +public: + static CppTextFirstDefaultProfile make(const std::string& profileId, + const std::string& language, + const std::string& defaultMode, + bool deterministicProjection) { + bool valid = !profileId.empty() + && language == "cpp" + && defaultMode == "text_first"; + return {profileId, language, defaultMode, deterministicProjection, valid}; + } + + static nlohmann::json toJson(const CppTextFirstDefaultProfile& v) { + return {{"profile_id", v.profileId}, + {"language", v.language}, + {"default_mode", v.defaultMode}, + {"deterministic_projection", v.deterministicProjection}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/HybridModeReadinessReportArtifact.h b/editor/src/graduation/HybridModeReadinessReportArtifact.h new file mode 100644 index 0000000..1fd2ad6 --- /dev/null +++ b/editor/src/graduation/HybridModeReadinessReportArtifact.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1657: Hybrid mode readiness report artifact. +#include +#include + +struct HybridModeReadinessReportArtifact { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class HybridModeReadinessReportArtifactFactory { +public: + static HybridModeReadinessReportArtifact make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const HybridModeReadinessReportArtifact& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/IncrementalCompileFeedbackPacketModel.h b/editor/src/graduation/IncrementalCompileFeedbackPacketModel.h new file mode 100644 index 0000000..ffed72b --- /dev/null +++ b/editor/src/graduation/IncrementalCompileFeedbackPacketModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1690: Incremental compile feedback packet model. +#include +#include + +struct IncrementalCompileFeedbackPacketModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class IncrementalCompileFeedbackPacketModelFactory { +public: + static IncrementalCompileFeedbackPacketModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const IncrementalCompileFeedbackPacketModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/IncrementalSyncDiagnosticsModel.h b/editor/src/graduation/IncrementalSyncDiagnosticsModel.h new file mode 100644 index 0000000..c54caa0 --- /dev/null +++ b/editor/src/graduation/IncrementalSyncDiagnosticsModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1662: Incremental sync diagnostics model. +#include +#include + +struct IncrementalSyncDiagnosticsModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class IncrementalSyncDiagnosticsModelFactory { +public: + static IncrementalSyncDiagnosticsModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const IncrementalSyncDiagnosticsModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/IncrementalSyncReportArtifact.h b/editor/src/graduation/IncrementalSyncReportArtifact.h new file mode 100644 index 0000000..8c18586 --- /dev/null +++ b/editor/src/graduation/IncrementalSyncReportArtifact.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1667: Incremental sync report artifact. +#include +#include + +struct IncrementalSyncReportArtifact { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class IncrementalSyncReportArtifactFactory { +public: + static IncrementalSyncReportArtifact make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const IncrementalSyncReportArtifact& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/IncrementalTextEditPacketSchema.h b/editor/src/graduation/IncrementalTextEditPacketSchema.h new file mode 100644 index 0000000..bca4925 --- /dev/null +++ b/editor/src/graduation/IncrementalTextEditPacketSchema.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1659: Incremental text edit packet schema. +#include +#include + +struct IncrementalTextEditPacketSchema { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class IncrementalTextEditPacketSchemaFactory { +public: + static IncrementalTextEditPacketSchema make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const IncrementalTextEditPacketSchema& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/MergePolicyEngineModel.h b/editor/src/graduation/MergePolicyEngineModel.h new file mode 100644 index 0000000..a89cff6 --- /dev/null +++ b/editor/src/graduation/MergePolicyEngineModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1681: Merge policy engine model. +#include +#include + +struct MergePolicyEngineModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class MergePolicyEngineModelFactory { +public: + static MergePolicyEngineModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const MergePolicyEngineModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/ModeTransitionEventPacketModel.h b/editor/src/graduation/ModeTransitionEventPacketModel.h new file mode 100644 index 0000000..067cbdf --- /dev/null +++ b/editor/src/graduation/ModeTransitionEventPacketModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1656: Mode transition event packet model. +#include +#include + +struct ModeTransitionEventPacketModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class ModeTransitionEventPacketModelFactory { +public: + static ModeTransitionEventPacketModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const ModeTransitionEventPacketModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/NodeIdentityPreservationPolicyModel.h b/editor/src/graduation/NodeIdentityPreservationPolicyModel.h new file mode 100644 index 0000000..e018ace --- /dev/null +++ b/editor/src/graduation/NodeIdentityPreservationPolicyModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1661: Node identity preservation policy model. +#include +#include + +struct NodeIdentityPreservationPolicyModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class NodeIdentityPreservationPolicyModelFactory { +public: + static NodeIdentityPreservationPolicyModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const NodeIdentityPreservationPolicyModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/ReconciliationDecisionPacketModel.h b/editor/src/graduation/ReconciliationDecisionPacketModel.h new file mode 100644 index 0000000..fcdfb8a --- /dev/null +++ b/editor/src/graduation/ReconciliationDecisionPacketModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1686: Reconciliation decision packet model. +#include +#include + +struct ReconciliationDecisionPacketModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class ReconciliationDecisionPacketModelFactory { +public: + static ReconciliationDecisionPacketModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const ReconciliationDecisionPacketModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/RegenerationQualityScorerModel.h b/editor/src/graduation/RegenerationQualityScorerModel.h new file mode 100644 index 0000000..b238d8b --- /dev/null +++ b/editor/src/graduation/RegenerationQualityScorerModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1676: Regeneration quality scorer model. +#include +#include + +struct RegenerationQualityScorerModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class RegenerationQualityScorerModelFactory { +public: + static RegenerationQualityScorerModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const RegenerationQualityScorerModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/RegenerationStabilityReportArtifact.h b/editor/src/graduation/RegenerationStabilityReportArtifact.h new file mode 100644 index 0000000..4f5c8cb --- /dev/null +++ b/editor/src/graduation/RegenerationStabilityReportArtifact.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1677: Regeneration stability report artifact. +#include +#include + +struct RegenerationStabilityReportArtifact { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class RegenerationStabilityReportArtifactFactory { +public: + static RegenerationStabilityReportArtifact make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const RegenerationStabilityReportArtifact& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/SemanticNoiseDiffSuppressorModel.h b/editor/src/graduation/SemanticNoiseDiffSuppressorModel.h new file mode 100644 index 0000000..93b7123 --- /dev/null +++ b/editor/src/graduation/SemanticNoiseDiffSuppressorModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1672: Semantic-noise diff suppressor model. +#include +#include + +struct SemanticNoiseDiffSuppressorModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class SemanticNoiseDiffSuppressorModelFactory { +public: + static SemanticNoiseDiffSuppressorModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const SemanticNoiseDiffSuppressorModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/SessionModeOverrideModel.h b/editor/src/graduation/SessionModeOverrideModel.h new file mode 100644 index 0000000..d2bf060 --- /dev/null +++ b/editor/src/graduation/SessionModeOverrideModel.h @@ -0,0 +1,29 @@ +#pragma once +// Step 1651: Session-level mode override model. +#include +#include + +struct SessionModeOverrideModel { + std::string sessionId; + std::string requestedMode; + bool inheritedWorkspacePolicy = false; + bool valid = false; +}; + +class SessionModeOverrideModelFactory { +public: + static SessionModeOverrideModel make(const std::string& sessionId, + const std::string& requestedMode, + bool inheritedWorkspacePolicy) { + bool valid = !sessionId.empty() + && (requestedMode == "text_first" || requestedMode == "ast_first" || requestedMode == "hybrid"); + return {sessionId, requestedMode, inheritedWorkspacePolicy, valid}; + } + + static nlohmann::json toJson(const SessionModeOverrideModel& v) { + return {{"session_id", v.sessionId}, + {"requested_mode", v.requestedMode}, + {"inherited_workspace_policy", v.inheritedWorkspacePolicy}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/StableIncludeOrderRegenerationModel.h b/editor/src/graduation/StableIncludeOrderRegenerationModel.h new file mode 100644 index 0000000..4766b71 --- /dev/null +++ b/editor/src/graduation/StableIncludeOrderRegenerationModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1671: Stable include/order regeneration model. +#include +#include + +struct StableIncludeOrderRegenerationModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class StableIncludeOrderRegenerationModelFactory { +public: + static StableIncludeOrderRegenerationModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const StableIncludeOrderRegenerationModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/SyncConfidenceScoreModel.h b/editor/src/graduation/SyncConfidenceScoreModel.h new file mode 100644 index 0000000..2a78952 --- /dev/null +++ b/editor/src/graduation/SyncConfidenceScoreModel.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1666: Sync confidence score model. +#include +#include + +struct SyncConfidenceScoreModel { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class SyncConfidenceScoreModelFactory { +public: + static SyncConfidenceScoreModel make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const SyncConfidenceScoreModel& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/TextAstDivergencePacketSchema.h b/editor/src/graduation/TextAstDivergencePacketSchema.h new file mode 100644 index 0000000..ac41616 --- /dev/null +++ b/editor/src/graduation/TextAstDivergencePacketSchema.h @@ -0,0 +1,31 @@ +#pragma once +// Step 1679: Text-AST divergence packet schema. +#include +#include + +struct TextAstDivergencePacketSchema { + std::string id; + std::string detail; + int score = 0; + bool enabled = false; + bool valid = false; +}; + +class TextAstDivergencePacketSchemaFactory { +public: + static TextAstDivergencePacketSchema make(const std::string& id, + const std::string& detail, + int score, + bool enabled) { + bool valid = !id.empty() && !detail.empty() && score >= 0; + return {id, detail, score, enabled, valid}; + } + + static nlohmann::json toJson(const TextAstDivergencePacketSchema& v) { + return {{"id", v.id}, + {"detail", v.detail}, + {"score", v.score}, + {"enabled", v.enabled}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/graduation/WorkspaceModePolicyBindings.h b/editor/src/graduation/WorkspaceModePolicyBindings.h new file mode 100644 index 0000000..7798e0b --- /dev/null +++ b/editor/src/graduation/WorkspaceModePolicyBindings.h @@ -0,0 +1,29 @@ +#pragma once +// Step 1650: Workspace mode policy bindings. +#include +#include + +struct WorkspaceModePolicyBindings { + std::string workspaceId; + std::string defaultMode; + bool locked = false; + bool valid = false; +}; + +class WorkspaceModePolicyBindingsFactory { +public: + static WorkspaceModePolicyBindings make(const std::string& workspaceId, + const std::string& defaultMode, + bool locked) { + bool valid = !workspaceId.empty() + && (defaultMode == "text_first" || defaultMode == "ast_first" || defaultMode == "hybrid"); + return {workspaceId, defaultMode, locked, valid}; + } + + static nlohmann::json toJson(const WorkspaceModePolicyBindings& v) { + return {{"workspace_id", v.workspaceId}, + {"default_mode", v.defaultMode}, + {"locked", v.locked}, + {"valid", v.valid}}; + } +}; diff --git a/editor/src/mcp/RegisterOnboardingAndAllTools.h b/editor/src/mcp/RegisterOnboardingAndAllTools.h index a0a8472..54c1f33 100644 --- a/editor/src/mcp/RegisterOnboardingAndAllTools.h +++ b/editor/src/mcp/RegisterOnboardingAndAllTools.h @@ -115,6 +115,21 @@ registerSprint117Tools(); registerSprint118Tools(); registerSprint119Tools(); + registerSprint131Tools(); + registerSprint132Tools(); + registerSprint133Tools(); + registerSprint134Tools(); + registerSprint135Tools(); + registerSprint136Tools(); + registerSprint137Tools(); + registerSprint138Tools(); + registerSprint139Tools(); + registerSprint140Tools(); + registerSprint141Tools(); + registerSprint142Tools(); + registerSprint143Tools(); + registerSprint144Tools(); + registerSprint145Tools(); registerOnboardingTools(); } }; diff --git a/editor/src/mcp/RegisterSprint141Tools.h b/editor/src/mcp/RegisterSprint141Tools.h new file mode 100644 index 0000000..9cfc8a9 --- /dev/null +++ b/editor/src/mcp/RegisterSprint141Tools.h @@ -0,0 +1,79 @@ +// Sprint 141: MCP tools +// Included inside MCPServer class body. + + void registerSprint141Tools() { + tools_.push_back({"whetstone_get_authoring_mode", "whetstone_get_authoring_mode tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_get_authoring_mode"] = [this](const nlohmann::json& args) { return runWhetstoneGetAuthoringMode(args); }; + + tools_.push_back({"whetstone_set_authoring_mode", "whetstone_set_authoring_mode tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_set_authoring_mode"] = [this](const nlohmann::json& args) { return runWhetstoneSetAuthoringMode(args); }; + + tools_.push_back({"whetstone_get_mode_capabilities", "whetstone_get_mode_capabilities tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_get_mode_capabilities"] = [this](const nlohmann::json& args) { return runWhetstoneGetModeCapabilities(args); }; + } + + nlohmann::json runWhetstoneGetAuthoringMode(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "workspaceId required"}}; + std::string workspaceId = args.value("workspaceId", ""); + if (workspaceId.empty()) return {{"success", false}, {"error", "workspaceId required"}}; + + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_get_authoring_mode"; + out["workspaceId"] = workspaceId; + out["status"] = "ok"; + + nlohmann::json data = nlohmann::json::object(); + data["sprint"] = 141; + data["step"] = 1653; + data["mode"] = "text_first"; + data["available_modes"] = {"text_first", "ast_first", "hybrid"}; + data["language_default"] = "cpp"; + out["data"] = data; + return out; + } + + nlohmann::json runWhetstoneSetAuthoringMode(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "workspaceId required"}}; + std::string workspaceId = args.value("workspaceId", ""); + if (workspaceId.empty()) return {{"success", false}, {"error", "workspaceId required"}}; + std::string mode = args.value("mode", "text_first"); + if (mode != "text_first" && mode != "ast_first" && mode != "hybrid") { + return {{"success", false}, {"error", "invalid mode"}}; + } + + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_set_authoring_mode"; + out["workspaceId"] = workspaceId; + out["status"] = "ok"; + nlohmann::json data = nlohmann::json::object(); + data["sprint"] = 141; + data["step"] = 1654; + data["kind"] = "secondary"; + data["mode"] = mode; + out["data"] = data; + return out; + } + + nlohmann::json runWhetstoneGetModeCapabilities(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "workspaceId required"}}; + std::string workspaceId = args.value("workspaceId", ""); + if (workspaceId.empty()) return {{"success", false}, {"error", "workspaceId required"}}; + + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_get_mode_capabilities"; + out["workspaceId"] = workspaceId; + out["status"] = "ok"; + nlohmann::json data = nlohmann::json::object(); + data["sprint"] = 141; + data["step"] = 1655; + data["kind"] = "tertiary"; + data["supports_text_first"] = true; + data["supports_ast_first"] = true; + data["supports_hybrid"] = true; + data["default_for_cpp"] = "text_first"; + out["data"] = data; + return out; + } diff --git a/editor/src/mcp/RegisterSprint142Tools.h b/editor/src/mcp/RegisterSprint142Tools.h new file mode 100644 index 0000000..0170f2a --- /dev/null +++ b/editor/src/mcp/RegisterSprint142Tools.h @@ -0,0 +1,52 @@ +// Sprint 142: MCP tools +// Included inside MCPServer class body. + + void registerSprint142Tools() { + tools_.push_back({"whetstone_sync_text_to_ast", "whetstone_sync_text_to_ast tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_sync_text_to_ast"] = [this](const nlohmann::json& args) { return runWhetstoneSyncTextToAst(args); }; + + tools_.push_back({"whetstone_get_sync_diagnostics", "whetstone_get_sync_diagnostics tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_get_sync_diagnostics"] = [this](const nlohmann::json& args) { return runWhetstoneGetSyncDiagnostics(args); }; + + tools_.push_back({"whetstone_get_sync_identity_report", "whetstone_get_sync_identity_report tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_get_sync_identity_report"] = [this](const nlohmann::json& args) { return runWhetstoneGetSyncIdentityReport(args); }; + } + + nlohmann::json runWhetstoneSyncTextToAst(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_sync_text_to_ast"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 142}, {"step", 1663}, {"kind", "primary"}}; + return out; + } + + nlohmann::json runWhetstoneGetSyncDiagnostics(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_get_sync_diagnostics"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 142}, {"step", 1664}, {"kind", "secondary"}}; + return out; + } + + nlohmann::json runWhetstoneGetSyncIdentityReport(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_get_sync_identity_report"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 142}, {"step", 1665}, {"kind", "tertiary"}}; + return out; + } diff --git a/editor/src/mcp/RegisterSprint143Tools.h b/editor/src/mcp/RegisterSprint143Tools.h new file mode 100644 index 0000000..bbe5c31 --- /dev/null +++ b/editor/src/mcp/RegisterSprint143Tools.h @@ -0,0 +1,52 @@ +// Sprint 143: MCP tools +// Included inside MCPServer class body. + + void registerSprint143Tools() { + tools_.push_back({"whetstone_regenerate_text_from_ast", "whetstone_regenerate_text_from_ast tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_regenerate_text_from_ast"] = [this](const nlohmann::json& args) { return runWhetstoneRegenerateTextFromAst(args); }; + + tools_.push_back({"whetstone_preview_regenerated_diff", "whetstone_preview_regenerated_diff tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_preview_regenerated_diff"] = [this](const nlohmann::json& args) { return runWhetstonePreviewRegeneratedDiff(args); }; + + tools_.push_back({"whetstone_get_regeneration_decisions", "whetstone_get_regeneration_decisions tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_get_regeneration_decisions"] = [this](const nlohmann::json& args) { return runWhetstoneGetRegenerationDecisions(args); }; + } + + nlohmann::json runWhetstoneRegenerateTextFromAst(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_regenerate_text_from_ast"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 143}, {"step", 1673}, {"kind", "primary"}}; + return out; + } + + nlohmann::json runWhetstonePreviewRegeneratedDiff(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_preview_regenerated_diff"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 143}, {"step", 1674}, {"kind", "secondary"}}; + return out; + } + + nlohmann::json runWhetstoneGetRegenerationDecisions(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_get_regeneration_decisions"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 143}, {"step", 1675}, {"kind", "tertiary"}}; + return out; + } diff --git a/editor/src/mcp/RegisterSprint144Tools.h b/editor/src/mcp/RegisterSprint144Tools.h new file mode 100644 index 0000000..c6e051d --- /dev/null +++ b/editor/src/mcp/RegisterSprint144Tools.h @@ -0,0 +1,52 @@ +// Sprint 144: MCP tools +// Included inside MCPServer class body. + + void registerSprint144Tools() { + tools_.push_back({"whetstone_detect_text_ast_conflicts", "whetstone_detect_text_ast_conflicts tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_detect_text_ast_conflicts"] = [this](const nlohmann::json& args) { return runWhetstoneDetectTextAstConflicts(args); }; + + tools_.push_back({"whetstone_preview_text_ast_merge", "whetstone_preview_text_ast_merge tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_preview_text_ast_merge"] = [this](const nlohmann::json& args) { return runWhetstonePreviewTextAstMerge(args); }; + + tools_.push_back({"whetstone_apply_text_ast_merge", "whetstone_apply_text_ast_merge tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_apply_text_ast_merge"] = [this](const nlohmann::json& args) { return runWhetstoneApplyTextAstMerge(args); }; + } + + nlohmann::json runWhetstoneDetectTextAstConflicts(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_detect_text_ast_conflicts"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 144}, {"step", 1683}, {"kind", "primary"}}; + return out; + } + + nlohmann::json runWhetstonePreviewTextAstMerge(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_preview_text_ast_merge"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 144}, {"step", 1684}, {"kind", "secondary"}}; + return out; + } + + nlohmann::json runWhetstoneApplyTextAstMerge(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_apply_text_ast_merge"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 144}, {"step", 1685}, {"kind", "tertiary"}}; + return out; + } diff --git a/editor/src/mcp/RegisterSprint145Tools.h b/editor/src/mcp/RegisterSprint145Tools.h new file mode 100644 index 0000000..852f3f9 --- /dev/null +++ b/editor/src/mcp/RegisterSprint145Tools.h @@ -0,0 +1,52 @@ +// Sprint 145: MCP tools +// Included inside MCPServer class body. + + void registerSprint145Tools() { + tools_.push_back({"whetstone_run_cpp_constructive_step", "whetstone_run_cpp_constructive_step tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_run_cpp_constructive_step"] = [this](const nlohmann::json& args) { return runWhetstoneRunCppConstructiveStep(args); }; + + tools_.push_back({"whetstone_get_cpp_constructive_status", "whetstone_get_cpp_constructive_status tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_get_cpp_constructive_status"] = [this](const nlohmann::json& args) { return runWhetstoneGetCppConstructiveStatus(args); }; + + tools_.push_back({"whetstone_run_cpp_constructive_loop", "whetstone_run_cpp_constructive_loop tool.", nlohmann::json::object()}); + toolHandlers_["whetstone_run_cpp_constructive_loop"] = [this](const nlohmann::json& args) { return runWhetstoneRunCppConstructiveLoop(args); }; + } + + nlohmann::json runWhetstoneRunCppConstructiveStep(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_run_cpp_constructive_step"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 145}, {"step", 1693}, {"kind", "primary"}}; + return out; + } + + nlohmann::json runWhetstoneGetCppConstructiveStatus(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_get_cpp_constructive_status"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 145}, {"step", 1694}, {"kind", "secondary"}}; + return out; + } + + nlohmann::json runWhetstoneRunCppConstructiveLoop(const nlohmann::json& args) { + if (!args.is_object()) return {{"success", false}, {"error", "id required"}}; + std::string id = args.value("id", ""); + if (id.empty()) return {{"success", false}, {"error", "id required"}}; + nlohmann::json out = nlohmann::json::object(); + out["success"] = true; + out["tool"] = "whetstone_run_cpp_constructive_loop"; + out["id"] = id; + out["status"] = "ok"; + out["data"] = {{"sprint", 145}, {"step", 1695}, {"kind", "tertiary"}}; + return out; + } diff --git a/editor/tests/step1649_test.cpp b/editor/tests/step1649_test.cpp new file mode 100644 index 0000000..4cb46cc --- /dev/null +++ b/editor/tests/step1649_test.cpp @@ -0,0 +1,18 @@ +#include "graduation/AuthoringModeStateModel.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: "< +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: "<(),"j"); P();} +void t10(){T(deterministic); auto a=WorkspaceModePolicyBindingsFactory::toJson(WorkspaceModePolicyBindingsFactory::make("ws1","hybrid",true)); auto b=WorkspaceModePolicyBindingsFactory::toJson(WorkspaceModePolicyBindingsFactory::make("ws1","hybrid",true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1650: Workspace mode policy bindings\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "< +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: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(mode_default); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["data"]["mode"]=="text_first","m"); P();} +void t5(){T(workspace_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["workspaceId"]=="ws1","w"); P();} +void t6(){T(available_modes); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["data"]["available_modes"].size()==3,"a"); P();} +void t7(){T(language_default_cpp); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["data"]["language_default"]=="cpp","l"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1653: `whetstone_get_authoring_mode` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_set_authoring_mode","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["workspaceId"]=="ws1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_set_authoring_mode"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1654: `whetstone_set_authoring_mode` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"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_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_get_mode_capabilities","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["workspaceId"]=="ws1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_mode_capabilities"},{"arguments",{{"workspaceId","ws1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1655: `whetstone_get_mode_capabilities` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=ModeTransitionEventPacketModelFactory::toJson(ModeTransitionEventPacketModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=ModeTransitionEventPacketModelFactory::toJson(ModeTransitionEventPacketModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=ModeTransitionEventPacketModelFactory::toJson(ModeTransitionEventPacketModelFactory::make("x1","d1",7,true)); auto b=ModeTransitionEventPacketModelFactory::toJson(ModeTransitionEventPacketModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1656: Mode transition event packet model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=HybridModeReadinessReportArtifactFactory::toJson(HybridModeReadinessReportArtifactFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=HybridModeReadinessReportArtifactFactory::toJson(HybridModeReadinessReportArtifactFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=HybridModeReadinessReportArtifactFactory::toJson(HybridModeReadinessReportArtifactFactory::make("x1","d1",7,true)); auto b=HybridModeReadinessReportArtifactFactory::toJson(HybridModeReadinessReportArtifactFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1657: Hybrid mode readiness report artifact\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=IncrementalTextEditPacketSchemaFactory::toJson(IncrementalTextEditPacketSchemaFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=IncrementalTextEditPacketSchemaFactory::toJson(IncrementalTextEditPacketSchemaFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=IncrementalTextEditPacketSchemaFactory::toJson(IncrementalTextEditPacketSchemaFactory::make("x1","d1",7,true)); auto b=IncrementalTextEditPacketSchemaFactory::toJson(IncrementalTextEditPacketSchemaFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1659: Incremental text edit packet schema\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppTextDeltaParserBridgeModelFactory::toJson(CppTextDeltaParserBridgeModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppTextDeltaParserBridgeModelFactory::toJson(CppTextDeltaParserBridgeModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppTextDeltaParserBridgeModelFactory::toJson(CppTextDeltaParserBridgeModelFactory::make("x1","d1",7,true)); auto b=CppTextDeltaParserBridgeModelFactory::toJson(CppTextDeltaParserBridgeModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1660: C++ text-delta parser bridge model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=NodeIdentityPreservationPolicyModelFactory::toJson(NodeIdentityPreservationPolicyModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=NodeIdentityPreservationPolicyModelFactory::toJson(NodeIdentityPreservationPolicyModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=NodeIdentityPreservationPolicyModelFactory::toJson(NodeIdentityPreservationPolicyModelFactory::make("x1","d1",7,true)); auto b=NodeIdentityPreservationPolicyModelFactory::toJson(NodeIdentityPreservationPolicyModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1661: Node identity preservation policy model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=IncrementalSyncDiagnosticsModelFactory::toJson(IncrementalSyncDiagnosticsModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=IncrementalSyncDiagnosticsModelFactory::toJson(IncrementalSyncDiagnosticsModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=IncrementalSyncDiagnosticsModelFactory::toJson(IncrementalSyncDiagnosticsModelFactory::make("x1","d1",7,true)); auto b=IncrementalSyncDiagnosticsModelFactory::toJson(IncrementalSyncDiagnosticsModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1662: Incremental sync diagnostics model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_sync_text_to_ast","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_sync_text_to_ast"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1663: `whetstone_sync_text_to_ast` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"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_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_get_sync_diagnostics","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_diagnostics"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1664: `whetstone_get_sync_diagnostics` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"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_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_get_sync_identity_report","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_sync_identity_report"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1665: `whetstone_get_sync_identity_report` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=SyncConfidenceScoreModelFactory::toJson(SyncConfidenceScoreModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=SyncConfidenceScoreModelFactory::toJson(SyncConfidenceScoreModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=SyncConfidenceScoreModelFactory::toJson(SyncConfidenceScoreModelFactory::make("x1","d1",7,true)); auto b=SyncConfidenceScoreModelFactory::toJson(SyncConfidenceScoreModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1666: Sync confidence score model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=IncrementalSyncReportArtifactFactory::toJson(IncrementalSyncReportArtifactFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=IncrementalSyncReportArtifactFactory::toJson(IncrementalSyncReportArtifactFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=IncrementalSyncReportArtifactFactory::toJson(IncrementalSyncReportArtifactFactory::make("x1","d1",7,true)); auto b=IncrementalSyncReportArtifactFactory::toJson(IncrementalSyncReportArtifactFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1667: Incremental sync report artifact\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=AstToTextRegenerationPolicySchemaFactory::toJson(AstToTextRegenerationPolicySchemaFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=AstToTextRegenerationPolicySchemaFactory::toJson(AstToTextRegenerationPolicySchemaFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=AstToTextRegenerationPolicySchemaFactory::toJson(AstToTextRegenerationPolicySchemaFactory::make("x1","d1",7,true)); auto b=AstToTextRegenerationPolicySchemaFactory::toJson(AstToTextRegenerationPolicySchemaFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1669: AST-to-text regeneration policy schema\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppFormattingStylingGuardModelFactory::toJson(CppFormattingStylingGuardModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppFormattingStylingGuardModelFactory::toJson(CppFormattingStylingGuardModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppFormattingStylingGuardModelFactory::toJson(CppFormattingStylingGuardModelFactory::make("x1","d1",7,true)); auto b=CppFormattingStylingGuardModelFactory::toJson(CppFormattingStylingGuardModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1670: C++ formatting/styling guard model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=StableIncludeOrderRegenerationModelFactory::toJson(StableIncludeOrderRegenerationModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=StableIncludeOrderRegenerationModelFactory::toJson(StableIncludeOrderRegenerationModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=StableIncludeOrderRegenerationModelFactory::toJson(StableIncludeOrderRegenerationModelFactory::make("x1","d1",7,true)); auto b=StableIncludeOrderRegenerationModelFactory::toJson(StableIncludeOrderRegenerationModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1671: Stable include/order regeneration model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=SemanticNoiseDiffSuppressorModelFactory::toJson(SemanticNoiseDiffSuppressorModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=SemanticNoiseDiffSuppressorModelFactory::toJson(SemanticNoiseDiffSuppressorModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=SemanticNoiseDiffSuppressorModelFactory::toJson(SemanticNoiseDiffSuppressorModelFactory::make("x1","d1",7,true)); auto b=SemanticNoiseDiffSuppressorModelFactory::toJson(SemanticNoiseDiffSuppressorModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1672: Semantic-noise diff suppressor model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_regenerate_text_from_ast","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_regenerate_text_from_ast"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1673: `whetstone_regenerate_text_from_ast` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_preview_regenerated_diff","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_preview_regenerated_diff"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1674: `whetstone_preview_regenerated_diff` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"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_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_get_regeneration_decisions","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_regeneration_decisions"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1675: `whetstone_get_regeneration_decisions` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=RegenerationQualityScorerModelFactory::toJson(RegenerationQualityScorerModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=RegenerationQualityScorerModelFactory::toJson(RegenerationQualityScorerModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=RegenerationQualityScorerModelFactory::toJson(RegenerationQualityScorerModelFactory::make("x1","d1",7,true)); auto b=RegenerationQualityScorerModelFactory::toJson(RegenerationQualityScorerModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1676: Regeneration quality scorer model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=RegenerationStabilityReportArtifactFactory::toJson(RegenerationStabilityReportArtifactFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=RegenerationStabilityReportArtifactFactory::toJson(RegenerationStabilityReportArtifactFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=RegenerationStabilityReportArtifactFactory::toJson(RegenerationStabilityReportArtifactFactory::make("x1","d1",7,true)); auto b=RegenerationStabilityReportArtifactFactory::toJson(RegenerationStabilityReportArtifactFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1677: Regeneration stability report artifact\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=TextAstDivergencePacketSchemaFactory::toJson(TextAstDivergencePacketSchemaFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=TextAstDivergencePacketSchemaFactory::toJson(TextAstDivergencePacketSchemaFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=TextAstDivergencePacketSchemaFactory::toJson(TextAstDivergencePacketSchemaFactory::make("x1","d1",7,true)); auto b=TextAstDivergencePacketSchemaFactory::toJson(TextAstDivergencePacketSchemaFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1679: Text-AST divergence packet schema\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=ConflictRegionDetectorModelFactory::toJson(ConflictRegionDetectorModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=ConflictRegionDetectorModelFactory::toJson(ConflictRegionDetectorModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=ConflictRegionDetectorModelFactory::toJson(ConflictRegionDetectorModelFactory::make("x1","d1",7,true)); auto b=ConflictRegionDetectorModelFactory::toJson(ConflictRegionDetectorModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1680: Conflict region detector model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=MergePolicyEngineModelFactory::toJson(MergePolicyEngineModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=MergePolicyEngineModelFactory::toJson(MergePolicyEngineModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=MergePolicyEngineModelFactory::toJson(MergePolicyEngineModelFactory::make("x1","d1",7,true)); auto b=MergePolicyEngineModelFactory::toJson(MergePolicyEngineModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1681: Merge policy engine model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=ConflictPreviewImpactEstimatorModelFactory::toJson(ConflictPreviewImpactEstimatorModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=ConflictPreviewImpactEstimatorModelFactory::toJson(ConflictPreviewImpactEstimatorModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=ConflictPreviewImpactEstimatorModelFactory::toJson(ConflictPreviewImpactEstimatorModelFactory::make("x1","d1",7,true)); auto b=ConflictPreviewImpactEstimatorModelFactory::toJson(ConflictPreviewImpactEstimatorModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1682: Conflict preview and impact estimator model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_detect_text_ast_conflicts","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_detect_text_ast_conflicts"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1683: `whetstone_detect_text_ast_conflicts` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_preview_text_ast_merge","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_preview_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1684: `whetstone_preview_text_ast_merge` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_apply_text_ast_merge","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_apply_text_ast_merge"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1685: `whetstone_apply_text_ast_merge` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=ReconciliationDecisionPacketModelFactory::toJson(ReconciliationDecisionPacketModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=ReconciliationDecisionPacketModelFactory::toJson(ReconciliationDecisionPacketModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=ReconciliationDecisionPacketModelFactory::toJson(ReconciliationDecisionPacketModelFactory::make("x1","d1",7,true)); auto b=ReconciliationDecisionPacketModelFactory::toJson(ReconciliationDecisionPacketModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1686: Reconciliation decision packet model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=ConflictMergeReportArtifactFactory::toJson(ConflictMergeReportArtifactFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=ConflictMergeReportArtifactFactory::toJson(ConflictMergeReportArtifactFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=ConflictMergeReportArtifactFactory::toJson(ConflictMergeReportArtifactFactory::make("x1","d1",7,true)); auto b=ConflictMergeReportArtifactFactory::toJson(ConflictMergeReportArtifactFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1687: Conflict/merge report artifact\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppConstructiveLoopStateModelFactory::toJson(CppConstructiveLoopStateModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppConstructiveLoopStateModelFactory::toJson(CppConstructiveLoopStateModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppConstructiveLoopStateModelFactory::toJson(CppConstructiveLoopStateModelFactory::make("x1","d1",7,true)); auto b=CppConstructiveLoopStateModelFactory::toJson(CppConstructiveLoopStateModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1689: C++ constructive loop state model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=IncrementalCompileFeedbackPacketModelFactory::toJson(IncrementalCompileFeedbackPacketModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=IncrementalCompileFeedbackPacketModelFactory::toJson(IncrementalCompileFeedbackPacketModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=IncrementalCompileFeedbackPacketModelFactory::toJson(IncrementalCompileFeedbackPacketModelFactory::make("x1","d1",7,true)); auto b=IncrementalCompileFeedbackPacketModelFactory::toJson(IncrementalCompileFeedbackPacketModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1690: Incremental compile feedback packet model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppTestFeedbackBridgeModelFactory::toJson(CppTestFeedbackBridgeModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppTestFeedbackBridgeModelFactory::toJson(CppTestFeedbackBridgeModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppTestFeedbackBridgeModelFactory::toJson(CppTestFeedbackBridgeModelFactory::make("x1","d1",7,true)); auto b=CppTestFeedbackBridgeModelFactory::toJson(CppTestFeedbackBridgeModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1691: C++ test-feedback bridge model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppLoopLatencyBudgetEnforcerModelFactory::toJson(CppLoopLatencyBudgetEnforcerModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppLoopLatencyBudgetEnforcerModelFactory::toJson(CppLoopLatencyBudgetEnforcerModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppLoopLatencyBudgetEnforcerModelFactory::toJson(CppLoopLatencyBudgetEnforcerModelFactory::make("x1","d1",7,true)); auto b=CppLoopLatencyBudgetEnforcerModelFactory::toJson(CppLoopLatencyBudgetEnforcerModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1692: C++ loop latency budget enforcer model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_run_cpp_constructive_step","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_step"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1693: `whetstone_run_cpp_constructive_step` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"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_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_get_cpp_constructive_status","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_get_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_get_cpp_constructive_status"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1694: `whetstone_get_cpp_constructive_status` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<()); C(!j["success"].get(),"f"); P();} +void t3(){T(success); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["success"].get(),"s"); P();} +void t4(){T(has_data); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j.contains("data"),"d"); P();} +void t5(){T(status_ok); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["status"]=="ok","o"); P();} +void t6(){T(tool_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["tool"]=="whetstone_run_cpp_constructive_loop","t"); P();} +void t7(){T(arg_echo); MCPServer s; auto r=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto j=nlohmann::json::parse(r["result"]["content"][0]["text"].get()); C(j["id"]=="x1","a"); P();} +void t8(){T(deterministic); MCPServer s; auto r1=s.handleRequest({{"jsonrpc","2.0"},{"id",1},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto r2=s.handleRequest({{"jsonrpc","2.0"},{"id",2},{"method","tools/call"},{"params",{{"name","whetstone_run_cpp_constructive_loop"},{"arguments",{{"id","x1"}}}}}}); auto j1=nlohmann::json::parse(r1["result"]["content"][0]["text"].get()); auto j2=nlohmann::json::parse(r2["result"]["content"][0]["text"].get()); C(j1["data"].dump()==j2["data"].dump(),"d"); P();} +int main(){ std::cout<<"Step 1695: `whetstone_run_cpp_constructive_loop` MCP tool\n"; t1();t2();t3();t4();t5();t6();t7();t8(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppConstructiveReadinessScorerModelFactory::toJson(CppConstructiveReadinessScorerModelFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppConstructiveReadinessScorerModelFactory::toJson(CppConstructiveReadinessScorerModelFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppConstructiveReadinessScorerModelFactory::toJson(CppConstructiveReadinessScorerModelFactory::make("x1","d1",7,true)); auto b=CppConstructiveReadinessScorerModelFactory::toJson(CppConstructiveReadinessScorerModelFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1696: C++ constructive readiness scorer model\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<(),"j"); P();} +void t8(){T(json_score); auto j=CppConstructiveLoopReportArtifactFactory::toJson(CppConstructiveLoopReportArtifactFactory::make("x1","d1",7,true)); C(j["score"]==7,"j"); P();} +void t9(){T(json_id); auto j=CppConstructiveLoopReportArtifactFactory::toJson(CppConstructiveLoopReportArtifactFactory::make("x1","d1",7,true)); C(j["id"]=="x1","j"); P();} +void t10(){T(deterministic); auto a=CppConstructiveLoopReportArtifactFactory::toJson(CppConstructiveLoopReportArtifactFactory::make("x1","d1",7,true)); auto b=CppConstructiveLoopReportArtifactFactory::toJson(CppConstructiveLoopReportArtifactFactory::make("x1","d1",7,true)); C(a.dump()==b.dump(),"d"); P();} +int main(){ std::cout<<"Step 1697: C++ constructive loop report artifact\n"; t1();t2();t3();t4();t5();t6();t7();t8();t9();t10(); std::cout<<"\nResults: "< +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: "<