Replace the 182-line inline schema in docker-compose.yml with a runner
over packages/server/migrations, add 004 restoring the constraints and
64-bit counters the inline SQL carried, skip migrations already recorded
in schema_versions, relabel the mount for SELinux, and drop the obsolete
compose version key. Retarget the catalog contract test at the migration
files.
Claude-Session: https://claude.ai/code/session_01Agoc9bRVE9KL7mmWtey9Vq
Re-verified all fifteen provider hook contracts against first-party
documentation on 2026-07-21; thirteen match exactly.
Letta: the harness-hook page moved to /reference/deprecated/hooks and
is vendor-deprecated in favor of Mods. The shipped contract remains
live and functional; record the current URL and the documented
PostToolUseFailure event the SDK adapters already register.
Grok: xAI documents the hook stdin payload non-exhaustively with only
hookEventName, sessionId, cwd, workspaceRoot, toolName, and toolInput.
Drop the recorded toolUseId/toolResult field claims, which appear
nowhere in official documentation.