Skip to content

RPCs

Complete inventory of named PostgreSQL functions in public defined by the migration chain. All EXECUTE is granted to service_role only (public/anon/authenticated revoked, migration 016 lockdown). See RPC layer for the architecture.

Report & contact

FunctionMigrationOperation
rpc_create_report(...)006/033Atomic report creation + timeline + event + initial evidence
rpc_report_action(...)006→034Action state machine (validate/invalidate/investigate/contact_reporter/claim/conclude) under row lock
rpc_add_note(...)006/033Note + timeline + event + updated_at
rpc_add_evidence(...)006/033Evidence + timeline + event + updated_at
rpc_contact_reply(...)006/033/034Agent message + timeline + event + bot-DM queue
rpc_contact_respond(...)006/033Reporter message + timeline + event
rpc_close_contact_thread(...)006/033/034Close state + timeline + event + closing-DM queue
rpc_delete_report(...)034Pre-image + delete + forensic audit + report.deleted (one transaction)
rpc_list_reports(...)007Server-side filter/sort/count/pagination

Queue

FunctionMigrationOperation
rpc_claim_action(p_is_supervisor)005/033Atomic oldest-action claim (SKIP LOCKED) + queue.action_claimed
rpc_requeue_stale_actions(max_age, max_attempts)005/033Stale-processing recovery (requeue or fail past cap) + events
rpc_complete_action(action_id, result, note)034Locked terminal completion + queue.action_completed/failed
rpc_action_requeue(action_id)034Locked failed → pending + queue.action_requeued

Punishments & discipline

FunctionMigrationOperation
rpc_punishment_create(...)029/033ID generation (collision retry) + row + audit + punishment.issued + issue delivery
rpc_punishment_update(...)029/033Whitelisted edit + before/after audit + punishment.updated
rpc_punishment_revoke(...)029/033Locked revoke + audit + punishment.revoked + revoke delivery
rpc_discipline_enqueue(...)030/033Enqueue helper + delivery.queued
rpc_discipline_enqueue_user_lookup(...)031Profile-lookup enqueue (one outstanding per user)
rpc_discipline_claim()030/033Atomic pickup with live punishment embed + delivery.claimed
rpc_discipline_complete(...)030/033Locked outcome recording (success / paced retry / terminal) + delivery events
rpc_discipline_requeue_stale(...)030/033Stale-processing recovery + delivery events

Agents & admin

FunctionMigrationOperation
rpc_admin_agent_update(...)028/034Single audited agent mutation (whitelist, Director/rank/self-edit guards, audit + event)
rpc_agent_set_onboarding_fields(...)034Bot onboarding lane → the above (no rank, system identity)
rpc_admin_access_list()009/013Allowlist read
rpc_admin_access_grant(...)010Allowlist grant (Director, audited)
rpc_admin_access_revoke(...)010Soft revoke (Director, audited)
rpc_admin_access_remove(...)010Hard remove (Director, audited, Directors protected)
rpc_admin_queue_requeue(...) / cancel(...) / sweep(...)010/018Queue maintenance (audited)
rpc_admin_audit_list(...)010/013Paginated admin audit trail
rpc_admin_report_correct(...)018Whitelisted report correction (Director, audited)
rpc_admin_schema_status()010Migration + function inventory
rpc_admin_schema_reload(...)010PostgREST reload NOTIFY (audited)
rpc_admin_health()010/014Raw health metrics
rpc_admin_health_record(...)015Incident-history transition
rpc_admin_health_history(...)015Incident history read

Events & audit

FunctionMigrationOperation
rpc_write_event(...)033The single validated event write path
admin_write_audit(...)009/033Forensic audit row + dual-written canonical event
admin_audit_event_map(action, target)033Admin action → event taxonomy mapping
rpc_audit_log(...)008/032Audit log search/pagination
rpc_audit_log_v2(...)032/034Audit log v2 (event filter + actor-name resolution from discord_id/agent_id)

Helper functions (non-RPC)

FunctionPurpose
events_block_mutation()Append-only trigger for events
admin_audit_block_mutation()Append-only trigger for admin_audit_log
admin_health_block_mutation()Append-only trigger for admin_health_history
punishments_block_delete()DELETE/TRUNCATE block for punishments
admin_requester_is_director(...)Live-rank Director check (012)
admin_requester_can_manage_rank(...)Rank-hierarchy check (018)