[Decision D7] Valider les dépendances Go directes restantes #8

Closed
opened 2026-08-30 20:42:56 +00:00 by hephaistos · 6 comments
Owner

MODE: DECISION

Statut

Proposé. Réponse puis go explicite avant clôture.

Question

Quelles dépendances directes sont justifiées au-delà du pilote SQLite ?

Proposition

github.com/pelletier/go-toml/v2

Pour un config.toml lisible et strict. Les clés inconnues sont des erreurs. Les commandes configurées sont des tableaux argv.

github.com/mattn/go-shellwords v1.0.14

Uniquement pour $VISUAL/$EDITOR avec arguments. Expansion d’environnement et backticks désactivés; le chemin du rapport est ajouté comme argument séparé; aucun sh -c.

Aucune dépendance pour

  • migrations : SQL ordonné via go:embed;
  • validation LLM : encoding/json, DisallowUnknownFields, bornes et validation sémantique;
  • client LLM : adaptateur HTTP OpenAI-compatible étroit;
  • logs : stderr concis + état structuré SQLite;
  • PTY : différé jusqu’à preuve.

Alternative zéro dépendance

JSON pour config et interprétation maison de $EDITOR. Moins de modules, mais UX pauvre ou réimplémentation fragile.

Alternative frameworks

CLI/config/migration/LLM frameworks. Plus commodes, mais surface et abstractions injustifiées.

Recommandation

Accepter les deux petites dépendances ciblées et refuser les frameworks. Toute nouvelle dépendance future exige un besoin et un ADR si structurante.

Réponse attendue

Accepte l’ensemble ou amende dépendance par dépendance. Clôture seulement après ton go.

Documentation

Protocole automatique de décision

  • Ce ticket reste en discussion et n’autorise aucune implémentation.
  • Les commentaires ordinaires poursuivent la discussion avec Hephaistos dans le ticket.
  • Quand la dernière proposition concrète te convient, publie un commentaire dont le contenu est exactement :
GO DECISION
  • Ce signal transfère automatiquement le ticket à Hephaistos pour consigner l’ADR, mettre à jour les documents de design, vérifier les changements et fermer le ticket.
  • GO DECISION n’autorise ni code de production ni plan d’implémentation; ce travail doit avoir son propre ticket MODE: EXECUTION.
MODE: DECISION ## Statut **Proposé.** Réponse puis **go explicite** avant clôture. ## Question Quelles dépendances directes sont justifiées au-delà du pilote SQLite ? ## Proposition ### `github.com/pelletier/go-toml/v2` Pour un `config.toml` lisible et strict. Les clés inconnues sont des erreurs. Les commandes configurées sont des tableaux argv. ### `github.com/mattn/go-shellwords v1.0.14` Uniquement pour `$VISUAL`/`$EDITOR` avec arguments. Expansion d’environnement et backticks désactivés; le chemin du rapport est ajouté comme argument séparé; aucun `sh -c`. ### Aucune dépendance pour - migrations : SQL ordonné via `go:embed`; - validation LLM : `encoding/json`, `DisallowUnknownFields`, bornes et validation sémantique; - client LLM : adaptateur HTTP OpenAI-compatible étroit; - logs : stderr concis + état structuré SQLite; - PTY : différé jusqu’à preuve. ## Alternative zéro dépendance JSON pour config et interprétation maison de `$EDITOR`. Moins de modules, mais UX pauvre ou réimplémentation fragile. ## Alternative frameworks CLI/config/migration/LLM frameworks. Plus commodes, mais surface et abstractions injustifiées. ## Recommandation Accepter les deux petites dépendances ciblées et refuser les frameworks. Toute nouvelle dépendance future exige un besoin et un ADR si structurante. ## Réponse attendue Accepte l’ensemble ou amende dépendance par dépendance. Clôture seulement après ton **go**. ## Documentation - https://git.2027a.net/2027a/auroscope/src/branch/design/technical-contracts/docs/architecture/design-proposals.md ## Protocole automatique de décision - Ce ticket reste en discussion et n’autorise aucune implémentation. - Les commentaires ordinaires poursuivent la discussion avec Hephaistos dans le ticket. - Quand la dernière proposition concrète te convient, publie un commentaire dont le contenu est exactement : ```text GO DECISION ``` - Ce signal transfère automatiquement le ticket à Hephaistos pour consigner l’ADR, mettre à jour les documents de design, vérifier les changements et fermer le ticket. - `GO DECISION` n’autorise ni code de production ni plan d’implémentation; ce travail doit avoir son propre ticket `MODE: EXECUTION`.
Owner

Ensemble accepté. Go

Ensemble accepté. Go
Author
Owner

Ticket classé comme décision humaine. La discussion continue ici, mais aucune implémentation ni ADR accepté ne sera produit tant que Mathieu n’aura pas publié exactement GO DECISION dans un commentaire distinct.

Ticket classé comme décision humaine. La discussion continue ici, mais aucune implémentation ni ADR accepté ne sera produit tant que Mathieu n’aura pas publié exactement `GO DECISION` dans un commentaire distinct. <!-- auroscope-loop:decision;cursor:1125 -->
Author
Owner

Bien reçu. Ma recommandation actuelle reste d’accepter l’ensemble tel que proposé :

  • github.com/pelletier/go-toml/v2 pour une configuration TOML lisible avec rejet strict des clés inconnues ;
  • github.com/mattn/go-shellwords v1.0.14 uniquement pour découper $VISUAL/$EDITOR, sans expansion d’environnement, sans backticks et sans sh -c ;
  • bibliothèque standard pour les migrations embarquées, la validation JSON, le client HTTP et les logs ; aucun framework ni PTY sans besoin démontré.

Face à l’option zéro dépendance, ces deux modules évitent soit une UX de configuration moins bonne, soit un parseur d’éditeur maison fragile. Face aux frameworks, ils gardent une surface étroite et auditable.

Ton commentaire confirme l’orientation, mais il ne déclenche pas l’acceptation déterministe : si tu veux consigner cette décision, publie GO DECISION exactement, seul dans un commentaire distinct.

Bien reçu. Ma recommandation actuelle reste d’accepter l’ensemble tel que proposé : - `github.com/pelletier/go-toml/v2` pour une configuration TOML lisible avec rejet strict des clés inconnues ; - `github.com/mattn/go-shellwords v1.0.14` uniquement pour découper `$VISUAL`/`$EDITOR`, sans expansion d’environnement, sans backticks et sans `sh -c` ; - bibliothèque standard pour les migrations embarquées, la validation JSON, le client HTTP et les logs ; aucun framework ni PTY sans besoin démontré. Face à l’option zéro dépendance, ces deux modules évitent soit une UX de configuration moins bonne, soit un parseur d’éditeur maison fragile. Face aux frameworks, ils gardent une surface étroite et auditable. Ton commentaire confirme l’orientation, mais il ne déclenche pas l’acceptation déterministe : si tu veux consigner cette décision, publie `GO DECISION` exactement, seul dans un commentaire distinct.
Owner

GO DECISION

GO DECISION
Author
Owner

Convention de finalisation concurrente : utilise le numéro du ticket comme numéro ADR sur quatre chiffres (#N → NNNN-*.md). Ne choisis pas « le prochain numéro libre » et ne renumérote aucun ADR; cette règle évite les collisions entre décisions validées en parallèle.

Convention de finalisation concurrente : utilise le numéro du ticket comme numéro ADR sur quatre chiffres (`#N` → `NNNN-*.md`). Ne choisis pas « le prochain numéro libre » et ne renumérote aucun ADR; cette règle évite les collisions entre décisions validées en parallèle.
Author
Owner

Décision D7 consignée et vérifiée.

La décision reste bornée au design : aucun code de production ni plan d’implémentation n’a été créé.

Décision D7 consignée et vérifiée. - ADR accepté : [`docs/decisions/0008-minimal-direct-go-dependencies.md`](https://git.2027a.net/2027a/auroscope/src/branch/design/technical-contracts/docs/decisions/0008-minimal-direct-go-dependencies.md) - Commit signé : [`64f2afb7dec187738644b48964c537a3b6bc1bed`](https://git.2027a.net/2027a/auroscope/commit/64f2afb7dec187738644b48964c537a3b6bc1bed) - PR de design mise à jour : [#1](https://git.2027a.net/2027a/auroscope/pulls/1) - Validation : suites amont `go test ./...` réussies pour `go-toml/v2 v2.4.3` et `go-shellwords v1.0.14`; liens Markdown relatifs résolus; `git diff --check` propre; PR déclarée fusionnable. La décision reste bornée au design : aucun code de production ni plan d’implémentation n’a été créé.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
2027a/auroscope#8
No description provided.