`furtka app install <name>` copied app folders (install_plan) then ran a bare reconcile, which fires on_start but never on_install — so a CLI install of a consumer brought its provider up without ever provisioning it (no account, empty MQTT_* in the consumer .env). Route named installs through install_runner.run_install (writing the plan file first), the same docker phase the API dispatches, so providers come up before consumers and on_install hooks run. Path installs keep the copy+reconcile dev/test path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| _release_common.py | ||
| api.py | ||
| auth.py | ||
| catalog.py | ||
| cli.py | ||
| deps.py | ||
| dockerops.py | ||
| https.py | ||
| install_runner.py | ||
| installer.py | ||
| manifest.py | ||
| passwd.py | ||
| paths.py | ||
| reconciler.py | ||
| scanner.py | ||
| sources.py | ||
| updater.py | ||