find user requested verl config in codebase/agentjet/ajet/default_config/verl/verl_default.yaml
check
codebase/agentjet/ajet/default_config/verl/config_auto_convertion_verl.jsonc, whether a mapping to this config already exists.if not, add a config under
ajetfield incodebase/agentjet/ajet/default_config/ajet_default.yaml, and add a mapping incodebase/agentjet/ajet/default_config/verl/config_auto_convertion_verl.jsoncdouble check, confirm that default value in
ajet_default.yamlis the same as verl config inverl_default.yaml, and the mapping is correct inconfig_auto_convertion_verl.jsoncask user whether to add to AgentJetJob (ajet/copilot/job.py), if the user confirms:
- learn how other config is added in ajet/copilot/job.py
- add to init signature (with type hint and default None)
- update docstring with parameter description
- add instance attribute assignment with cast()
- add mapping to
overridesdict
- CRITICAL: update
ajet/default_config/ajet_config_schema.py
- the schema must have a dataclass for EVERY nested level in the config path
- e.g., for
ajet.trainer_common.optim.lr, need:AjetOptimdataclass withlr: float = 1e-6AjetTrainerCommonmust haveoptim: AjetOptim = field(default_factory=AjetOptim)
- if parent dataclass is missing the nested field, config loading will store it as a raw dict instead of a typed dataclass, causing
getattr()to fail at runtime