The extra modules (CybroOdoo) were still not applied on an already-installed
environment even after apply_extra_modules() was added. Two root causes:
1. When update_env_version.py runs as a script, sys.path[0] is
script/version/, so « from script.version.erplibre_state import ... »
raised ImportError and _STATE_AVAILABLE fell back to False. The whole
state mechanism was silently disabled: set_version_installed() never
wrote .erplibre-state.json, get_version_extra() stayed False, and the
extra manifest was never merged -> CybroOdoo never cloned. Add a sibling
import fallback so the state module also resolves under script execution.
2. generate_config.sh rewrites config.conf from a fixed addons list that
omits the extra modules. Add add_extra_to_config_conf(), called AFTER
generate_config.sh (last writer wins), which appends the extra addons
paths (derived from the "extra" group of the extra manifest) to
addons_path. Idempotent: already-present paths are skipped.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>