feat/snapshot-object-storage #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/snapshot-object-storage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
feat: snapshots en stockage objet S3 + durcissement du fetch
Ferme le constat de sécurité « corps distants illimités et stockage persistant » : le worker pouvait être OOM par une réponse volumineuse ou une bombe gzip (
res.text()sans limite ni contrôle MIME), et le HTML brut s'accumulait sans fin dans Po$Design :
docs/superpowers/specs/2026-07-12-snapshot-object-storage-design.mdPlan :
docs/superpowers/plans/2026-07-12-snapshot-object-storage.mdCe que ça change
INDARA_FETCH_ALLOWED_CONTENT_TYPES), plafond d'octets décompressés (INDARA_FETCH_MAX_BYTES, 10 Mio), rejets précoces par en-têtes, streaming direct vers S3 sans buffering du corps entier. Erre$document_sourcesdevient une table pointeur (s3_key,size_bytes,content_type,sha256), les octets bruts vivent soussources/{uuid}. Décodage charset à la lecture$snapshot_tombstonesrempli par trigger (suppression transactionnelle) + job de drain (INDARA_SNAPSHOT_DRAIN_INTERVAL_SECS, 1 h) + janitor d'orphelins (garde 24 h, quotidien).INDARA_BODY_LIMIT_DEFAULT1 Mio,INDARA_BODY_LIMIT_DOCUMENTS32 Mio), fail-fast S3 au boot (server + worker).s3.*+ env + NetworkPolicies gated dans la chart, README chart (lifecycleAbortIncompleteMultipartUpload+ provisioning Rook).Vérifications
Notes de revue
OpenApiRouter+ layer-override), chemin abort-multipart prouvé sans objet visible (plafond et err$AbortIncompleteMultipartUpload(auto-expiration interne) : le compose l'applique en best-effort ; S3/RGW réels reçoivent la règle.🤖 Generated with Claude Code