feat: vault DIR — exclusions par vault et lecture seule déclarable (vault Spark) #58

Open
bruno wants to merge 5 commits from spark-vault-dir into main
Owner

Fonctionnalité

Prépare l'arrivée du vault « Spark » (répertoires de travail de la console Spark exposés dans ObsiGate) en rendant les vaults de type DIR sûrs à monter en lecture seule :

  • Exclusions par vault appliquées partout où le disque est montré ou lu — navigation (/api/browse), lectures de fichiers (vue, raw, téléchargement, lectures xlsx), liste des chemins et indexeur — et plus seulement à l'indexeur : un dossier ou un chemin exclu est invisible et illisible (404 propre).
  • Lecture seule déclarable : un vault DIR déclaré readonly refuse toute mutation avec un 403 « read_only » côté service, et la sidebar cesse de proposer renommer / déplacer / supprimer sur ce vault et son contenu (menus désactivés avec l'infobulle « Vault en lecture seule »).

Contrat (variables des vaults DIR_N_*, lues dans load_vault_configs)

  • DIR_N_READONLY=true|false — lecture seule appliquée (mutations) et exposée par l'API (readonly dans VaultInfo).
  • DIR_N_IGNORED_DIRS=.home,.venv,... — noms de dossiers exclus à toute profondeur, en plus de IGNORED_DIRS global.
  • DIR_N_IGNORED_PATHS=Executeurs/*/data,Executeurs/*/.env — motifs fnmatch sur le chemin relatif POSIX dans le vault ; un dossier qui correspond cache tout son sous-arbre.

Les vaults VAULT ne sont pas touchés (aucune exclusion sans déclaration DIR_N_*).

Tests

  • Nouveau fichier tests/test_spark_vault_dir.py : 18 tests, tous passés — parsing des trois variables, navigation/lecture/téléchargement filtrés (dossier ignoré, chemin ignoré, .env sous Executeurs/*/), garde sur les lectures xlsx, mutations refusées en 403 sur vault readonly, /api/vaults expose readonly.
  • Suites voisines : test_api_main + test_indexer_advanced + test_vault_tags = 442 passées ; ruff propre sur les fichiers touchés (les 11 erreurs restantes sont préexistantes sur main) ; validate-imports.mjs et unit.test.mjs verts côté frontend.

Fiche : docs/features/spark-vault-dir.md ; entrée CHANGELOG sous [Unreleased].

## Fonctionnalité Prépare l'arrivée du vault « Spark » (répertoires de travail de la console Spark exposés dans ObsiGate) en rendant les vaults de type `DIR` sûrs à monter en lecture seule : - **Exclusions par vault** appliquées partout où le disque est montré ou lu — navigation (`/api/browse`), lectures de fichiers (vue, raw, téléchargement, lectures xlsx), liste des chemins et indexeur — et plus seulement à l'indexeur : un dossier ou un chemin exclu est invisible et illisible (404 propre). - **Lecture seule déclarable** : un vault `DIR` déclaré `readonly` refuse toute mutation avec un 403 « read_only » côté service, et la sidebar cesse de proposer renommer / déplacer / supprimer sur ce vault et son contenu (menus désactivés avec l'infobulle « Vault en lecture seule »). ## Contrat (variables des vaults `DIR_N_*`, lues dans `load_vault_configs`) - `DIR_N_READONLY=true|false` — lecture seule appliquée (mutations) et exposée par l'API (`readonly` dans `VaultInfo`). - `DIR_N_IGNORED_DIRS=.home,.venv,...` — noms de dossiers exclus à toute profondeur, en plus de `IGNORED_DIRS` global. - `DIR_N_IGNORED_PATHS=Executeurs/*/data,Executeurs/*/.env` — motifs fnmatch sur le chemin relatif POSIX dans le vault ; un dossier qui correspond cache tout son sous-arbre. Les vaults `VAULT` ne sont pas touchés (aucune exclusion sans déclaration `DIR_N_*`). ## Tests - Nouveau fichier `tests/test_spark_vault_dir.py` : **18 tests, tous passés** — parsing des trois variables, navigation/lecture/téléchargement filtrés (dossier ignoré, chemin ignoré, `.env` sous `Executeurs/*/`), garde sur les lectures xlsx, mutations refusées en 403 sur vault readonly, `/api/vaults` expose `readonly`. - Suites voisines : `test_api_main` + `test_indexer_advanced` + `test_vault_tags` = 442 passées ; ruff propre sur les fichiers touchés (les 11 erreurs restantes sont préexistantes sur main) ; `validate-imports.mjs` et `unit.test.mjs` verts côté frontend. Fiche : `docs/features/spark-vault-dir.md` ; entrée CHANGELOG sous [Unreleased].
bruno added 5 commits 2026-11-03 14:09:17 -05:00
bruno force-pushed spark-vault-dir from 7b26620ce1 to b5b5a0e820 2026-11-03 14:09:17 -05:00 Compare
Some required checks failed
CI / lint (pull_request) Successful in 1m35s
CI / security (pull_request) Successful in 37s
CI / test (pull_request) Failing after 3m32s
CI / build (pull_request) Skipped
CI / e2e (pull_request) Skipped
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin spark-vault-dir:spark-vault-dir
git checkout spark-vault-dir
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Projets/ObsiGate#58