chore(tickets): synchronise index/carnets tickets #131-#139 + note mémoire assets/persistance plugins
État runtime .ideai séparé du code (index, counter, carnets, note mémoire plugin-asset-serving-and-owned-storage-contracts). Purge des tickets obsolètes 51/63/66. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
26
.ideai/tickets/135/carnet.md
Normal file
26
.ideai/tickets/135/carnet.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
issueRef: "#135"
|
||||
version: 4
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1785708498776
|
||||
---
|
||||
## Audit QA
|
||||
|
||||
- `install_from_directory` : audit confirme qu'avant correctif le store ne rejetait pas explicitement les symlinks source ; il les ignorait. Le correctif fait maintenant échouer l'installation sur toute entrée symlink ou unsupported dans l'arbre source.
|
||||
- `install_from_archive` : audit confirme un trou réel de confinement avant correctif. L'extraction reposait entièrement sur `unzip` sans validation applicative des entrées. Le correctif remplace cette extraction par une lecture Rust confinée qui rejette les entrées `../`/absolues via `enclosed_name()` et refuse explicitement les symlinks d'archive.
|
||||
- Confinement d'écriture : après correctif, aucune écriture d'install ne sort de `app_data/plugins/_staging/...` puis `app_data/plugins/installed/<id>` ; le test `../../../../outside.txt` prouve l'absence d'écriture hors racine.
|
||||
- `hash_dir` / collecte fichiers : durci pour échouer si un package contient encore un symlink ou une entrée non supportée, au lieu de l'ignorer.
|
||||
- `plugin_uninstall` / `remove_package` : audit confirmé par test multifichier. La désinstallation supprime le dossier entier, retire l'entrée registry et laisse le runtime catalog vide.
|
||||
|
||||
## Tests ajoutés/ajustés
|
||||
|
||||
- `plugin::tests::install_from_directory_rejects_source_symlink`
|
||||
- `plugin::tests::install_from_archive_rejects_parent_traversal_without_writing_outside_stage`
|
||||
- `plugin::tests::install_from_archive_rejects_symlink_entries`
|
||||
- `plugin_install_load::uninstall_multifile_plugin_removes_package_registry_and_runtime_residue`
|
||||
- Stabilisation des tests SDK `hello-plugin` : fixture matérialisée avec `dist/index.js` dans un temp dir pour supprimer une dépendance implicite à un build préalable.
|
||||
|
||||
## Verdict
|
||||
|
||||
- Correctif confinement install/uninstall validé.
|
||||
- `cargo test -p infrastructure -p application -p app-tauri` vert avec `CARGO_HOME=/tmp/idea-cargo-home` dans cet environnement.
|
||||
Reference in New Issue
Block a user