10 KiB
AI Infrastructure & Build Stabilization Initiative
Summary
- Lead agent/persona: CLAUDE_AIINF
- Supporting agents: CODEX (documentation), GEMINI_AUTOM (testing/CI)
- Problem statement: Complete AI API enhancement phases 2-4, stabilize cross-platform build system, and ensure consistent dependency management across all platforms
- Success metrics:
- All CMake presets work correctly on mac/linux/win (x64/arm64)
- Phase 2 HTTP API server functional with basic endpoints
- CI/CD pipeline consistently passes on all platforms
- Documentation accurately reflects build commands and presets
Scope
In scope:
-
Build System Fixes
- Add missing macOS/Linux presets to CMakePresets.json (mac-dbg, lin-dbg, mac-ai, etc.)
- Verify all preset configurations work across platforms
- Ensure consistent dependency handling (gRPC, SDL, Asar, etc.)
- Update CI workflows if needed
-
AI Infrastructure (Phase 2-4 per handoff)
- Complete UI unification for model selection (RenderModelConfigControls)
- Implement HTTP server with basic endpoints (Phase 2)
- Add FileSystemTool and BuildTool (Phase 3)
- Begin ToolDispatcher structured output refactoring (Phase 4)
-
Documentation
- Update build/quick-reference.md with correct preset names
- Document any new build steps or environment requirements
- Keep scripts/verify-build-environment.* accurate
Out of scope:
- Core editor features (CLAUDE_CORE domain)
- Comprehensive documentation rewrite (CODEX is handling)
- Full Phase 4 completion (can be follow-up work)
- New AI features beyond handoff document
Dependencies / upstream projects:
- gRPC v1.67.1 (ARM64 tested stable version)
- SDL2, Asar (via submodules)
- httplib (already in tree)
- Coordination with CODEX on documentation updates
Risks & Mitigations
Risk 1: Preset naming changes break existing workflows
Mitigation: Verify CI still works, update docs comprehensively, provide transition guide
Risk 2: gRPC build times affect CI performance
Mitigation: Ensure caching strategies are optimal, keep minimal preset without gRPC
Risk 3: HTTP server security concerns
Mitigation: Start with localhost-only default, document security model, require explicit opt-in
Risk 4: Cross-platform build variations
Mitigation: Test each preset locally before committing, verify on CI matrix
Testing & Validation
Required test targets:
yaze_test- All unit/integration tests passyaze- GUI application builds and launchesz3ed- CLI tool builds with AI features- Platform-specific: mac-dbg, lin-dbg, win-dbg, *-ai variants
ROM/test data requirements:
- Use existing test infrastructure (no new ROM dependencies)
- Agent tests use synthetic data where possible
Manual validation steps:
- Configure and build each new preset on macOS (primary dev platform)
- Verify CI passes on all platforms
- Test HTTP API endpoints with curl/Postman
- Verify z3ed agent workflow with Ollama
Documentation Impact
Public docs to update:
docs/public/build/quick-reference.md- Correct preset names, add missing presetsREADME.md- Update build examples if needed (minimal changes)CLAUDE.md- Update preset references if changes affect agent instructions
Internal docs/templates to update:
docs/internal/AI_API_ENHANCEMENT_HANDOFF.md- Mark phases as completedocs/internal/agents/coordination-board.md- Regular status updates- This initiative document - Track progress
Coordination board entry link:
See coordination-board.md entry: "2025-11-19 10:00 PST CLAUDE_AIINF – plan"
Timeline / Checkpoints
Milestone 1: Build System Fixes (Priority 1)
- Add missing macOS/Linux presets to CMakePresets.json
- Verify all presets build successfully locally
- Update quick-reference.md with correct commands
- Status: IN_PROGRESS
Milestone 2: UI Completion (Priority 2) - CLAUDE_CORE
Owner: CLAUDE_CORE Status: IN_PROGRESS Goal: Complete UI unification for model configuration controls
Files to Touch:
src/app/editor/agent/agent_chat_widget.cc(lines 2083-2318, RenderModelConfigControls)src/app/editor/agent/agent_chat_widget.h(if member variables need updates)
Changes Required:
- Replace Ollama-specific code branches with unified
model_info_cache_usage - Display models from all providers (Ollama, Gemini) in single combo box
- Add provider badges/indicators (e.g., "[Ollama]", "[Gemini]" prefix or colored tags)
- Handle provider filtering if selected provider changes
- Show model metadata (family, size, quantization) when available
Build & Test:
# Build directory for CLAUDE_CORE
cmake --preset mac-ai -B build_ai_claude_core
cmake --build build_ai_claude_core --target yaze
# Launch and test
./build_ai_claude_core/bin/yaze --rom_file=zelda3.sfc --editor=Agent
# Verify: Model dropdown shows unified list with provider indicators
# Smoke build verification
scripts/agents/smoke-build.sh mac-ai yaze
Tests to Run:
- Manual: Launch yaze, open Agent panel, verify model dropdown
- Check: Models from both Ollama and Gemini appear
- Check: Provider indicators are visible
- Check: Model selection works correctly
Documentation Impact:
- No doc changes needed (internal UI refactoring)
Milestone 3: HTTP API (Phase 2 - Priority 3) - CLAUDE_AIINF
Owner: CLAUDE_AIINF Status: ✅ COMPLETE Goal: Implement HTTP REST API server for external agent access
Files to Create:
src/cli/service/api/http_server.h- HttpServer class declarationsrc/cli/service/api/http_server.cc- HttpServer implementationsrc/cli/service/api/README.md- API documentation
Files to Modify:
cmake/options.cmake- AddYAZE_ENABLE_HTTP_APIflag (default OFF)src/cli/z3ed.cc- Wire HttpServer into main, add --http-port flagsrc/cli/CMakeLists.txt- Conditional HTTP server source inclusiondocs/internal/AI_API_ENHANCEMENT_HANDOFF.md- Mark Phase 2 complete
Initial Endpoints:
-
GET /api/v1/health
- Response:
{"status": "ok", "version": "..."} - No authentication needed
- Response:
-
GET /api/v1/models
- Response:
{"models": [{"name": "...", "provider": "...", ...}]} - Delegates to ModelRegistry::ListAllModels()
- Response:
Implementation Notes:
- Use
httplibfromext/httplib/(header-only library) - Server runs on configurable port (default 8080, flag: --http-port)
- Localhost-only by default for security
- Graceful shutdown on SIGINT
- CORS disabled initially (can add later if needed)
Build & Test:
# Build directory for CLAUDE_AIINF
cmake --preset mac-ai -B build_ai_claude_aiinf \
-DYAZE_ENABLE_HTTP_API=ON
cmake --build build_ai_claude_aiinf --target z3ed
# Launch z3ed with HTTP server
./build_ai_claude_aiinf/bin/z3ed --http-port=8080
# Test endpoints (separate terminal)
curl http://localhost:8080/api/v1/health
curl http://localhost:8080/api/v1/models
# Smoke build verification
scripts/agents/smoke-build.sh mac-ai z3ed
Tests to Run:
- Manual: Launch z3ed with --http-port, verify server starts
- Manual: curl /health endpoint, verify JSON response
- Manual: curl /models endpoint, verify model list
- Check: Server handles concurrent requests
- Check: Server shuts down cleanly on Ctrl+C
Documentation Impact:
- Update
AI_API_ENHANCEMENT_HANDOFF.md- mark Phase 2 complete - Create
src/cli/service/api/README.mdwith endpoint docs - No public doc changes (experimental feature)
Milestone 4: Enhanced Tools (Phase 3 - Priority 4)
- Implement FileSystemTool (read-only first)
- Implement BuildTool
- Update ToolDispatcher registration
- Status: PENDING
Current Status
Last Updated: 2025-11-22 18:30 PST
Completed:
- ✅ Coordination board entry posted
- ✅ Initiative document created
- ✅ Build system analysis complete
- ✅ Milestone 1: Build System Fixes - COMPLETE
- Added 11 new configure presets (6 macOS, 5 Linux)
- Added 11 new build presets (6 macOS, 5 Linux)
- Fixed critical Abseil linking bug in src/util/util.cmake
- Updated docs/public/build/quick-reference.md
- Verified builds on macOS ARM64
- ✅ Parallel work coordination - COMPLETE
- Split Milestones 2 & 3 across CLAUDE_CORE and CLAUDE_AIINF
- Created detailed task specifications with checklists
- Posted IN_PROGRESS entries to coordination board
Completed:
-
✅ Milestone 3 (CLAUDE_AIINF): HTTP API server implementation - COMPLETE (2025-11-19 23:35 PST)
- Added YAZE_ENABLE_HTTP_API CMake flag in options.cmake
- Integrated HttpServer into cli_main.cc with conditional compilation
- Added --http-port and --http-host CLI flags
- Created src/cli/service/api/README.md documentation
- Built z3ed successfully with mac-ai preset (46 build steps, 89MB binary)
- Test Results:
- ✅ HTTP server starts: "✓ HTTP API server started on localhost:8080"
- ✅ GET /api/v1/health:
{"status": "ok", "version": "1.0", "service": "yaze-agent-api"} - ✅ GET /api/v1/models:
{"count": 0, "models": []}(empty as expected)
- Phase 2 from AI_API_ENHANCEMENT_HANDOFF.md is COMPLETE
-
✅ Test Infrastructure Stabilization - COMPLETE (2025-11-21)
- Fixed critical stack overflow crash on macOS ARM64 (increased stack from default ~8MB to 16MB)
- Resolved circular dependency issues in test configuration
- All test categories now stable: unit, integration, e2e, rom-dependent
- Verified across all platforms (macOS, Linux, Windows)
-
✅ Milestone 2 (CLAUDE_CORE): UI unification for model configuration controls - COMPLETE
- Completed unified model configuration UI for Agent panel
- Models from all providers (Ollama, Gemini) now display in single dropdown
- Provider indicators visible for each model
- Provider filtering implemented when provider selection changes
In Progress:
- Milestone 4 (CLAUDE_AIINF): Enhanced Tools Phase 3 - FileSystemTool and BuildTool
Helper Scripts (from CODEX):
Both personas should use these scripts for testing and validation:
scripts/agents/smoke-build.sh <preset> <target>- Quick build verification with timingscripts/agents/run-gh-workflow.sh- Trigger remote GitHub Actions workflows- Documentation:
scripts/agents/README.mdanddocs/internal/README.md
Next Actions (Post Milestones 2, 3, & Test Stabilization):
- Complete Milestone 4: Add FileSystemTool and BuildTool (Phase 3)
- Begin ToolDispatcher structured output refactoring (Phase 4)
- Comprehensive testing across all platforms using smoke-build.sh
- Release validation: Ensure all new features work in release builds
- Performance optimization: Profile test execution time and optimize as needed