# Changelog Format [Keep a Changelog](https://keepachangelog.com/), versioning [SemVer](https://semver.org/). Tant que le projet est en `0.x`, chaque mineur peut introduire des changements incompatibles. Chaque ligne renvoie à un commit dédié (un artefact = un commit). ## [Unreleased] ## [0.9.0] — 2026-06-23 — fin Phase 1 (cerveau lecture seule) ### Added - `src/gatekeeper/assets.ts` : interfaces du cycle "need review" posées pour la Phase 2 (table Asset, sursis 7 j réversible / blocage immédiat privilégié, `assertNoEscalation` anti-escalade, `canExecute`). Non câblé au runtime P1. - Tests Vitest (22) : `readonly-filter` (fail-safe + tiers), `gatekeeper` (Guard read-only, sursis par palier, invariant anti-escalade, canExecute), `config` (fail-closed, verrou lecture seule, masquage des secrets). ### Changed - Split TS config : `tsconfig.json` (typecheck+tests, noEmit) / `tsconfig.build.json` (emit `dist/`, rootDir `src`). ## [0.8.0] — 2026-06-23 ### Added - `src/surfaces/telegram.ts` : surface Telegram long-polling (zéro port publié), allowlist d'IDs obligatoire, backoff sur erreur. - `src/gatekeeper/guard.ts` : `ReadOnlyGuard` (barrière n°2, défense en profondeur) — n'autorise que `reversible`+`readOnly`. - `src/agent/system-prompt.ts` : cadrage anti-prompt-injection (données ≠ instructions). - `src/index.ts` : câblage complet Phase 1 (MCP read-only → cerveau → Telegram), arrêt propre SIGTERM/SIGINT. `npm run build` vert. ## [0.7.0] — 2026-06-23 ### Added - `src/mcp/readonly-filter.ts` : barrière lecture seule — n'expose que les outils `readOnlyHint === true` (fail-safe : absence d'annotation ⇒ écarté) ; déduit le palier de risque (jamais déclaré par le LLM). - `src/mcp/registry.ts` : connexion MCP HTTP authentifiée (n8n + Portainer), liste + filtre les outils read-only en `ToolHandle`, sérialise les résultats. ### Changed - `tsconfig` : retrait de `exactOptionalPropertyTypes` (interop SDK MCP) ; reste strict (`strict`, `noUncheckedIndexedAccess`, `noImplicitOverride`). ## [0.6.0] — 2026-06-23 ### Added - Client Ollama `/api/chat` (`src/llm/ollama.ts`) : modèles cloud via proxy, auth Bearer, timeout, tool-calling, erreurs sans fuite de secret. - Boucle agent (`src/agent/loop.ts` + `types.ts`) : comprendre → outil → observer → répondre, garde-fou anti-boucle, audit par appel, `Guard` injecté (abstraction prête pour le gatekeeper Phase 2). `ToolHandle` indépendant de MCP. ## [0.5.0] — 2026-06-23 — début Phase 1 (cerveau lecture seule) ### Added - Squelette orchestrateur TS (Node 22, ESM strict, Fastify) : `config.ts` fail-closed (zod, verrou `assertReadOnlyPhase`, `redactedConfig`), `audit/log.ts` (pino + journal d'exécutions), `index.ts` (bootstrap + healthcheck interne), `Dockerfile` multi-stage (base épinglée, user non-root), `vitest.config.ts`, `orchestrator/README.md`. - Dépendances **épinglées**, `npm audit` à 0 vulnérabilité. ## [0.4.0] — 2026-06-23 — fin Phase 0 (socle) ### Added - `infra/docker-compose.yml` : stack CHLOVA — Ollama (proxy cloud, interne + egress, aucun port publié), socket-proxy (lecture seule), MCP n8n + MCP Portainer (read-only), backend (seule surface, aucun port publié en P1). Images à tags épinglés (digests à confirmer avant déploiement réel), réseaux `chlova-internal` (internal) / `chlova-egress`. Config validée (`compose config`). ## [0.3.0] — 2026-06-23 ### Added - Socle sécurité : `docs/security.md` (modèle de menace prompt-injection + défenses par couche + invariants testés), `infra/networks.md` (réseaux interne vs egress, ports, egress filtré `ollama.com`), `infra/socket-proxy/README.md` (filtrage des endpoints Docker, lecture seule P1). - `.gitattributes` : normalisation LF (scripts/compose en LF strict). ## [0.2.0] — 2026-06-23 ### Added - Conventions versioning/doc : `docs/versioning.md` (SemVer, un-artefact-un-commit, pinning images, export workflows n8n), `docs/asset-template.md` (gabarit doc), `docs/risk-tiers.md` (réversible vs privilégié, invariant anti-escalade), `docs/architecture.md` (schéma + invariants + composants). ### Changed - `.gitignore` : ignore `.claude/settings.local.json` (réglages locaux). ## [0.1.0] — 2026-06-23 ### Added - Scaffold du dépôt : `CLAUDE.md` (architecture + règles non négociables), `README.md`, `CHANGELOG.md`, `.env.example`, `.gitignore`. - Squelette d'arborescence : `docs/`, `infra/`, `orchestrator/`, `workflows-n8n/`.