rfc(adr): Job Execution History & Asset Lifecycle — Hot Lineage, Ephemeral Scratch Storage & Automated Loi 25 Purge
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 8/100
Research direction
This is a design RFC, not a code task: the deliverable is the ADR file docs/adr/ADR-079-job-execution-history-and-lifecycle-retention.md, which the issue asks to write. Start by reading the retention table and the three data classes in the issue body, then the proposed job_retention_policies schema and the orazaka-job-service purge job it mentions. Done means the maintainers have reviewed and accepted the ADR, which requires domain and legal input on Loi 25 and GDPR, so a newcomer should not start without asking first.
Written by the indexing model from the issue text.
Description
Contexte & Problématique
Chaque tâche exécutée par les plateformes Krizaka (génération vidéo/image dans Orazaka, transcodage dans Orochia, audit documentaire dans Yomizaka) génère des données à plusieurs étapes :
- Les paramètres et prompts soumis par l'utilisateur.
- Les fichiers temporaires d'exécution (scratch storage : frames extraites, fichiers d'échange FFmpeg, embeddings transitoires).
- Les artefacts finaux générés (vidéos MP4, images, bundles Next.js).
- La télémétrie d'exécution (logs, métriques VRAM, tokens consommés, settlement financier).
Nous devons répondre formellement à ces questions via un ADR :
- Doit-on conserver un historique de tous les jobs ?
- Quelle est la durée de vie des inputs utilisateurs vs des artefacts finaux ?
- Comment structurer la rétention pour respecter la Loi 25 québécoise et le RGPD tout en optimisant les coûts d'infrastructure ?
Décisions Proposées pour l'ADR
1. Segmentation en 3 Classes de Données de Job
| Classe | Nature des Données | Emplacement | Règle de Rétention | Rationale |
|---|---|---|---|---|
| A. Télémétrie & Audit Trail | Run ID, Tenant ID, User ID, Modèle utilisé, Statut d'exécution, Coût en crédits, Latence | Base de données PostgreSQL (runs, job_executions) |
12 mois glissants (puis agrégation statistique anonymisée) | Obligation comptable et légale pour la facturation (krizaka-billing), traçabilité C2PA et support client |
| B. Inputs Utilisateur (Photos / Vidéos) | Fichiers bruts uploadés servant de prompt visuel | Bunny Storage (/inputs/) |
24 heures (mode éphémère par défaut) ou sur demande utilisateur | Protection de la vie privée (Loi 25), réduction drastique de l'empreinte de stockage, minimisation des risques de fuite |
| C. Scratch Intermédiaire | Fichiers temporaires de montage, frames PNG individuelles, fichiers VRAM | Disque local de worker / RAM tempfs | 0 seconde (Purge immédiate) à la terminaison du job (succès ou échec) | Les workers restent sans état (stateless), aucun déchet ne persiste sur les GPU |
| D. Outputs Finaux | Vidéos générées, images finales, packs exportés | Bunny Storage (/outputs/) |
Tier Gratuit : 14 jours Tier Pro / Créateur : Illimité (ou jusqu'à suppression manuelle) |
Valeur ajoutée délivrée au client, possibilité de ré-télécharger |
2. Mécanisme de Nettoyage Automatisé (Lifecycle Daemon)
- Worker Cleanup Hook : Tout worker (
orazaka-worker-media, job executor) implémente un blocfinallygarantissant la destruction des répertoires temporaires (rm -rf /tmp/scratch/${runId}). - Cron de Rétention Bunny Storage : Mise en place d'un job planifié (via
orazaka-automation-service) appliquant les règles de rétention sur les préfixes/inputs/âgés de plus de 24h dont le job est clos. - Conformité Loi 25 / Droit à l'Oubli :
- Un appel à
DELETE /api/v1/users/{userId}déclenche une saga de purge en cascade :- Suppression récursive du préfixe stockage :
rmdir /<zone>/t/<tenantId>/u/<userId>/ - Suppression de la collection Bunny Stream associée.
- Anonymisation des métadonnées de run dans la table d'audit (remplacement des identifiants par un hash irréversible).
- Suppression récursive du préfixe stockage :
- Un appel à
Tâches & Prochaines Étapes
- Rédiger
docs/adr/ADR-079-job-execution-history-and-lifecycle-retention.md. - Définir la table
job_retention_policiesdans le schéma de base de données. - Implémenter le job automatisé de purge des fichiers temporaires dans
orazaka-job-service. - Mettre à jour la documentation légale et de conformité (politique de conservation des données).
- Dominant language
- No language data
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 52m
- Merged PRs (30d)
- 26
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from krizaka/.github
-
area:growth owner:oussama priority:later product:krizaka product:site type:design
Difficulty 1/5 Under an hour Newbie friendliness 68/100
krizaka/.github#15 · 2 comments ·
Maintainers usually reply within 1 day
-
area:architecture area:backend priority:next product:krizaka type:feature
Difficulty 5/5 Over a week Newbie friendliness 12/100
krizaka/.github#67 · 1 comment ·
Maintainers usually reply within 1 day
-
area:architecture area:infra priority:next product:krizaka type:feature
Difficulty 5/5 Over a week Newbie friendliness 15/100
krizaka/.github#65 · 1 comment ·
Maintainers usually reply within 1 day
-
priority:next
Difficulty 5/5 Over a week Newbie friendliness 8/100
krizaka/.github#64 · 2 comments ·
Maintainers usually reply within 1 day
-
priority:now
Difficulty 5/5 Over a week Newbie friendliness 12/100
krizaka/.github#63 · 1 comment ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
healthchecks/healthchecks#1349 ·
-
native-cpu: -Wreturn-type in skainet_row_threads.c:150 (worker fn has no return)Possibly taken @Doomguy-BFG9000 claimed this today. Opengood first issue size:xs skill:native
Difficulty 1/5 Under an hour Newbie friendliness 78/100
SKaiNET-developers/SKaiNET#1358 · 1 comment ·
Maintainers usually reply within 1 day
-
bug v1 v2
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
modelcontextprotocol/python-sdk#3725 ·
Maintainers usually reply within 1 day
-
batchterms() drops queries without a similar() clause, misaligning results with inputsPossibly taken @MohammadHijjawi97 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
[BUG]: filesystem-edit-file converts a CRLF file's line endings to LF on every editPossibly taken @MohammadHijjawi97 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Mintplex-Labs/anything-llm#6755 ·
Maintainers usually reply within 1 day