-- ── Workflows ───────────────────────────────────────────────────────────────── -- Conformance: "Workflows, runs, approvals, webhooks, schedules". Definition's -- community fixed at create from req.community; runs/approvals inherit it. CREATE TABLE workflows ( community_id UUID NOT NULL REFERENCES communities(id), id UUID NOT NULL DEFAULT gen_random_uuid(), name VARCHAR(255) NOT NULL, owner_pubkey BYTEA NOT NULL, channel_id UUID, definition JSONB NOT NULL, definition_hash BYTEA NOT NULL, status workflow_status NOT NULL DEFAULT 'active', enabled BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), PRIMARY KEY (community_id, id), FOREIGN KEY (community_id, owner_pubkey) REFERENCES users (community_id, pubkey), FOREIGN KEY (community_id, channel_id) REFERENCES channels (community_id, id) ); CREATE INDEX idx_workflows_channel_active ON workflows (community_id, channel_id, status, enabled); -- Scheduler scans enabled schedule workflows; community_id returned per row so -- side effects run under the owning tenant's context (Lane0 contract §4a.5). CREATE INDEX idx_workflows_enabled ON workflows (enabled, status) WHERE enabled;