Problem Statement
The APE-RV Java side (Config.java) already reads all 22+ parameters from ape.properties at startup — exploration params, MOP weights, and LLM keys. However, the Python-side aperv-tool only writes a subset to ape.properties: throttle_ms (as ape.defaultGUIThrottle) and 9 LLM keys (when llm_url is present).
This means calibration via Optuna cannot tune exploration parameters (e.g., defaultEpsilon, graphStableRestartThreshold) or MOP weights (e.g., mopWeightDirect) because they are never written to the properties file, even when passed via the @param=value DSL.
Affected Domains
Related FRs/NFRs
- FR18 (Tool Plugin System)
- FR19 (Tool Configuration)
Acceptance Criteria
Priority
Normal
Track
Quick Path — no design decisions, mechanical refactoring of _push_properties() following established pattern.
Problem Statement
The APE-RV Java side (
Config.java) already reads all 22+ parameters fromape.propertiesat startup — exploration params, MOP weights, and LLM keys. However, the Python-sideaperv-toolonly writes a subset toape.properties:throttle_ms(asape.defaultGUIThrottle) and 9 LLM keys (whenllm_urlis present).This means calibration via Optuna cannot tune exploration parameters (e.g.,
defaultEpsilon,graphStableRestartThreshold) or MOP weights (e.g.,mopWeightDirect) because they are never written to the properties file, even when passed via the@param=valueDSL.Affected Domains
Related FRs/NFRs
Acceptance Criteria
APERV_PROPERTY_MAPPINGconstant maps all calibratable Python keys to Javaape.*property keys_push_properties()uses the mapping to write any config key present in_tool_config_push_properties()hardcoded fallbacks intoget_variants()definitionsaperv:sata_mop_llm@default_epsilon=0.08generatesape.defaultEpsilon=0.08in propertiesstrategy,mop_data) do NOT appear in propertiesuv run pytest modules/aperv-tool/tests/ -vpassesPriority
Normal
Track
Quick Path — no design decisions, mechanical refactoring of
_push_properties()following established pattern.