alter table invocation_logs add column operation_version integer null, add column execution_stage text null, add column execution_error_code text null, add column retryability text null, add column outcome_certainty text null; alter table invocation_logs add constraint invocation_logs_operation_version_check check (operation_version is null or operation_version > 0), add constraint invocation_logs_execution_stage_check check (execution_stage is null or execution_stage in ( 'authorization', 'input_schema', 'input_mapping', 'request_preparation', 'admission', 'adapter', 'upstream', 'output_mapping', 'output_schema', 'mandatory_persistence', 'runtime' )), add constraint invocation_logs_execution_error_code_check check (execution_error_code is null or execution_error_code in ( 'authorization_denied', 'auth_profile_not_found', 'secret_not_found', 'secret_invalid', 'input_schema_invalid', 'input_mapping_invalid', 'prepared_request_invalid', 'execution_overloaded', 'safety_store_unavailable', 'protocol_unsupported', 'execution_mode_unsupported', 'adapter_configuration_invalid', 'outbound_target_rejected', 'upstream_auth_error', 'upstream_not_found', 'upstream_rate_limited', 'upstream_server_error', 'upstream_status_error', 'upstream_timeout', 'upstream_transport_error', 'upstream_request_too_large', 'upstream_response_too_large', 'output_mapping_invalid', 'output_schema_invalid', 'persistence_unavailable', 'runtime_internal', 'confirmation_required', 'confirmation_invalid', 'idempotency_in_progress', 'idempotency_conflict', 'idempotency_outcome_unknown' )), add constraint invocation_logs_retryability_check check (retryability is null or retryability in ( 'never', 'safe', 'after_delay', 'manual_reconcile', 'requires_confirmation' )), add constraint invocation_logs_outcome_certainty_check check (outcome_certainty is null or outcome_certainty in ('certain', 'outcome_unknown')); create index invocation_logs_workspace_operation_version_idx on invocation_logs(workspace_id, operation_id, operation_version) where operation_version is not null;