-- WP-0006-T06: Conversion Attestation publication.
-- Depends on migrations/0001_registries.sql and 0002_ledger.sql.

BEGIN;

-- One attestation per Phase, ever. A Phase converts at most once (there is
-- no "un-converting"), so this table has no update path by design, not
-- merely by omitted grant: publish_attestation() in
-- src/target_revenue/attestation.py treats an existing row as the
-- authoritative, already-published record and never attempts to replace it.
CREATE TABLE IF NOT EXISTS attestations (
    phase_id      text PRIMARY KEY REFERENCES phase_manifests(phase_id),
    attestation   jsonb NOT NULL,
    signature     text NOT NULL,
    published_at  timestamptz NOT NULL DEFAULT now()
);

GRANT SELECT, INSERT ON attestations TO trf_app;
-- Deliberately no UPDATE, no DELETE for trf_app: a published attestation is
-- a permanent historical record of an already-true fact, never subject to
-- revision (ADR-0002 compensating guardrail pattern, same as
-- phase_manifests and ledger_entries).

COMMIT;
