docs: roadmap 3.1 — bilan du 2026-08-23 (reste a faire, bug doctor/runner sans timeout, 11 idees neuves)

This commit is contained in:
2026-08-23 23:25:30 -04:00
parent e637c066fe
commit fa2c42d505
+112 -6
View File
@@ -1,7 +1,13 @@
# 🗺️ ROADMAP agent-manager — vers le « super outil »
> **Version du document : 3.0** · Statut : phases 0 à 3 livrées
> (v0.3.0 → v1.0.1), maintenance v1.0.2 → v1.1.0
> **Version du document : 3.1** · Statut : phases 0 à 3 livrées
> (v0.3.0 → v1.0.1), maintenance v1.0.2 → v1.1.5
>
> 🧭 **Bilan du 2026-08-23** : tout le périmètre versionné (J0 → J3, v0.7.0,
> épique v1.1.0) est livré — **0 issue ouverte** sur Gitea. Il reste :
> **1 bug prioritaire** (hang de `cargo test` / `am doctor`, §15.4),
> 3 fonctionnalités P1 jamais découpées en issues (§15.2), des activités de
> release (§15.3) et des idées neuves proposées (§16).
> Base : analyse du code **v0.2.7** (Rust, 45+ tests, zéro dépendance runtime)
>
> ✅ **Phase 0 livrée en v0.3.0 (2026-08-17)** : issues #2 à #16 clôturées,
@@ -129,6 +135,8 @@
9. [Indicateurs de succès (KPI)](#9--indicateurs-de-succès-kpi)
10. [Risques & garde-fous](#10--risques--garde-fous)
11. [Par où commencer](#11--par-où-commencer)
12. [Bilan & reste à faire (2026-08-23)](#15--bilan--reste-à-faire-analyse-du-2026-08-23)
13. [Idées neuves (post-v1.1.5)](#16--idées-neuves-post-v115)
---
@@ -358,8 +366,8 @@ consultable, reprenable, archivable.
| Fonctionnalité | Effort | Phase |
|---|---|---|
| Recherche fuzzy dans am search (typos, scoring, « vouliez-vous dire ») | M | P1 |
| am compare a b — tableau côte à côte (méthode, deps, catégorie, activité) | S | P1 |
| am news — dernières releases des agents installés (API GitHub/Gitea, cache) | M | P1 |
| ⬜ am compare a b — tableau côte à côte (méthode, deps, catégorie, activité) — **non livré, sans issue** | S | P1 |
| ⬜ am news — dernières releases des agents installés (API GitHub/Gitea, cache) — **non livré, sans issue** | M | P1 |
| Catalogue distant : am catalog update / am catalog add <url> | M | P2 |
| am suggest "un agent pour du Python" — tags + usage réel | M | P2 |
| am lab — benchmark : même tâche sur N agents, comparaison durée/résultat/coût | L | P2 |
@@ -398,7 +406,7 @@ consultable, reprenable, archivable.
| Favoris : am favorite / am unfavorite + ⭐ dans am list | S | P1 |
| Notes : am note claude-code "utiliser pour …" | S | P1 |
| Tags personnels : am tag claude-code python | S | P1 |
| Raccourcis de commandes : settings.shortcuts (i → install, s → start) | S | P1 |
| ⬜ Raccourcis de commandes : settings.shortcuts (i → install, s → start) — **non livré, sans issue** | S | P1 |
| Profils d'environnement : am profile dev / prod (env + args + agent par profil) | M | P1 |
| Thèmes couleurs du REPL | S | P2 |
@@ -532,6 +540,102 @@ aichat -f . "résume les données de ces fichiers JSON"
---
## 15. 🧭 Bilan & reste à faire (analyse du 2026-08-23)
> Analyse complète du dépôt le 2026-08-23 : code (v1.1.5, commit e637c06),
> historique git, tracker Gitea, artefacts de release.
### 15.1 ✅ Ce qui est livré
- **Tout le périmètre versionné** : J0/v0.3.0, J1/v0.4.1, J2/v0.6.0,
v0.7.0 (providers), J3/v1.0.0, épique v1.1.0 (onboarding/copilot) et les
maintenances v1.0.1 → v1.1.5.
- **0 issue ouverte** sur le tracker Gitea (issues #1 → #97 clôturées).
- `main` synchronisé avec `origin/main` ; Cargo.toml/Cargo.lock en
**v1.1.5** ; suite de tests : **455 tests passés, 0 échec** le
2026-08-23 (23 suites, hors `doctor_test` qui hang — §15.4).
- Vérifié présent dans le code : favoris/notes/tags (#39), dashboard,
monitor, web, serve, lab, sync, migrate, models, sandbox, registry,
ask, ai, setup + rôles copilot, self-update, services, schedule, i18n,
packaging, complétions, man pages.
### 15.2 ⬜ Fonctionnalités du roadmap NON livrées (jamais découpées en issues)
| Fonctionnalité | Axe | Effort | Constat dans le code |
|---|---|---|---|
| `am compare a b` — tableau côte à côte | Axe 7 | S | aucune commande `Compare` dans `src/cli.rs` |
| `am news` — dernières releases des agents installés | Axe 7 | M | aucun module, 0 occurrence dans `src/` |
| `settings.shortcuts` — raccourcis REPL (i → install…) | Axe 10 | S | 0 occurrence de `shortcuts` dans `src/` |
| Extensions sœurs Axe 13 (`am summarize`, `am explain`, `am fix`, …) | Axe 13 | M | absentes — voir §13.5 et l'idée N10 (§16) |
➡️ Suggestion : créer 3 issues Gitea (compare, news, shortcuts) en P1 —
petits efforts à forte valeur, seuls restes des jalons « cockpit ».
### 15.3 📦 Activités de release / opérations
| Activité | Détail |
|---|---|
| **Publier la release v1.1.5** | Le commit `e637c06` (fix aichat ≥ 0.30) est sur `main` **sans tag ni release Gitea** → installateurs et `am self-update` servent encore la v1.1.4. Taguer `v1.1.5` pour déclencher `.gitea/workflows/release.yml`. |
| **Compléter les assets v1.1.4** | La release v1.1.4 publiée ne contient **que** `am-windows-x86_64.zip` : binaires Linux (x86_64/aarch64) et macOS absents → les installateurs Linux/macOS retombent sur `cargo install --git`. |
| **Artéfacts `dist/` obsolètes** | Les archives de `dist/` datent de l'ère v0.6.0 (2026-08-19) ; laisser la CI régénérer celles de v1.1.5. |
| **Stash obsolète** | `stash@{0}` « WIP issue #39 : favoris, notes, tags » (2026-08-17 09:12) — la fonctionnalité a été livrée autrement dans v0.4.1 (champs présents dans `src/state.rs`) ; à purger (`git stash drop`) après confirmation. |
### 15.4 🐛 Bug découvert pendant l'analyse (2026-08-23) — à corriger en priorité
**`cargo test` se suspend** sur `doctor_test::report_contains_core_checks`
sur cette machine (reproduit 3 fois, dont une exécution > 20 min), et le
même hang peut frapper l'utilisateur final via `am doctor`.
- **Cause racine** : `SystemRunner::run` (`src/runner.rs`, branche
`capture`) attend `Command::output()` **sans timeout** et sans
protection contre l'héritage des pipes. `am doctor` sonde les outils du
PATH (`ollama ls`, `llama-server --version`, `git --version`…) ; quand
le processus fils engendre un petit-enfant qui conserve les handles
stdout/stderr (cas réel observé : `conhost.exe` alloué pour
`ollama.exe ls` lancé sans console), `output()` attend l'EOF des pipes
**indéfiniment**.
- **Reproduction** : `target\debug\deps\doctor_test-*.exe --nocapture
report_contains_core_checks` → hang > 40 s avec enfants `ollama.exe ls`
+ `conhost.exe` sous le processus de test ; l'ancien binaire de test du
2026-08-21 passait en 2,2 s (déclenchement du conhost non déterministe).
- **Périmètre touché** : tout ce qui passe par `SystemRunner::run` avec
capture — `am doctor` donc, et les sondes d'installation. (`am models`,
`am lab`, les plugins et la sonde externe utilisent déjà `wait_timeout`
et sont immunisés.)
- **Correctif proposé** : aligner `SystemRunner::run` sur le pattern déjà
éprouvé dans `src/models.rs` / `src/lab.rs` / `src/plugins.rs` : spawn
+ `wait_timeout` (30 s par défaut, `settings.probe_timeout_secs`) +
drain des pipes avant l'attente + kill de l'arbre à l'expiration — les
commentaires de `lab.rs` et `plugins.rs` documentent exactement ce
deadlock. À compléter par un test de régression (faux binaire qui
engendre un enfant garde-fou).
- **Contournement immédiat** : lancer les suites une à une, sans
`--test doctor_test`.
---
## 16. 💡 Idées neuves (post-v1.1.5)
> Ajoutées lors de l'analyse du 2026-08-23. Toutes ⬜ (proposées), non
> planifiées. Respectent l'ADN du projet : zéro dépendance runtime, local
> par défaut, contrats `--json` stables.
| # | Idée | Description | Axe | Effort | Phase |
|---|---|---|---|---|---|
| N1 | ⬜ **`am mcp` — serveur MCP** | Exposer am comme serveur *Model Context Protocol* : les agents (Claude Code, Codex, aichat…) découvrent et pilotent le parc via des outils MCP (`am__list`, `am__stats`, `am__sessions`, `am__start`…). am devient le hub de coopération entre agents. | nouveau | L | P3 |
| N2 | ⬜ **Budgets & alertes de coûts** | Budget par agent/projet avec alertes à seuils (80 % / 100 %) et blocage doux, branché sur le suivi des coûts (#49). | Axe 1 | M | P2 |
| N3 | ⬜ **Webhooks de notification** | Alertes `am watch` / `schedule` / `doctor --watch` vers un webhook (Discord, Slack, n8n, Gotify) en plus du `--notify` local. | Axe 6 | S | P2 |
| N4 | ⬜ **`am test <agent>` — smoke test** | Vérification normalisée post-install/post-update : le binaire répond, ping provider, tâche minimale — généralise le ping de `am setup` à tout le catalogue. | Axe 7 | M | P2 |
| N5 | ⬜ **`am diff` — comparaison de configs** | Diff de config/état entre deux machines ou deux points de sync ; complète `am sync` (#66) et `am migrate` (#68) pour le multi-machine. | Axe 9 | S | P2 |
| N6 | ⬜ **Transcripts de session** | `am sessions transcript <id>` : export Markdown lisible et partageable d'une session (commandes + sorties), complément de `sessions export` (#53). | Axe 4 | S | P2 |
| N7 | ⬜ **`am doctor --report`** | Rapport de diagnostic complet anonymisé (versions, doctor, événements récents) prêt à joindre à un bug report. | Axe 12 | S | P2 |
| N8 | ⬜ **Catalogue air-gapped** | `am catalog snapshot` : instantané hors-ligne complet du catalogue distant (définitions + binaires) pour machines sans internet. | Axe 7 | M | P3 |
| N9 | ⬜ **Export OpenTelemetry** | Export opt-in du journal `events.jsonl` vers OTLP/Grafana pour les équipes qui ont déjà une pile d'observabilité. | Axe 1 | M | P3 |
| N10 | ⬜ **Épique « Boîte à outils IA »** | Formaliser les commandes sœurs §13.5 sur les rôles copilot aichat (v1.1.0) : `am commit`, `am review`, `am explain`, `am fix`, `am summarize`, `am doc`, `am translate`, `am ask-code`, `am search-web`, `am note`. Une commande = un rôle + un raccourci de prompt, sécurité `--exec` héritée de `am ai`. | Axe 13 | L | P2 → P3 |
| N11 | ⬜ **Suite de tests 100 % hermétique** | `update_policy_test` (> 60 s/test) appelle réellement l'API GitHub via `installers::latest_version` ; prévoir un mode hors-ligne des sondes de version (flag test/offline ou mock), pour une suite rapide et déterministe partout. | Axe 12 | S | P1 |
---
## 8. 🚀 Jalons versionnés
| Jalon | Version | Contenu principal | Durée | Critère de sortie |
@@ -710,4 +814,6 @@ Phases livrées : 0 (v0.3.0), 1 (v0.4.1), 2 (v0.6.0), v0.7.0 (providers,
2026-08-19), 3 (v1.0.0, #76–#80, 2026-08-20) ; maintenance v1.0.1/v1.0.2
(self-update décompression, REPL), v1.0.3 (détection externe), v1.0.4
(catalogue shell AI, #94 #95), v1.0.5 (commande am ai, #93 #96 #97),
v1.0.6 (installateur Windows accepte l'entrée am-windows-x86_64.exe).*
v1.0.6 (installateur Windows accepte l'entrée am-windows-x86_64.exe),
> v1.1.0 (onboarding/copilot) → v1.1.5 (aichat ≥ 0.30). Bilan & idées
> neuves ajoutés le 2026-08-23 (§15, §16).*