Skip to content

feat(setup): rafraîchir les fichiers projet figés — merge opencode.json + garde-fou OpenCode (EPIC 8)#16

Merged
benoitvx merged 1 commit into
mainfrom
feat/refresh-managed-project-files
Jul 21, 2026
Merged

feat(setup): rafraîchir les fichiers projet figés — merge opencode.json + garde-fou OpenCode (EPIC 8)#16
benoitvx merged 1 commit into
mainfrom
feat/refresh-managed-project-files

Conversation

@benoitvx

Copy link
Copy Markdown
Contributor

Problème de fond

Au setup, les fichiers posés dans le projet (opencode.json, .agent-vm.runtime.sh, AGENTS.md) sont conservés s'ils existent → les évolutions du template ne redescendent jamais aux projets déjà configurés. Trois symptômes, une seule cause (cf. debug bêta-testeur Julien).

Corrections (sur les canaux qui redescendent)

T8.2 — opencode.json : réparer, pas seulement avertir (généralise T1.6/T7.7)
Si ./opencode.json existe sans provider albert et que jq est présent : merge de provider.albert + model + small_model, sans toucher MCP / permissions / autres providers, avec backup .bak. Fallback = avertissement (T7.7) si jq absent.

T8.3 — Garde-fou version OpenCode (absorbe AC-R041)
Injecté dans le bloc marqué du runtime USER ~/.agent-vm/runtime.sh (réécrit à chaque setupredescend aux installs existantes). Au boot de la VM : si opencode ne connaît pas --auto, opencode upgrade. Corrige l'écran de help au lieu du TUI sur les vieilles VM (cas Julien, OpenCode 1.2.9). Détection capture-first (pas de pipe). vendor/vm/ non touché.

Revue intégrée

Un défaut a été corrigé avant push : le message de succès ok "Provider Albert ajouté" était inconditionnel → il s'affichait même quand le merge jq échouait et que l'original (sans albert) était restauré. Désormais le message n'apparaît que si le merge a réellement abouti ; sinon avertissement + restauration.

Validation

  • Syntaxe bash -n OK.
  • Merge jq testé : JSON valide (Scaleway + MCP + permissions préservés, Albert ajouté) ; JSONC invalide → restauration, pas de faux succès.
  • T8.3 : logique --auto présent / absent / opencode absent validée.
  • Reste à valider en réel (non reproductible à froid) : T8.3 sur une VM à vieil OpenCode → upgrade auto → TUI (cas Julien / betabot2).

Portée

lib/phases.sh (scaffold_opencode_json, ensure_vm_runtime) + doc (BACKLOG EPIC 8, FEEDBACK AC-R041, TESTS S46/S47). vendor/vm/ intact.

…on + garde-fou OpenCode (EPIC 8, T8.2/T8.3, AC-R041)

Au setup, les fichiers projet (opencode.json, runtime) etaient conserves tels
quels s'ils existaient -> les evolutions du template ne redescendaient jamais
aux projets deja configures. Corrections sur les canaux qui redescendent :

T8.2 (scaffold_opencode_json) : si ./opencode.json existe sans provider albert
et que jq est present, merger provider.albert + model + small_model sans
toucher les autres cles (MCP, permissions, autres providers), avec backup .bak.
Le message de succes n'est affiche QUE si le merge jq a reellement abouti ;
sur un JSON invalide (ex. commentaires), restauration du .bak + avertissement.
Fallback si jq absent : avertissement (T7.7).

T8.3 (ensure_vm_runtime) : garde-fou dans le bloc marque du runtime USER
(~/.agent-vm/runtime.sh, reecrit a chaque setup donc redescend a l'existant).
Au boot de la VM, si opencode ne connait pas --auto, `opencode upgrade`.
Corrige l'ecran de help au lieu du TUI sur les vieilles VM (AC-R041).
Detection capture-first (pas de pipe). vendor/vm/ non touche.

Tests : TESTS.md S46 (merge opencode.json) + S47 (garde-fou OpenCode --auto).
@benoitvx
benoitvx merged commit aff7093 into main Jul 21, 2026
2 checks passed
@benoitvx
benoitvx deleted the feat/refresh-managed-project-files branch July 21, 2026 20:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant