Console and Composer Command Catalog
This document inventories the complete Symfony Console surface shipped by k0smos and identifies direct or related Composer scripts.
The command surface is tenant-scoped. Module commands are registered only when their module is active. This catalog includes core and module command declarations, including the committed-content recovery command added on 2026-09-13. Module availability depends on the resolved tenant; the live source of truth is always:
TENANT_ENV=k0smos.example.com php bin/console list
Use -- to forward command options through Composer. For example:
TENANT_ENV=k0smos.example.com composer app:favicons:clean-rebuild -- --dry-run
In the tables below, Direct means the Composer script invokes that exact console command. Related workflow means the Composer script changes scope or combines the command with additional operations. A dash means there is no Composer counterpart.
Symfony built-in commands
bin/console command |
Composer counterpart | Purpose |
|---|---|---|
completion |
— | Dump the shell completion script. |
help |
— | Display help for a command. |
list |
— | List commands available to the resolved tenant. |
Core application commands
bin/console command |
Composer counterpart | Purpose |
|---|---|---|
app:install |
Direct: composer app:install |
Run tests, shared schema/configuration migration, base/demo fixtures, admin-role synchronization and readiness. |
cache:clear |
— | Clear the compiled cache for the current or selected tenant. |
cache:warmup |
— | Rebuild the compiled cache for the current or selected tenant. |
content:changes |
— | Count-only committed-change diagnostics; explicit --dispatch, --retry --subscriber=…, or one --reconcile=owner:type recovery step, all bounded by --limit=1..100. |
database:arcadedb:migrate |
— | Explicit Doctrine-managed remote graph/vector schema; --dry-run previews, --reconcile replays after remote restore. See database setup. |
db:backup |
Related workflow: composer app:backup, composer app:backup-all |
Write a verified copy of the tenant SQLite database (VACUUM INTO, then PRAGMA integrity_check) to var/backups/tenant-{id}-{label}-{timestamp}.sqlite; --dir and --label are optional. Never overwrites a file; other drivers are refused in favour of their native dump tool. |
ci:test:integration |
Direct: composer ci:test:integration |
Run tests/Integration with the configured disposable PHPUnit bootstrap. |
generate-migration |
— | Generate a migration for the current tenant. |
k0smos:admin:grant-role |
— | Synchronize the canonical admin role and assign it to the target user. |
k0smos:fixtures:load |
Related workflow: composer app:install-demo, composer app:reinstall |
Load tenant-aware base or demo fixtures. |
k0smos:modules:sync-theme-selection |
— | Explicit maintenance synchronization of selected wrappers; --front and --admin prepare recovery targets. Initial preparation is automatic in full migration. |
mcp:catalog |
— | List or validate the active tenant MCP tool catalog. |
migrate |
Related workflow: composer app:migrate, composer app:migrate-all, composer app:reinstall |
Apply Doctrine and applicable insert-if-missing theme/locale backfills for one tenant. --module / --baseline omit backfills; Composer controls multi-tenant scope. |
payment:webhooks:prune |
— | Prune old processed or failed native payment webhook events. |
queue:topology |
— | Inspect logical queues, producers, expected workers, and heartbeats. |
queue:work |
Direct: composer app:queue |
Run background queue workers. |
search:vector:rebuild |
— | Rebuild allowlisted vector projections from canonical sources. |
secrets:app-settings |
— | Inventory, protect, verify, rotate, or retirement-check AppSettings credentials. |
secrets:user-totp |
— | Inventory, protect, verify, rotate, or retirement-check user TOTP secrets. |
tenant:config:audit |
— | Classify tenant JSON keys and reject unowned runtime configuration. |
tenant:config:migrate-editable |
— | Move legacy backoffice-editable tenant JSON values into AppSettings. |
tenant:config:migrate-theme-selection |
Integrated workflow: composer app:migrate, composer app:migrate-all, installation |
Explicit dry-run or targeted backfill of the legacy pair and initial wrappers, without replacing DB edits or requiring assets; wrapperless tenants skip. |
tenant:config:migrate-locales |
Integrated workflow: composer app:migrate, composer app:migrate-all, installation |
Explicit dry-run or targeted backfill of valid core/active Documentation locale keys, preserving and validating DB choices. |
tenant:theme:diagnose |
— | Preflight current theme data, wrappers and assets, including during recovery. |
tenant:theme:recover |
— | Replace a malformed aggregate with an explicitly validated front/admin pair. |
theme:audit-modules |
— | Audit public-theme module template forks. The backoffice shows the same page-template gaps (partials excluded) as a non-blocking warning. |
Module commands
Fresh non-SQLite migration uses a complete portable SQLite snapshot before
recording versions and backfilling configuration. The owned MySQL 8.4.11 full
installation and unchanged rerun now pass after Esapi/Ai/AppSettings identity
and Bookmark/Invoice/Kit lookup-index repairs. Their Version20261015120000 migrations preserve
complete values and use the same discovered projection as fresh bootstrap.
Base Version20261015110000 upgrades
canonical existing MySQL settings tables only with all writers quiesced and a
reviewed backup; custom schema/artifacts require explicit reviewed recovery.
Esapi Version20261015130000 requires quiesced sync writers/workers and backup.
Version recording now initializes metadata, and migrate/generate share platform-
bounded table naming while retaining valid legacy names. Existing truncated
PostgreSQL metadata requires reviewed recovery, never a new empty history.
These fresh checks do not qualify full backend upgrades or commerce lifecycle. See
the migration section of the complete reference before scheduling this rollout.
Site Publish contributes site:import (read-only preview by default; exact
--confirm-checksum authorizes insert-only import), site:publish (full
snapshot and queued build, optional --retry=GENERATION), site:build --generation=GENERATION, site:status (optional --reconcile) and
site:rollback --generation=GENERATION. Mutations require --actor=USER_ID
and recheck that active user's permissions. All support --host as a tenant
host or ID, and appear only when the module is active. There are no root
Composer aliases. The offline site's own Bun tooling owns schema initialization,
standalone build, serve, handoff and rollback; see Site Publish.
These commands appear only when their owning runtime module is active.
bin/console command |
Composer counterpart | Purpose |
|---|---|---|
brainstorming:recover |
— | Interrupt up to 100 expired leases and fail up to 100 queued attempts older than 180 seconds; counts only, no provider replay. Uses TENANT_ENV and requires the active module. |
cart:cleanup |
— | One bounded tenant cart retention batch with --dry-run, read-only --status, --batch-size=1..1000, durable cursor and SQL overlap fencing. --prune selects independent finite child-history phases under the same lease after Cart Version20261012160000; both modes offer read-only previews/status. Cart Version20261012190000 is required for wired real execution and read-only --health (also with --prune): overdue/stalled passes, consecutive failures and completed protected/deferred trends; fixed count-only history retains 50 errors per mode. --overdue-after=86400 / --stalled-after=3600 accept 1..31536000 seconds. Healthy exits 0, attention/errors 1, invalid options 2; health cannot combine with preview/status. With an active settlement owner and required Payment/Cart/Ecommerce migrations, coherent converted shopping minimizes once after closed retention/retry horizons; original recovery stubs and financial facts remain. Preserves live retry/import/merge proof and stable identity slots; malformed clocks fail closed. No scheduler or notification sending is installed. |
documentation:preview |
— | Run the loopback-only public-documentation preview. |
documentation:validate |
— | Validate documentation manifests, sources, links, and locale parity. |
ecommerce:inventory:expire-reservations |
— | Release a bounded batch of expired inventory reservations. |
ecommerce:search:rebuild |
— | Rebuild the configured external storefront product index. |
ecommerce:customers:purge-imported-credentials |
— | Delete imported customer password hashes unused for the retention period (default 365 days) and flag those customers as needing a new password; --dry-run reports counts only. |
k0smos:data-exchange:export |
— | Export selected content into a deterministic versioned package. |
k0smos:data-exchange:import |
— | Validate, dry-run, or import a content package. |
k0smos:data-exchange:translate |
— | Generate target-locale package content with the configured AI provider. |
k0smos:deadline:schedule |
— | Queue deadline reminders, recap checks, and recurring ticket jobs. |
k0smos:esapi:import |
— | Import customers and invoices from EasyStore. |
k0smos:psapi:diagnostics |
— | Run read-only, redacted PrestaShop diagnostics. |
k0smos:psapi:import |
— | Import data from the PrestaShop Legacy Webservice. |
k0smos:wpapi:import |
— | Import WordPress and WooCommerce data through their REST APIs. |
media:favicons:clean-rebuild |
Direct: composer app:favicons:clean-rebuild |
Remove every generated favicon family for the tenant and recreate only the active one. |
opcua:record |
— | Poll and record enabled OPC UA nodes. |
opcua:secrets |
— | Inventory, protect, verify, rotate, or retirement-check OPC UA passwords. |
Discovery contributes two commands only while its module is active:
bin/console command |
Composer counterpart | Purpose |
|---|---|---|
discovery:work |
— | Read status; explicit --advance runs bounded graph/vector/document recovery and retention. |
discovery:projection |
— | Read corpus status or explicitly build, reconcile, validate, evaluate, switch, roll back, pause/resume or retire a generation; also graph reconciliation and wakeup. |
discovery:work --advance --steps=100 --seconds=45 is the periodic recovery path
for due work not covered by a live queue wakeup. Projection commands require
--corpus; mutations require an explicit --actor, and generation actions take
--generation. Structured configuration/report/epoch input comes from a local
JSON --input-file bounded to 16 KiB. Runtime activation and publication remain
explicit operations. See modules/Discovery/src/README.Discovery.md.
Composer workflows without a one-to-one console command
| Composer script | Behaviour |
|---|---|
composer app:install-demo |
Runs the shared tenant schema/configuration migration and demo fixtures through bin/install-demo.php; aliases are deduplicated. |
composer app:backup |
Backs up every canonical tenant database (db:backup) unless TENANT_ENV selects one tenant; extra arguments such as --label=pre-migrate are forwarded. |
composer app:backup-all |
Explicitly backs up every configured tenant and ignores inherited tenant selection. |
composer app:migrate |
Applies the shared schema/configuration migration to every canonical tenant unless TENANT_ENV selects one tenant. |
composer app:migrate-all |
Applies the same flow to every configured canonical tenant, ignoring inherited tenant selection. |
composer app:reinstall |
Alias for app:install; its existing fixture policy remains, with no repeated migrations or demo load and no database erasure. |
composer ci:docs:phpdoc |
Builds PHP API documentation with phpDocumentor. |
QA and test helpers (composer test, composer qa:*, and composer seed) are
development workflows rather than wrappers around application console
commands. Run composer run --list for the live Composer script inventory.
Maintaining this catalog
After adding, removing, or renaming a console command or an app:* Composer
script:
- run
TENANT_ENV=localhost php bin/console list --raw; - run
composer run --list; - update this catalog and the owning module documentation;
- verify any direct wrapper with its non-mutating option when one exists.