Wave B Evidence (Hard-Close)¶
This evidence pack records the verified closeout state for Wave B: Local Runtime Completeness.
Wave B is hard-closed.
Scope Covered In This Evidence Update¶
- tree-sitter JNI startup crash in local
core - local packaging completeness for bundled service binaries
- startup hardening for model-path handling in native service wrappers
- direct local runtime smoke for
core,speech-engine, andcode-engine
Commands And Results¶
1. Local bundle packaging¶
cd maestro
./gradlew client:installServer -x downloadModels
- Result:
BUILD SUCCESSFUL - What it proves:
maestro/client/static/localis populated via the current packaging path.
2. Tree-sitter JNI symbol namespace verification¶
nm -D maestro/client/static/local/core/lib/libjava-tree-sitter.so | rg "Java_ai_(arqon_maestro|serenade)_treesitter"
- Result: only
Java_ai_arqon_maestro_treesitter_*exports are present. - What it proves: local core now loads an Arqon-namespace JNI library, not the legacy Serenade JNI symbol set.
3. Local runtime smoke (direct run-pro)¶
(cd maestro/client/static/local/core/bin && timeout 8 ./run-pro)
(cd maestro/client/static/local/speech-engine && timeout 8 ./run-pro)
(cd maestro/client/static/local/code-engine && timeout 8 ./run-pro)
- Result:
core: exits124(timeout) without JVM crash.speech-engine: exits124(timeout) after normal bring-up.code-engine: exits124(timeout) after loading all model groups and starting server.- What it proves:
- all three local engines survive startup smoke on the local bundle.
4. Service health verification (17200/17202/17203)¶
bash -lc '
ROOT=/home/irbsurfer/Projects/arqon/ArqonMaestro/maestro/client/static/local
pushd "$ROOT/core/bin" >/dev/null
./run-pro >/tmp/arqon-core.log 2>&1 & CORE_PID=$!
popd >/dev/null
pushd "$ROOT/speech-engine" >/dev/null
./run-pro >/tmp/arqon-speech.log 2>&1 & SPEECH_PID=$!
popd >/dev/null
pushd "$ROOT/code-engine" >/dev/null
./run-pro >/tmp/arqon-code.log 2>&1 & CODE_PID=$!
popd >/dev/null
sleep 18
curl -sS http://127.0.0.1:17200/api/status
curl -sS http://127.0.0.1:17202/api/status
curl -sS http://127.0.0.1:17203/api/status
kill $CORE_PID $SPEECH_PID $CODE_PID
'
- Result:
core={"status":"ok","c":"","g":""}speech={"status":"ok","c":"","g":""}code={"status":"ok","c":"","g":""}- What it proves:
- local stack is healthy concurrently, not just one engine at a time.
5. Code-engine protobuf/sentencepiece crash fix¶
# source updates verified in:
# - maestro/code-engine/server/src/token_encryption.cc
# - maestro/code-engine/server/include/token_encryption.h
- Result:
- removed direct in-process
SentencePieceProcessor::LoadFromSerializedProto(...)usage fromTokenIdConverter. TokenIdConvertersentencepiece path now usesspm_encodeCLI (ARQON_MAESTRO_SPM_ENCODE/SERENADE_SPM_ENCODEor default binary paths).- What it proves:
- the previous code-engine segfault path is eliminated while preserving sentencepiece token-id behavior for contextual models.
6. Legacy null-model-path crash hardening¶
# source updates verified in:
# - maestro/speech-engine/server/server/speech_engine_server.cc
# - maestro/code-engine/server/server/code_engine_server.cc
# - maestro/speech-engine/bin/run-pro
# - maestro/code-engine/bin/run-pro
- Result:
- model env vars are now validated in C++ startup with explicit error messages.
run-prowrappers now default to bundled model directories when no path arg is passed.- What it proves: missing-model configuration now fails clearly instead of dereferencing null env pointers.
Current Wave B Verdict¶
Wave B is hard-closed.
Close criteria met:
- local packaging succeeds (
client:installServer -x downloadModels) - bundled local
core,speech-engine, andcode-enginestart cleanly - all three service health endpoints return
status=oktogether - previously blocking
code-enginestartup segfault is resolved
Residual follow-on (outside Wave B close criteria):
- keep gathering local UI and voice-command e2e evidence as part of ongoing runtime regression coverage