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>
16 lines
621 B
PL/PgSQL
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;
|