Go to file
StillHammer 3864450b0d feat: Add Scenario 7 - Limit Tests with extreme conditions
Implements comprehensive limit testing for hot-reload system:
- Large state serialization (100k particles, 1M terrain cells)
- Long initialization with timeout detection
- Memory pressure testing (50 consecutive reloads)
- Incremental reload stability (10 iterations)
- State corruption detection and validation

New files:
- planTI/scenario_07_limits.md: Complete test documentation
- tests/modules/HeavyStateModule.{h,cpp}: Heavy state simulation module
- tests/integration/test_07_limits.cpp: 5-test integration suite

Fixes:
- src/ModuleLoader.cpp: Add null-checks to all log functions to prevent cleanup crashes
- src/SequentialModuleSystem.cpp: Check logger existence before creation to avoid duplicate registration
- tests/CMakeLists.txt: Add HeavyStateModule library and test_07_limits target

All tests pass with exit code 0:
- TEST 1: Large State - getState 1.77ms, setState 200ms ✓
- TEST 2: Timeout - Detected at 3.2s ✓
- TEST 3: Memory Pressure - 0.81MB growth over 50 reloads ✓
- TEST 4: Incremental - 173ms avg reload time ✓
- TEST 5: Corruption - Invalid state rejected ✓

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 11:29:48 +08:00
.claude/config_backups feat: Add Scenario 4 - Race Condition Hunter test suite 2025-11-15 10:55:44 +08:00
docs docs: Add complete IDataTree system architecture documentation 2025-10-28 16:18:15 +08:00
include/grove feat: Add comprehensive hot-reload test suite with 3 integration scenarios 2025-11-13 22:13:07 +08:00
planTI feat: Add Scenario 7 - Limit Tests with extreme conditions 2025-11-17 11:29:48 +08:00
src feat: Add Scenario 7 - Limit Tests with extreme conditions 2025-11-17 11:29:48 +08:00
tests feat: Add Scenario 7 - Limit Tests with extreme conditions 2025-11-17 11:29:48 +08:00
.gitignore feat: Add Scenario 4 - Race Condition Hunter test suite 2025-11-15 10:55:44 +08:00
CMakeLists.txt feat: Add comprehensive hot-reload test suite with 3 integration scenarios 2025-11-13 22:13:07 +08:00
README.md Initial commit: Grove Engine core architecture 2025-10-28 00:19:15 +08:00

GroveEngine 🌳

Modular C++ Engine Architecture for Rapid Development with Hot-Reload

GroveEngine is a lightweight, modular engine architecture designed for blazing-fast development iteration (0.4ms hot-reload validated) and optimized for Claude Code workflows.

Key Features

  • 🔥 Hot-Reload 0.4ms - Validated blazing-fast module reloading
  • 🧩 Modular Architecture - Clean separation via interfaces (IEngine, IModule, IIO, IModuleSystem)
  • 🚀 Development Velocity - Edit → Build → Hot-reload < 1 second total
  • 🤖 Claude Code Optimized - 200-300 line modules for AI-friendly development
  • 📦 Autonomous Builds - Each module builds independently (cmake .)
  • 🔌 Progressive Scaling - Debug → Production → Cloud without rewriting

Architecture Overview

grove::IEngine (Orchestration)
├── grove::IModuleSystem (Execution strategy)
│   ├── SequentialModuleSystem (Debug/test - 1 module at a time)
│   ├── ThreadedModuleSystem (Each module in thread - TODO)
│   └── MultithreadedModuleSystem (Thread pool - TODO)
├── grove::IModule (Business logic - 200-300 lines)
│   └── Your modules (.so/.dll hot-reloadable)
└── grove::IIO (Communication)
    ├── IntraIO (Same process - validated)
    ├── LocalIO (Same machine - TODO)
    └── NetworkIO (Distributed - TODO)

Current Status

Implemented & Validated

  • Core Interfaces (13): IEngine, IModule, IModuleSystem, IIO, ICoordinationModule, ITaskScheduler, IDataTree, IDataNode, IUI, ISerializable
  • Debug Implementations (Phase 2 - Pre-IDataTree):
    • DebugEngine - Comprehensive logging and health monitoring
    • SequentialModuleSystem - Ultra-lightweight execution
    • IntraIO + IntraIOManager - Sub-millisecond pub/sub with pattern matching
    • ModuleFactory - Dynamic .so/.dll loading system
    • EngineFactory, ModuleSystemFactory, IOFactory - Factory patterns
  • Hot-Reload System - 0.4ms average, 0.055ms best performance, perfect state preservation
  • UI System - ImGuiUI implementation with hybrid sizing

⚠️ Compatibility Note

Current implementations use pre-IDataTree API (json config). The architecture evolved to use IDataNode for configuration. Implementations need adaptation or recreation for full IDataTree compatibility.

🚧 TODO

  • Adapt implementations to use IDataTree/IDataNode instead of json
  • Implement ThreadedModuleSystem and MultithreadedModuleSystem
  • Implement LocalIO and NetworkIO
  • Create concrete IDataTree implementations (JSONDataTree, etc.)

Quick Start

Directory Structure

GroveEngine/
├── include/grove/          # 27 headers
│   ├── IEngine.h          # Core interfaces
│   ├── IModule.h
│   ├── IModuleSystem.h
│   ├── IIO.h
│   ├── IDataTree.h        # Configuration system
│   ├── IDataNode.h
│   └── ...
├── src/                    # 10 implementations
│   ├── DebugEngine.cpp
│   ├── SequentialModuleSystem.cpp
│   ├── IntraIO.cpp
│   ├── ModuleFactory.cpp
│   └── ...
├── docs/                   # Documentation
│   ├── architecture/
│   │   ├── architecture-modulaire.md
│   │   └── claude-code-integration.md
│   └── implementation/
│       └── CLAUDE-HOT-RELOAD-GUIDE.md
├── modules/                # Your application modules
├── tests/                  # Tests
└── CMakeLists.txt         # Build system

Build

cd GroveEngine
mkdir build && cd build
cmake ..
make

# Or use the root CMakeLists.txt directly
cmake .
make

Create a Module

// MyModule.h
#include <grove/IModule.h>

class MyModule : public grove::IModule {
public:
    json process(const json& input) override {
        // Your logic here (200-300 lines max)
        return {"result": "processed"};
    }

    void setConfiguration(const IDataNode& config, IIO* io, ITaskScheduler* scheduler) override {
        // Configuration setup
    }

    // ... other interface methods
};

Documentation

Philosophy

Micro-Context Development

  • Small modules (200-300 lines) for AI-friendly development
  • Autonomous builds - Zero parent dependencies
  • Hot-swappable infrastructure - Change performance without touching business logic

Progressive Evolution

// Start simple (MVP)
DebugEngine + SequentialModuleSystem + IntraIO

// Scale transparently (same module code)
HighPerfEngine + MultithreadedModuleSystem + NetworkIO

Complexity Through Simplicity

Complex behavior emerges from the interaction of simple, well-defined modules.

Performance

Hot-Reload Benchmarks (Validated):

  • Average: 0.4ms
  • Best: 0.055ms
  • 5-cycle test: 2ms total
  • State persistence: 100% success rate
  • Classification: 🚀 BLAZING (Theoretical maximum achieved)

Projects Using GroveEngine

  • AISSIA - AI Smart Schedule & Interactive Assistant (in development)
  • WarFactory (original architecture source)

License

To be defined

Contributing

This engine uses an architecture optimized for Claude Code development. Each module is autonomous and can be developed independently.

Constraints:

  • Modules 200-300 lines maximum
  • Autonomous build: cmake . from module directory
  • JSON-only communication between modules
  • Zero dependencies up (no #include "../")
  • Never cmake ..

GroveEngine - Where modules grow like trees in a grove 🌳