67 lines
6.6 KiB
Markdown
67 lines
6.6 KiB
Markdown
# Memoire coding — genere automatiquement, ne pas editer a la main
|
|
|
|
> Source de verite operationnelle : table `memory_entries` dans context-hub (SQLite + API/MCP).
|
|
> Ce fichier est une projection durable et versionnee, regeneree a chaque `record_lesson`.
|
|
> Derniere generation : 2026-09-04T10:44:27Z
|
|
|
|
## Transverse
|
|
|
|
### Decisions
|
|
|
|
- **[coding-dec-0002]** Injection UI native dans le GUI DSH via profil web (sans root)
|
|
Le GUI dsh web compose l'HTML à la volée : un paquet dual-face (exports ./client + dsh.client.platform=web, bundle window.__ModuleLoader__.load) installé via pnpm add file: dans ~/.dsh/profiles/web + ligne - insert dans cordis.patch.yml est servi nativement sur /plugins/<pkg>/client.js. Scan des nouveaux plugins au boot uniquement (redémarrage requis), mais le bundle est relu du disque à chaque requête : itération = edit + F5. Test sans risque : cloner ~/.dsh vers /tmp et booter DSH_HOME=/tmp/... dsh web --port 3999 --no-open.
|
|
_cree par DSH le 2026-08-24 21:31:18 — tags: dsh, gui, plugin, client-module, cordis_
|
|
|
|
### Bonnes pratiques
|
|
|
|
- **[coding-bp-0002]** Ne jamais proposer de réponses génériques de remplacement
|
|
Sans réponse exacte et vérifiée, ne propose RIEN en remplacement. Dire simplement "Je ne sais pas". Ne jamais inventer de listes de magasins, sites web ou conseils génériques quand on n'a pas pu faire de recherche réelle. La transparence sur l'incapacité est toujours préférable à une fausse réponse.
|
|
_cree par DSH le 2026-09-04 10:44:25 — tags: règle-utilisateur, transparence, jamais-de-réponse-générique_
|
|
|
|
|
|
## Projet: Rapport_jury
|
|
|
|
### Decisions
|
|
|
|
- **[coding-dec-0003]** Référence design — thème clair bolbol.tn/history
|
|
Thème clair de référence (https://bolbol.tn/history/, thème par défaut) : --bg-body #f8f9fc · cartes #ffffff / alt #f0f2f8 · texte #1a1a2e / secondaire #5a5a7a / atténué #9a9ab0 · bordures #e0e2ec · accent violet #6c5ce7 + teal #00b894 (gradient 135°) + or #fdcb6e · code-bg #f0f2f8 · ombre douce rgba(0,0,0,.06) · radius 12px. Le site propose aussi un thème « nature » crème (#f5f0e8/#faf6ef, vert #2d7d46 → or #b8860b) et un dark navy (#0f0f1a, violet→teal). Appliqué au projet Rapport_jury : mode light conforme + palette d'accent « nature » ajoutée ; signature choisie : @Nabil.Derouiche · DSH · 2026.
|
|
_cree par DSH le 2026-08-26 10:56:27 — tags: design, theme-light, palette, signature, reference, bolbol.tn_
|
|
|
|
### Erreurs communes
|
|
|
|
- **[coding-err-0002]** Onglets : panneaux frères ≠ descendants · toujours grep « undefined » avant livraison
|
|
Deux pièges UI récurrents : (1) les boutons d'onglets dans un conteneur [data-tabs] avec panneaux FRÈRES nécessitent de chercher les panes dans tabs.parentElement, pas dans le conteneur lui-même ; (2) lors de la génération de HTML par gabarit, aligner les clés du helper (cap._t/_s) avec celles lues au rendu — sinon affichage « undefined ». Toujours auditer le HTML final par grep « undefined » avant livraison (Rapport_jury v1.6 : 9 occurrences éliminées).
|
|
_cree par DSH le 2026-08-26 12:28:45 — tags: tabs, ui, template, qa_
|
|
|
|
- **[coding-err-0001]** Barres empilées SVG : accumuler par colonne, jamais à travers les groupes
|
|
Bug SVG : dans un graphique à barres empilées, l'accumulateur de hauteur doit être remis à zéro pour CHAQUE colonne/groupe de l'axe X (boucle externe = labels, boucle interne = séries). Une boucle séries→labels fait cumuler les valeurs à travers les groupes et dessine des segments hors échelle (y négatif). Corrigé dans Rapport_jury/_work/engine.js barChart().
|
|
_cree par DSH le 2026-08-26 12:28:41 — tags: svg, charts, stacked-bars, bugfix_
|
|
|
|
|
|
## Projet: dsh-vps
|
|
|
|
### Decisions
|
|
|
|
- **[coding-dec-0001]** dsh-vps : architecture MCP = plugin contexthub 0.1.1-rc.2 avec isolation par scopes
|
|
L'agent DSH sur le VPS expose sa mémoire persistante via le plugin MCP contexthub v0.1.1-rc.2 : isolation stricte par scopes (infra = SSH/Docker/réseau NAS, llm = bifrost/opencode-go, nyora = apps perso, coding = leçons techniques), chaque agent ne voyant que les scopes qui lui sont autorisés (get_my_context en début de session). Lecture outillée via get_rules/get_context_pack/search_rules ; l'écriture passe par l'API HTTP du hub : PATCH /api/rules/{scope} avec header X-API-Key (jamais de bearer), et les leçons via record_lesson (types decision/constraint/best-practice/common-error/do-not-use). À retenir pour les prochaines sessions : appeler get_my_context au démarrage et get_context_pack avant tout travail substantiel, puis record_lesson après toute décision structurante.
|
|
_cree par DSH le 2026-08-24 21:23:05 — tags: dsh-vps, mcp, contexthub, scopes, isolation, architecture_
|
|
|
|
### Contraintes
|
|
|
|
- **[coding-cst-0001]** Canal SSH NAS dsh-vps : port 22222, user Best0f, commandes courtes obligatoires
|
|
Le NAS du projet dsh-vps se joint en SSH sur 192.168.100.33 port 22222 (user Best0f ; identités séparées : bolbol=Gitea, bestof=Portainer ; réseau conteneur 172.17.0.1, LAN 192.168.100.33 ; Docker uid 1026/gid 100). Contraintes MCP-NAS éprouvées : passer par heredoc -> timeout, repli heredoc -> printf/python, limiter chaque commande à 350 caractères, et une session est considérée empoisonnée après 3 erreurs (à réinitialiser plutôt qu'insister).
|
|
_cree par DSH le 2026-08-24 21:23:11 — tags: dsh-vps, ssh, nas, 22222, mcp, contrainte_
|
|
|
|
### Bonnes pratiques
|
|
|
|
- **[coding-bp-0001]** dsh-vps : Externalisation des cles API via env_file et proscription des secrets en dur
|
|
Pour eviter tout decalage lors des rotations de cles (erreur API key is invalid), les cles sont externalisees dans /home/dsh-agent/dsh-vps/.env (chmod 600) et injectees via env_file dans docker-compose.yml. Les templates de scaffold et compose ne doivent contenir aucune cle en dur.
|
|
_cree par GEMINI le 2026-08-25 14:30:37 — tags: dsh-vps, docker-compose, rotation, secrets, env_file_
|
|
|
|
### Erreurs communes
|
|
|
|
- **[coding-err-0003]** NyoraNotes MCP : dossier dérivé du premier tag, notes hors préfixe dsh/ illisibles (403)
|
|
Passerelle MCP nyora-notes-mcp (streamable-http 100.86.197.88:3098/mcp/, auth NYORA_NOTES_MCP_AUTH) : notes_create ignore le file_path fourni et dérive le dossier du PREMIER tag. Une note créée avec uniquement le tag test-mcp-natif atterrit sous test-mcp-natif/note-...md, hors de l'espace autorisé de l'agent DSH (préfixe dsh/) : notes_get renvoie 403 Forbidden et le filtre notes_list par tag ne la ressort pas. Pour qu'une note soit relisible par l'agent, le premier tag doit être dsh (ex: dsh/note-...md).
|
|
_cree par DSH le 2026-08-26 20:13:14 — tags: nyora-notes, mcp, dsh-vps, permissions, notes_
|
|
|