1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! Traits ACL (Access Control List) pour Gradatum.
//!
//! Spec ref : `docs/superpowers/specs/2026-05-03-phase1-design-gradatum-core.md` §2.11.
//!
//! ## Design
//!
//! Les traits ACL vivent dans `gradatum-core` pour permettre aux crates aval
//! (`gradatum-vault`, `gradatum-curator`) de dépendre des interfaces sans importer
//! `gradatum-acl-policy` (anti-cycle).
//!
//! Phase 1 : seul `allow_read` est matériellement utilisé par `gradatum-vault`.
//! Les autres méthodes sont implémentées en Phase 2+ dans `gradatum-acl-policy`.
//!
//! ## ACLFilter
//!
//! `ACLFilter` généralise le visibility marker `personal-classified` du prédécesseur
//! (legacy vault v1.6.2, R13) — au lieu d'un marqueur hardcodé, le filtre est pluggable
//! via ce trait.
use crateNote;
use crateBearerId;
/// Politique de contrôle d'accès à une note.
///
/// Implémentée par `gradatum-acl-policy` en Phase 2+.
///
/// Phase 1 : `gradatum-vault` utilise une implémentation par défaut `PermissivePolicy`
/// permissive single-tenant default — override with a stricter AclPolicy for multi-tenant deployments.
/// Filtre de visibilité sur une liste de notes.
///
/// Généralise le visibility marker `personal-classified` du legacy vault v1.6.2 (R13).
/// Au lieu d'un marqueur hardcodé, la logique de filtrage est injectée via ce trait.
///
/// Utilisé par `gradatum-vault` dans les endpoints de listing pour masquer les notes
/// non-accessibles au bearer courant.