Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,17 @@ Option : ajouter un paramètre `install_shim` pour mode "exec" vs "source", ou d
**Tâches :** dans `install_shim` (`lib/ui.sh`), avant de skip un shim existant, comparer les 3 premières lignes du fichier existant avec le `shim_content` attendu. Si différent : réécrire. Si identique : skip.
**DoD :** après un changement de contenu du shim, `./install.sh` réécrit le fichier (au lieu de « déjà présent »). → `TESTS.md` S36.

### T6.12-p 🟠 Polish UX sortie setup `<- AC-R027 AC-R028 AC-R029 AC-R030`
**But :** 4 retouches UX sur la sortie de `albert-code setup`, issues de dogfood.

**Tâches :**
1. Afficher l'ASCII art Albert Code au début de Phase B (après le garde-fou PWD = SELF_DIR, avant `title "Phase B …"`).
2. Quand Context7 MCP est choisi, demander la clé API si absente (ni env ni ~/.zshenv) via `prompt_secret`, la persister via `persist_zshenv`. Si vide, avertir que le MCP sera en erreur.
3. Réécrire `print_next_steps()` : seulement `title "Prochaines étapes"` + `info "Lancer Albert Code : albert-code run"` + une ligne NB sans flèche sur les skills. Retirer le bloc VM de base, opencode, « Parle en français », et le statut GitHub.
4. Déplacer le statut GitHub (push/PR configuré ou non) JUSTE AVANT « ✓ Projet configuré. » dans `phase_b()`.

**DoD :** les 4 retouches visibles en dry-run. L'ASCII art apparaît en Phase B. La clé Context7 est demandée quand on choisit le MCP sans clé préexistante. L'ordre des lignes en fin de Phase B est : statut GitHub → ✓ Projet configuré → Prochaines étapes → albert-code run → NB skills. → `TESTS.md` S37.

### T6.13 🟡 Bruit de debug « name= » dans sync_skills `<- AC-R026` ✅ implémenté
**But :** au boot VM (`runtime/agent-vm.runtime.sh`, sync_skills), des lignes « name=<skill> » parasites apparaissent dans la sortie (ex. name=datagouv-apis). Bruit dû aux variables `local name` + `name=$(basename …)` en bash 3.2.
**Tâches :** remplacer les déclarations `local name` puis `name="$(basename …)"` par `local name="$(basename …)"` (fusion local+assignation), et idem pour `local ename`, `local resolved`. Supprime la source probable du bruit.
Expand Down
5 changes: 5 additions & 0 deletions FEEDBACK.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@

---

| AC-R027 | 🎛️ | 🟡 | Phase B (setup) commence sans aucun repère visuel — pas d'ASCII art, pas de titre d'étape — alors que Phase A en a. L'utilisateur ne sait pas que la config du projet a commencé. | Dogfood setup 2026-07 | ✅ traité | `BACKLOG.md` T6.12-p |
| AC-R028 | 🎛️ | 🟡 | Context7 MCP coché au setup mais la clé n'est jamais demandée : le MCP apparaît « cassé » au premier lancement (401). L'utilisateur doit l'activer manuellement après coup. | Dogfood setup 2026-07 | ✅ traité | `BACKLOG.md` T6.12-p |
| AC-R029 | 🎛️ | 🟡 | `print_next_steps` est long et encombré : instructions VM de base (déjà faite en Phase A), ligne « Parle en français » (banale), et push GitHub (déjà fait plus haut). Trop de texte tuile finale. | Dogfood setup 2026-07 | ✅ traité | `BACKLOG.md` T6.12-p |
| AC-R030 | 🎛️ | 🟡 | Le statut GitHub (push/PR OK ou non) apparaît après « ✓ Projet configuré. » dans `print_next_steps` — ordre illogique : un statut AVANT le ✅ final. | Dogfood setup 2026-07 | ✅ traité | `BACKLOG.md` T6.12-p |

## Notes

- **AC-R004 (prompt caching)** : à instruire avant tout scaling. Vérifier si Albert API expose du caching sur `chat/completions` ; sinon, arbitrer l'infra d'inférence. vLLM implémente le caching nativement.
Expand Down
11 changes: 11 additions & 0 deletions TESTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,17 @@ et le bloc marqueur a disparu.
5. Vérifier l'email final = `{id}+{login}@users.noreply.github.com`.
**Attendu :** pas de fallback « Introuvable automatiquement » avec un PAT valide. L'email dérivé est correct.

## S37 — Polish UX sortie setup (T6.12-p) ☐
**Préconditions :** dossier projet vierge (hors dépôt albert-code), `HOME` sandboxé.
**Étapes :**
1. Lancer `bash bin/albert-code setup --dry-run` (depuis le dossier projet).
2. Observer la sortie Phase B : ASCII art (« Coder avec l'IA souveraine » / `____`) visible APRÈS le message garde-fou et AVANT « Phase B — Configuration ».
3. Vérifier que `print_next_steps` contient exactement : « Prochaines étapes », « Lancer Albert Code : albert-code run », et une ligne « NB : Les skills sélectionnées se synchronisent automatiquement au démarrage » (sans flèche `→`).
4. Vérifier l'ordre final : (éventuel statut GitHub) → « ✓ Projet configuré. » → (echo) → « Prochaines étapes » → « Lancer Albert Code : albert-code run ».
5. Répéter le setup avec `CONTEXT7_API_KEY` ABSENTE de l'env et de `~/.zshenv`, répondre « oui » au MCP context7 → vérifier qu'un prompt `prompt_secret` est affiché (dry-run : « [dry-run] prompt: Colle ta clé API Context7 ») ; laisser vide → warning « Pas de clé Context7 — le MCP context7 s'affichera en erreur ».
6. Répéter le setup avec `CONTEXT7_API_KEY` déjà dans l'env → vérifier qu'aucun prompt Context7 n'apparaît (le MCP est activé normalement).
**Attendu :** (2) ASCII art présent au début de Phase B. (3) `print_next_steps` raccourci, plus de « Crée la VM de base », plus de « Ouvre la bulle isolée », plus de « Parle en français ». (4) statut GitHub AVANT le ✓ final, pas après. (5) clé demandée, warning si vide. (6) pas de prompt si clé déjà présente.

## S36 — `install_shim` réécrit un shim obsolète + sortie sync_skills propre (T6.12, T6.13) ☐
**Préconditions :** dossier sandbox `/tmp/ac-test`, `install.sh` disponible.
**Étapes (install_shim) :**
Expand Down
34 changes: 18 additions & 16 deletions lib/phases.sh
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ phase_b() {
return 0
fi

banner
echo
title "Phase B — Configuration de ce projet"
echo

Expand All @@ -205,6 +207,11 @@ phase_b() {

compute_effective_vm_resources
echo
if [ -n "${GH_TOKEN:-}" ] || file_contains "$ZSHENV" "GH_TOKEN"; then
ok "Push et PR GitHub configurés depuis la VM."
else
info "Push/PR GitHub non configuré — voir le § Push & PR depuis la VM du README."
fi
ok "Projet configuré."
echo
print_next_steps
Expand Down Expand Up @@ -575,6 +582,15 @@ scaffold_opencode_json() {
[ "$first" = false ] && content=$content','
first=false
content=$content'"context7":{"type":"remote","url":"https://mcp.context7.com/mcp","enabled":true,"headers":{"Authorization":"Bearer {env:CONTEXT7_API_KEY}"}}'
if [ -z "${CONTEXT7_API_KEY:-}" ] && ! file_contains "$ZSHENV" "CONTEXT7_API_KEY"; then
local _ctx7_key
_ctx7_key="$(prompt_secret "Colle ta clé API Context7 (https://context7.com/plans) — Entrée pour passer")"
if [ -n "$_ctx7_key" ]; then
persist_zshenv "CONTEXT7_API_KEY" "$_ctx7_key"
else
warn "Pas de clé Context7 — le MCP context7 s'affichera en erreur sans clé."
fi
fi
fi
if [ "$mcp_playwright" = "true" ]; then
[ "$first" = false ] && content=$content','
Expand Down Expand Up @@ -727,20 +743,6 @@ scaffold_skills_selection() {
# print_next_steps — affiche les prochaines étapes
print_next_steps() {
title "Prochaines étapes"
local step=1
if ! base_vm_exists; then
info "%s. Crée la VM de base (une seule fois) : agent-vm setup --disk %s" "$step" "$AC_VM_DISK"
step=$((step + 1))
fi
info "%s. Ouvre la bulle isolée : agent-vm --cpus %s --memory %s --disk %s opencode" \
"$step" "$EFF_CPUS" "$EFF_MEM" "$AC_VM_DISK"
step=$((step + 1))
info "%s. Parle en français à l'assistant." "$step"
echo
info "Les skills se synchronisent automatiquement au démarrage."
if [ -n "${GH_TOKEN:-}" ] || file_contains "$ZSHENV" "GH_TOKEN"; then
ok "Push et PR GitHub configurés depuis la VM."
else
info "Push/PR GitHub non configuré — voir le § Push & PR depuis la VM du README."
fi
info "Lancer Albert Code : albert-code run"
printf ' NB : Les skills sélectionnées se synchronisent automatiquement au démarrage\n'
}
Loading