Commit Graph

11 Commits

Author SHA1 Message Date
Kantin-Petit 93d93bef0e 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>
2026-06-23 01:27:35 +02:00
Kantin-Petit 56e948c976 feat: AssetRepository SQLite + cycle need-review persistant (v0.10.0)
Table assets sur node:sqlite (Node 24, zéro dep native) : CRUD,
listByStatus, incrementExec, setRiskTier anti-escalade, expireProvisional
(cron PROVISOIRE→BLOQUÉ). 6 tests. Bump Node 24 (sqlite stable), Dockerfile
24.13 + copie tsconfig.build.json. 0 vuln.

Palier de risque : reversible (persistance d'état, aucune mutation d'infra).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:24:35 +02:00
Kantin-Petit 1cce8c9db6 test: gatekeeper + readonly-filter + config, interfaces need-review (v0.9.0)
Fin Phase 1. 22 tests verts : barrière readonly-filter (fail-safe),
ReadOnlyGuard, paliers de risque + sursis, invariant anti-escalade,
config fail-closed + masquage secrets. Interfaces du cycle need-review
posées pour la Phase 2 (Asset, canExecute) sans câblage runtime. Split
tsconfig typecheck/build.

Palier de risque : reversible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:18:02 +02:00
Kantin-Petit c6309fd9a5 feat: surface Telegram + câblage Phase 1 complet (v0.8.0)
Long-polling Telegram (zéro port, allowlist obligatoire, backoff).
ReadOnlyGuard en défense profondeur. Prompt système anti-injection.
index.ts câble MCP read-only → cerveau → Telegram avec arrêt propre.
Build vert.

Palier de risque : reversible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:14:59 +02:00
Kantin-Petit bfce952817 feat: registry MCP + readonly-filter (v0.7.0)
Barrière n°1 de la lecture seule : seuls les outils readOnlyHint=true sont
exposés (fail-safe, palier de risque déduit côté code). Registry connecte
n8n + Portainer en HTTP authentifié et produit des ToolHandle read-only.
Retrait d'exactOptionalPropertyTypes pour interop SDK MCP (reste strict).

Palier de risque : reversible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:13:03 +02:00
Kantin-Petit be1ad76966 feat: client Ollama + boucle agent tool-calling (v0.6.0)
Client /api/chat (modèles cloud via proxy, auth Bearer, timeout, erreurs
sans fuite). Boucle comprendre→outil→observer→répondre avec garde-fou
anti-boucle, audit par appel et Guard injecté (abstraction prête pour le
gatekeeper Phase 2). ToolHandle découplé de MCP.

Palier de risque : reversible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:10:56 +02:00
Kantin-Petit 5fcb3ef18d feat: squelette orchestrateur TS fail-closed (v0.5.0)
Bootstrap backend Phase 1 : config zod fail-closed (refuse de démarrer
sans secret ; verrou lecture seule Portainer ; secrets masqués), logger
pino + journal d'audit, Dockerfile multi-stage non-root base épinglée,
vitest. Deps épinglées, npm audit 0 vuln, typecheck vert.

Palier de risque : reversible (aucune écriture branchée).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:09:02 +02:00
Kantin-Petit 6eda8312a6 feat: docker-compose stack CHLOVA (v0.4.0) — fin Phase 0
Stack complète : Ollama (proxy cloud, interne+egress, aucun port),
socket-proxy (endpoints lecture seule), MCP n8n + Portainer (read-only),
backend = seule surface (aucun port publié en P1, Telegram long-polling).
Réseaux internal/egress, images épinglées (digests à confirmer), secrets
par référence. `docker compose config` valide.

Palier de risque : privilégié (déploiement infra) — non déployé, validation
requise avant tout `up`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:02:53 +02:00
Kantin-Petit 0f63b3addd feat: socle sécurité — socket-proxy, réseaux, egress (v0.3.0)
Modèle de menace centré prompt-injection + défenses par couche
(surface réduite, socket-proxy obligatoire, scoping tokens, egress
ollama.com only, secrets par référence, lecture seule renforcée, audit).
Documente réseaux interne/egress et filtrage Docker en lecture seule P1.
Normalise les fins de ligne (.gitattributes).

Palier de risque : n/a (doc + conventions).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:00:45 +02:00
Kantin-Petit c096fa9467 docs: conventions versioning + doc + paliers de risque (v0.2.0)
Pose les règles non négociables : SemVer + un-artefact-un-commit, pinning
des images, export JSON des workflows n8n ; gabarit de doc d'asset ;
paliers réversible/privilégié avec invariant anti-escalade ; schéma
d'architecture et invariants d'exposition. Ignore settings.local.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 00:59:25 +02:00
Kantin-Petit a301281594 chore: scaffold dépôt CHLOVA (v0.1.0)
Pose le socle méta : CLAUDE.md (architecture cible + règles non
négociables versioning/sécurité/risque), README, CHANGELOG, .env.example
(références secrets only), .gitignore, squelette d'arborescence.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 00:57:23 +02:00