[Decision D6] Choisir le pilote SQLite Go : CGO ou pur Go #7

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

MODE: DECISION

Statut

Proposé. Ticket ouvert jusqu’au go explicite suivant ta décision.

Question

Quel pilote SQLite convient au v1 Arch linux/amd64 ?

Spike mesuré

Programme minimal identique : création DB, foreign_keys=ON, WAL, contrainte FK vérifiée.

Pilote Binaire stripped Modules totaux Build
mattn/go-sqlite3 v1.14.50 3 608 224 octets 2 CGO requis
modernc.org/sqlite v1.57.0 6 299 940 octets 26 pur Go; Go >=1.25

Le build mattn avec CGO_ENABLED=0 compile un stub mais panique à l’exécution. Le build modernc pur Go fonctionne et cross-compile.

Options

A — mattn/go-sqlite3

Pour : dépendance petite/mature, binaire mesuré plus petit, SQLite embarqué.
Contre : CGO/toolchain C; cross-compilation plus compliquée.

B — modernc.org/sqlite

Pour : pur Go, cross-build simple.
Contre : binaire et graphe de dépendances plus gros; exigence Go plus récente.

C — SQLite CLI externe

Pour : aucune dépendance Go.
Contre : transactions/processus/erreurs plus fragiles; réimplémentation absurde de l’accès DB.

Recommandation

Option A pour le v1 ciblé Arch linux/amd64. Reconsidérer B seulement quand des cibles multiples deviennent un besoin réel.

Conditions

Épingler version/options; tester FK, WAL, busy timeout, migrations, corruption, backup/restore et concurrence.

Réponse attendue

A/B/C ou variante. ADR/clôture uniquement 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é.** Ticket ouvert jusqu’au **go explicite** suivant ta décision. ## Question Quel pilote SQLite convient au v1 Arch `linux/amd64` ? ## Spike mesuré Programme minimal identique : création DB, `foreign_keys=ON`, WAL, contrainte FK vérifiée. | Pilote | Binaire stripped | Modules totaux | Build | |---|---:|---:|---| | `mattn/go-sqlite3 v1.14.50` | 3 608 224 octets | 2 | CGO requis | | `modernc.org/sqlite v1.57.0` | 6 299 940 octets | 26 | pur Go; Go >=1.25 | Le build `mattn` avec `CGO_ENABLED=0` compile un stub mais panique à l’exécution. Le build modernc pur Go fonctionne et cross-compile. ## Options ### A — mattn/go-sqlite3 **Pour :** dépendance petite/mature, binaire mesuré plus petit, SQLite embarqué. **Contre :** CGO/toolchain C; cross-compilation plus compliquée. ### B — modernc.org/sqlite **Pour :** pur Go, cross-build simple. **Contre :** binaire et graphe de dépendances plus gros; exigence Go plus récente. ### C — SQLite CLI externe **Pour :** aucune dépendance Go. **Contre :** transactions/processus/erreurs plus fragiles; réimplémentation absurde de l’accès DB. ## Recommandation **Option A** pour le v1 ciblé Arch `linux/amd64`. Reconsidérer B seulement quand des cibles multiples deviennent un besoin réel. ## Conditions Épingler version/options; tester FK, WAL, busy timeout, migrations, corruption, backup/restore et concurrence. ## Réponse attendue A/B/C ou variante. ADR/clôture uniquement 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

A, go

A, 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:1124 -->
Author
Owner

Nous sommes alignés sur A.

Recommandation actuelle : mattn/go-sqlite3 v1.14.50 pour le v1 ciblé Arch linux/amd64, avec CGO assumé. Le compromis est net : pilote mature, binaire mesuré plus petit et graphe de dépendances minimal, au prix d’une toolchain C et d’une cross-compilation plus compliquée. modernc.org/sqlite reste le repli si des builds multi-cibles deviennent un besoin réel; le CLI SQLite externe reste écarté à cause de sa fragilité transactionnelle et opérationnelle.

A, go confirme l’option souhaitée dans la discussion, mais le protocole déterministe ne traite pas cette prose ordinaire comme une acceptation finale. Pour déclencher la lane ADR, publie un commentaire distinct contenant exactement GO DECISION.

Nous sommes alignés sur **A**. **Recommandation actuelle :** `mattn/go-sqlite3 v1.14.50` pour le v1 ciblé Arch `linux/amd64`, avec CGO assumé. Le compromis est net : pilote mature, binaire mesuré plus petit et graphe de dépendances minimal, au prix d’une toolchain C et d’une cross-compilation plus compliquée. `modernc.org/sqlite` reste le repli si des builds multi-cibles deviennent un besoin réel; le CLI SQLite externe reste écarté à cause de sa fragilité transactionnelle et opérationnelle. `A, go` confirme l’option souhaitée dans la discussion, mais le protocole déterministe ne traite pas cette prose ordinaire comme une acceptation finale. Pour déclencher la lane ADR, publie un commentaire distinct contenant exactement `GO DECISION`.
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 D6 consignée et vérifiée.

Validation : liens Markdown relatifs résolus, git diff --check propre, aucun plan d’implémentation ni code de production ajouté.

Décision D6 consignée et vérifiée. - ADR : [ADR-0007 — Use mattn/go-sqlite3 with CGO for v1](https://git.2027a.net/2027a/auroscope/src/branch/design/technical-contracts/docs/decisions/0007-mattn-go-sqlite3-cgo.md) - Commit signé : [`11999315072adf69427753a9fde761ee0dbd62e4`](https://git.2027a.net/2027a/auroscope/commit/11999315072adf69427753a9fde761ee0dbd62e4) - PR de design mise à jour : [#1](https://git.2027a.net/2027a/auroscope/pulls/1) Validation : liens Markdown relatifs résolus, `git diff --check` propre, aucun plan d’implémentation ni code de production ajouté.
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#7
No description provided.