Files
context-hub/docs/context-memory/coding.md
T

7.6 KiB

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-06T17:51:55Z

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//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: StudentHouse

Decisions

  • [coding-dec-0005] Solution recommandée : Régime export services tunisien pour Nyora Après analyse des 3 pistes proposées par Claude, la Piste 1 (régime export de services tunisien) est recommandée : 0,5% d'imposition vs 50% en Belgique. Statut auto-entrepreneur (décret 2020-33), plafond 75 000 DT/an, compte professionnel devises (BIAT/BNA). Vérifier Payoneer "Receiving Accounts" pour IBAN virtuel. cree par DSH le 2026-09-06 17:51:54 — tags: solution, tunisie, auto-entrepreneur, export-services, fiscalite

  • [coding-dec-0004] Problématique paiements fiscaux Belgique pour Nyora Zouheir a confirmé que la Belgique a un contrôle fiscal strict avec des taux pouvant atteindre 50% sur les revenus reçus. Les comptes disponibles (Neteller, Payoneer) ne permettent que des paiements sortants, pas entrants. Il faut trouver une solution pour recevoir des paiements internationaux. cree par DSH le 2026-09-06 17:35:32 — tags: pays, taxes, belgique, paiements, neteller, payoneer

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