Problem Statement
The APE-RV Java side (phtcosta/ape#6, gh6-aperv-llm-integration) adds LLM integration to the exploration loop: 7 infrastructure classes, ApePromptBuilder, LlmRouter with 2 modes (new-state + stagnation), and 9 config keys with ape. prefix in Config.java. The rv-android aperv-tool needs to register the new LLM variants and generate the correct ape.properties with these config keys.
Affected Domains
Scope
- Register 2 new variants:
sata_llm (LLM without MOP) and sata_mop_llm (hybrid MOP+LLM)
- Generate
ape.properties with all 9 LLM config keys when variant uses LLM
- Add
APERV_LLM_BASE_URL env var override (following rvsmart-tool pattern)
- Unit tests for new variants, configure override, and properties generation
Track
Quick Path — no design decisions needed. All design was done in phtcosta/ape#6. This is mechanical wiring of Python config → Java properties.
Dependencies
Acceptance Criteria
References
- Ideation doc:
docs/20260317_aperv_llm_rvandroid.md
- APE gh6 design:
phtcosta/ape/openspec/changes/gh6-aperv-llm-integration/design.md
- rvsmart-tool pattern:
modules/rvsmart-tool/src/rvsmart_tool/tools/rvsmart/tool.py
Problem Statement
The APE-RV Java side (phtcosta/ape#6,
gh6-aperv-llm-integration) adds LLM integration to the exploration loop: 7 infrastructure classes,ApePromptBuilder,LlmRouterwith 2 modes (new-state + stagnation), and 9 config keys withape.prefix inConfig.java. The rv-androidaperv-toolneeds to register the new LLM variants and generate the correctape.propertieswith these config keys.Affected Domains
Scope
sata_llm(LLM without MOP) andsata_mop_llm(hybrid MOP+LLM)ape.propertieswith all 9 LLM config keys when variant uses LLMAPERV_LLM_BASE_URLenv var override (following rvsmart-tool pattern)Track
Quick Path — no design decisions needed. All design was done in phtcosta/ape#6. This is mechanical wiring of Python config → Java properties.
Dependencies
Acceptance Criteria
ApeRVTool.get_variants()returns 7 variants (5 existing + 2 new LLM variants)sata_llmvariant config includesllm_urlbut nomop_datasata_mop_llmvariant config includes bothllm_urlandmop_dataconfigure()appliesAPERV_LLM_BASE_URLenv var override whenllm_urlis in config_push_properties()writes all 9ape.llm*keys whenllm_urlis present_push_properties()does NOT writeape.llm*keys for non-LLM variantsReferences
docs/20260317_aperv_llm_rvandroid.mdphtcosta/ape/openspec/changes/gh6-aperv-llm-integration/design.mdmodules/rvsmart-tool/src/rvsmart_tool/tools/rvsmart/tool.py