Debugging
Start with persisted status:
composer workspace:status
php artisan workspace:status --json
Status reads .harbour.json; it does not scan repositories or enumerate every Docker resource on the machine.
Inspect variable provenance:
php artisan workspace:debug
php artisan workspace:debug DB_DATABASE
php artisan workspace:debug --json
Debug output shows source, persistence, and secret classification. Sensitive values always appear as [REDACTED].
Inspect values for an external launcher:
php artisan workspace:env --format=json
php artisan workspace:env --format=dotenv
php artisan workspace:env --format=shell
Shell output uses robust single-quote escaping and is intended for:
eval "$(php artisan workspace:env --format=shell)"
Secrets are omitted unless --show-secrets is explicitly requested in a supported environment output. Avoid logging that output.
Laravel verbosity flags expose lifecycle stages and external commands without printing secret values. Machine failures use a versioned JSON envelope and stable error code such as PORT_ALLOCATION_FAILED, UNRESOLVED_VARIABLE, ENVIRONMENT_MODIFIED, or DATABASE_NOT_OWNED.
If setup fails halfway through, inspect status and run:
composer workspace:teardown -- --force
Incremental state lets teardown remove only what the failed attempt actually acquired.