synops/migrations/010_pruning.sql
vegard 6d916d9860 Pruning-logikk: TTL per modalitet, signaler, disk-nødventil (oppgave 11.3)
Implementerer automatisk opprydding av CAS-filer basert på dokumentert
spec i docs/retninger/maskinrommet.md:

- TTL per modalitet: lyd 30d, bilde 30d, video 14d, tekst aldri
- Signaler som forlenger levetid: publishing-edge, siste tilgang
  (last_accessed_at), utranskribert lyd beholdes
- Tre-trinns disk-nødventil:
  - >85%: slett generert innhold (TTS osv, kan regenereres)
  - >90%: aggressiv pruning med kraftig redusert TTL
  - >95%: kritisk — alt uten publishing-edge slettes
- Periodisk bakgrunnsloop: hvert 6. time, oftere ved høy disk
- Tilgangslogging: serving oppdaterer last_accessed_at (fire-and-forget)
- Pruning-hendelser logges til resource_usage_log

Ny modul: maskinrommet/src/pruning.rs
Ny migrasjon: 010_pruning.sql (last_accessed_at kolonne + indeks)
CasStore utvidet med delete(), disk_usage_bytes(), disk_usage_percent()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 00:02:27 +00:00

16 lines
621 B
PL/PgSQL

-- 010_pruning.sql
-- Støtte for pruning-logikk: TTL per modalitet, signaler som forlenger levetid.
-- Ref: docs/retninger/maskinrommet.md § CAS og intelligent pruning
BEGIN;
-- last_accessed_at: sporer siste gang en CAS-fil ble servert.
-- Brukes som signal for å forlenge TTL — "noen bruker denne filen aktivt".
ALTER TABLE nodes ADD COLUMN IF NOT EXISTS last_accessed_at TIMESTAMPTZ;
-- Indeks for pruning-spørringer: finn media-noder sortert etter alder/tilgang.
CREATE INDEX IF NOT EXISTS idx_nodes_media_access
ON nodes (node_kind, last_accessed_at, created_at)
WHERE node_kind = 'media';
COMMIT;