// Public type surface for @oscharko-dev/keiko-memory-governance (Epic #204 child #209).
// Pure types only — no IO, no clock, no randomness. Every function exported from this
// package consumes a `GovernanceContext` instead of reading the wall clock or generating
// a reviewer id internally; the caller (BFF route handler, Memory Center UI, workflow
// orchestrator) is the authoritative source of both.
// ─── Correction options ───────────────────────────────────────────────────────
// `buildCorrection` produces both a `correction`-type MemoryProposal AND a
// MemorySupersession linking the old MemoryId to the new one. The caller persists the
// proposal first (mint a new MemoryId at acceptance) and then applies the supersession
// once it knows the freshly-minted id.
//
// We require the caller to supply `newMemoryIdHint`: the supersession envelope needs the
// NEW memory id at construction time. The "correct" architecture would be a two-phase
// commit — propose, accept-and-mint, supersede — but a single function returning both
// envelopes is the operating contract #209 asks for. The hint is a placeholder that the
// caller MUST replace with the real minted id before sending the supersession to the
// audit ledger; the GovernanceError("supersession-needs-real-id") at the storage seam
// catches a caller that forgets.
//
// The proposal carries a `proposalId` distinct from `newMemoryIdHint`; both flow through
// the caller-supplied `newProposalId` and `newMemoryIdHint` factories so the builder
// stays pure.
// ─── Re-export the selector kind list at runtime ──────────────────────────────
// Frozen at the value level so a downstream switch can iterate it without re-deriving the
// literal set.
export const FORGET_SELECTOR_KINDS = [
    "by-id",
    "by-scope",
    "by-type",
    "by-source-conversation",
    "by-time-window",
];
