6.5 KiB
6.5 KiB
YAZE Build & AI Modularity – Handoff (2025‑11‑17)
Snapshot
- Scope: Ongoing work to modularize AI features (gRPC + Protobuf), migrate third‑party code into
ext/, and stabilize CI across macOS, Linux, and Windows. - Progress: macOS
ci-macosnow builds all primary targets (yaze,yaze_emu,z3ed,yaze_test_*) with AI gating and lightweight Ollama model tests. Documentation and scripts reflect the newext/layout and AI presets. Flag parsing was rewritten to avoid exceptions for MSVC/clang-cl. - Blockers: Windows and Linux CI jobs are still failing due to missing Abseil headers in
yaze_utiland (likely) the same include propagation issue affecting other util sources. Duplicate library warnings remain but are non‑blocking.
Key Changes Since Last Handoff
-
AI Feature Gating
- New CMake options (
YAZE_ENABLE_AI_RUNTIME,YAZE_ENABLE_REMOTE_AUTOMATION,YAZE_BUILD_AGENT_UI,YAZE_ENABLE_AGENT_CLI,YAZE_BUILD_Z3ED) control exactly which AI components build on each platform. gemini/ollamaservices now compile conditionally with stub fallbacks when AI runtime is disabled.test/CMakeLists.txtonly includesintegration/ai/*suites whenYAZE_ENABLE_AI_RUNTIMEis ON to keep non‑AI builds green.
- New CMake options (
-
External Dependencies
- SDL, ImGui, ImGui Test Engine, nlohmann/json, httplib, nativefiledialog, etc. now live under
ext/with updated CMake includes. scripts/agent_test_suite.shand CI workflows passOLLAMA_MODEL=qwen2.5-coder:0.5band bootstrap Ollama/Ninja/NASM on Windows.
- SDL, ImGui, ImGui Test Engine, nlohmann/json, httplib, nativefiledialog, etc. now live under
-
Automated Testing
- GitHub Actions
ci.ymlnow containsci-windows-aiandz3ed-agent-test(macOS) jobs that exercise gRPC + AI paths. yaze_testsuites run viagtest_discover_tests; GUI/experimental suites are taggedgui;experimentalto allow selective execution.
- GitHub Actions
Outstanding Issues & Next Steps
1. Windows CI (Blocking)
- Symptom:
clang-clfails compilingsrc/util/{hex,log,platform_paths}.ccwithabsl/...headers not found. - Current mitigation attempts:
yaze_utilnow links againstabsl::strings,absl::str_format,absl::status,absl::statusor, etc.- Added a hard‑coded include path (
${CMAKE_BINARY_DIR}/_deps/grpc-src/third_party/abseil-cpp) whenYAZE_ENABLE_GRPCis ON.
- Suspect: On Windows (with multi-config Ninja + ExternalProject), Abseil headers may live under
_deps/grpc-src/srcor another staging folder; relying on a literal path is brittle. - Action Items:
- Inspect
cmake --build --preset ci-windows --target yaze_util -vto see actual include search paths and confirm wherestr_cat.hresides on the runner. - Replace the manual include path with
target_link_libraries(yaze_util PRIVATE absl::strings absl::status ...)plustarget_sourcesusing$<TARGET_PROPERTY:absl::strings,INTERFACE_INCLUDE_DIRECTORIES>viatarget_include_directories(yaze_util PRIVATE "$<TARGET_PROPERTY:absl::strings,INTERFACE_INCLUDE_DIRECTORIES>"). This ensures we mirror whatever layout gRPC provides. - Re-run the Windows job (locally or in CI) to confirm the header issue is resolved.
- Inspect
2. Linux CI (Needs Verification)
- Status: Not re-run since the AI gating changes. Need to confirm
ci-linuxstill buildsyaze,z3ed, and allyaze_test_*targets withYAZE_ENABLE_AI_RUNTIME=OFFby default. - Action Items:
- Execute
cmake --preset ci-linux && cmake --build --preset ci-linux --target yaze yaze_test_stable. - Check for missing Abseil include issues similar to Windows; apply the same include propagation fix if necessary.
- Execute
3. Duplicate Library Warnings
- Context: Link lines on macOS/Windows include both
-force_load yaze_test_supportand a regularlibyaze_test_support.a, causing duplicate warnings. - Priority: Low (does not break builds), but consider swapping
-force_loadfor generator expressions that only apply on targets needing whole-archive semantics.
Platform Status Matrix
| Platform / Preset | Status | Notes |
|---|---|---|
macOS – ci-macos |
✅ Passing | Builds yaze, yaze_emu, z3ed, and all yaze_test_*; runs Ollama smoke tests with qwen2.5-coder:0.5b. |
Linux – ci-linux |
⚠️ Not re-run post-gating | Needs a fresh run to ensure new CMake options didn’t regress core builds/tests. |
Windows – ci-windows / ci-windows-ai |
❌ Failing | Abseil headers missing in yaze_util (see Section 1). |
macOS – z3ed-agent-test |
✅ Passing | Brew installs ollama/ninja, executes scripts/agent_test_suite.sh in mock ROM mode. |
| GUI / Experimental suites | ✅ (macOS), ⚠️ (Linux/Win) | Compiled only when YAZE_ENABLE_AI_RUNTIME=ON; Linux/Win not verified since gating change. |
Recommended Next Steps
- Fix Abseil include propagation on Windows (highest priority)
- Replace the hard-coded include path with generator expressions referencing
absl::*targets, or detect the actual header root under_deps/grpc-srcon Windows. - Run
cmake --build --preset ci-windows --target yaze_util -vto inspect the include search paths and confirm the correct directory is being passed. - Re-run
ci-windows/ci-windows-aiafter adjusting the include setup.
- Replace the hard-coded include path with generator expressions referencing
- Re-run Linux + Windows CI end-to-end once the include issue is resolved to ensure
yaze,yaze_emu,z3ed, and allyaze_test_*targets still pass with the current gating rules. - Optional cleanup: investigate the repeated
-force_load libyaze_test_support.awarnings on macOS/Windows once the builds are green.
Additional Context
- macOS’s agent workflow provisions Ollama and runs
scripts/agent_test_suite.shwithOLLAMA_MODEL=qwen2.5-coder:0.5b. SetUSE_MOCK_ROM=falseto validate real ROM flows. yaze_test_guiandyaze_test_experimentalare only added whenYAZE_ENABLE_AI_RUNTIMEis enabled. This keeps minimal builds green but reduces coverage on Linux/Windows until their AI builds are healthy.src/util/flag.*no longer throws exceptions to satisfyclang-cl /EHs-c-. Usedetail::FlagParseFatalfor future error reporting.
Open Questions
- Should we manage Abseil as an explicit CMake package (e.g.,
cmake/dependencies/absl.c), rather than relying on gRPC’s vendored tree? - Once Windows is stable, do we want to add a PowerShell-based Ollama smoke test similar to the macOS workflow?
- After cleaning up warnings, can we enable
/WX(Windows) or-Werror(Linux/macOS) on critical targets to keep the tree tidy?
Please keep this document updated as you make progress so the next engineer has immediate context.