feat: gatekeeper service + gate de phase (v0.11.0)

Gatekeeper vérifie le statut d'asset avant chaque exécution : privilégié
inconnu → BLOQUÉ (aucun sursis) refusé jusqu'à review + hook d'alerte ;
approuvé → exécutable. Lecture seule autorisée sans asset. Gate de phase
CHLOVA_PHASE (défaut 1, fail-safe) ; assertReadOnlyPhase phase-aware. 7
nouveaux tests.

Palier de risque : reversible (logique de contrôle, n'exécute aucune mutation).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kantin-Petit
2026-06-23 01:27:35 +02:00
parent 56e948c976
commit 93d93bef0e
5 changed files with 221 additions and 6 deletions
+12
View File
@@ -6,6 +6,18 @@ incompatibles. Chaque ligne renvoie à un commit dédié (un artefact = un commi
## [Unreleased]
## [0.11.0] — 2026-06-23
### Added
- `src/gatekeeper/gatekeeper.ts` : service `Gatekeeper` (vérifie le statut AVANT
chaque exécution) + `GatekeeperGuard`. Privilégié inconnu → enregistré BLOQUÉ,
refusé jusqu'à review, hook d'alerte `onBlockedAttempt` ; approuvé → exécutable
+ incrément du compteur. Lecture seule → autorisée sans asset.
- Gate de phase `CHLOVA_PHASE` (défaut 1, fail-safe) dans la config.
- Tests gatekeeper service (5) + phase config (2).
### Changed
- `assertReadOnlyPhase` devient phase-aware : Phase 1 exige read-only ; Phase 2
autorise `PORTAINER_READ_ONLY=false`.
## [0.10.0] — 2026-06-23 — début Phase 2 (écriture + need-review)
### Added
- `src/gatekeeper/repository.ts` : `AssetRepository` SQLite (`node:sqlite`, zéro