v0.4.0 - Artifact Lifetime (TTL) & Retention
Added
- Artifact Lifetime (TTL): Artifacts can now be set to expire. A superadmin sets an instance-wide maximum artifact lifetime in
/admin/settings(minutes; unlimited by default) — it also serves as the default lifetime for new artifacts. Team owners/admins may set their own stricter maximum for their team, but never looser than the instance one. Callers may choose any lifetime up to the effective limit at creation time (CLIoa push --lifetime, the web UI, or thelifetimefield in the REST/MCP API), and change it later viaPATCH. On expiry the artifact's content is hard-deleted (all versions removed irreversibly) — only a tombstone row remains for audit/analytics. A background sweeper (ARTIFACT_PURGE_INTERVAL_MINUTES, default 5) performs the actual deletion; reads treat an expired artifact as gone immediately either way.
Changed
- Lowering the instance or team maximum lifetime re-clamps every affected artifact's expiry from its own creation date (
min(current deadline, created_at + new max)) and can make already-existing artifacts expire immediately; raising a maximum never extends anything already created. GET /artifactsandGET /artifacts/:idnow omit/404 an artifact once its lifetime has passed, even before the background sweeper has run. Artifact payloads gained anexpiresAtfield.
Full changelog: CHANGELOG.md · История изменений (RU)