mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-07 03:15:56 +00:00
recognize's app:install downloads about 700 MB of models and held the plugin phase for minutes. An addon may now set config.background_install; the plan files such a plugin under the new background list unless it is pinned through archive or mandatory. 01_background.yml starts occ app:install as an async job and holds every later occ call at a gate until the app's schema is applied: Nextcloud migrations diff a schema snapshot, so DDL running beside another occ call can be reverted. The gate reads the async job file and files/php/utils/migration_state.php, which prints the versions oc_migrations records and the versions the app's migration folder holds. occ migrations:status is not usable, Nextcloud registers it only with debug on. While the app directory does not exist yet the MigrationService constructor throws and lib/base.php's ErrorHandler only logs it, so the probe exits 0 with nothing on stdout and the gate waits. The install loop then runs while the job finishes; the always section joins every job with async_status and fails on an exit code that a timeout or signal produced, because the php process may then still run inside the container. 02_install.yml afterwards answers "already installed" and enables and configures the plugin, or installs it with its own retries when the job failed before placing the app. The stage files are renumbered (01_install -> 02_install, 02_enable -> 03_enable, 03_configure -> 04_configure) so the numbers follow the include order the task-numbering lint checks. Local perf run: plugin phase 538 s -> 282 s, gate open after 30.2 s, recognize 12.0.2 enabled with 8/8 migrations, failed=0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>