-- Modul-Registry & Aktivierungspruefung (API-02, siehe core-kanban/tickets/API-02.md).
CREATE TABLE modules (
    name           TEXT PRIMARY KEY,
    version        TEXT NOT NULL CHECK (version <> ''),
    required_flags TEXT[] NOT NULL DEFAULT '{}',
    registered_at  TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- Service-Credential je Modul-Instanz, bei Provisionierung ausgestellt
-- (Akzeptanzkriterium 4). secret_hash enthaelt NIEMALS das Secret im
-- Klartext, nur dessen SHA-256-Hash (Timing-safe-Vergleich beim Login,
-- Referenzmuster siehe AUD-02).
CREATE TABLE module_credentials (
    module_name TEXT PRIMARY KEY REFERENCES modules(name),
    client_id   TEXT NOT NULL UNIQUE,
    secret_hash BYTEA NOT NULL,
    issued_at   TIMESTAMPTZ NOT NULL DEFAULT now()
);
