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:
+112
-6
@@ -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).*
|
||||
|
||||
Reference in New Issue
Block a user