You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SE run #633 step 11, canary 4/4 (NOVA self-deploy @ a95a868, PR #572): the installer hard-aborted at "Applying agent_chat base schema" (exit 1), skipping all remaining cognition install steps — same consequence class as #573, but a different abort path.
Root cause
PG_SUPERUSER defaults to $DB_USER (agent-install.sh:129). On NOVA's host there is no PG_SUPERUSER=postgres override and no sudo access, so _superuser_psql ran the schema apply as plain nova.
The apply runs with >/dev/null 2>&1, so the log shows only "❌ Base schema apply failed" with no SQLSTATE/detail. Diagnosis required manual reproduction.
Suggested fix directions
Detect "schema already at target state" (e.g. function signature + owner check) and skip the apply gracefully instead of exiting 1.
Summary
SE run #633 step 11, canary 4/4 (NOVA self-deploy @ a95a868, PR #572): the installer hard-aborted at "Applying agent_chat base schema" (
exit 1), skipping all remaining cognition install steps — same consequence class as #573, but a different abort path.Root cause
PG_SUPERUSERdefaults to$DB_USER(agent-install.sh:129). On NOVA's host there is noPG_SUPERUSER=postgresoverride and no sudo access, so_superuser_psqlran the schema apply as plainnova.send_agent_message()in prodagent_chatis owned by postgres (by design). The idempotent schema.sql containsDROP FUNCTION IF EXISTS+CREATE+ALTER FUNCTION ... OWNER TO postgres— all of which a non-superuser, non-owner role cannot execute.Impact
Errors were also swallowed
The apply runs with
>/dev/null 2>&1, so the log shows only "❌ Base schema apply failed" with no SQLSTATE/detail. Diagnosis required manual reproduction.Suggested fix directions
Evidence
~/se633-self-deploy.log(NOVA host), ends at line 192 "❌ Base schema apply failed", 03:46 UTC 2026-08-11.send_agent_messagein prod = 5-arg, owner=postgres, guard live.