# Essai CSV / CSV trial v1 — 11 octobre 2026

Essai technique interne réalisé par un agent Codex dans le worktree isolé du
ticket Singularity F-3957. Ce n’est pas un benchmark entre agents.

## Rejouer le code final / Reproduce the final code

Télécharger `server.mjs` et `server.test.mjs` dans le même dossier depuis
https://singularity.meteorfactory.dev/examples/csv-trial/ (utiliser les liens
individuels dans l’article, pas un listing de dossier).
Node utilisé : 26.11.1. Aucune dépendance npm, clé API ou connexion requise.

```sh
node --test server.test.mjs
node server.mjs
```

Ouvrir http://127.0.0.1:4317 et activer « Exporter les factures CSV ».
Le fichier `invoices.csv` contient quatre factures fictives avec virgule,
guillemets, accent, saut de ligne et préfixe de formule. Les lignes CSV utilisent
CRLF ; les cellules sont entre guillemets ; une apostrophe neutralise les
préfixes de formules (=, +, -, @, tabulation, CR, LF), en modifiant la valeur.
Ce choix ne constitue pas une validation dans tous les tableurs.

Dans le dépôt Impacts, le contrôle navigateur est reproductible avec :

```sh
pnpm install --frozen-lockfile
pnpm --filter singularity-site exec playwright test e2e/comparison-trial.spec.ts
```

Le premier test démarre le même serveur sur un port libre, clique le lien,
attend un téléchargement, vérifie le nom et compare tous les octets attendus.
Les deux autres vérifient l’article à 1280 et 390 px, ses fichiers téléchargeables,
son image documentaire et sa présence dans le HTML initial et le miroir Markdown.
Les captures de preuve sont produites dans le dossier temporaire du système.

## Résultats et provenance / Results and provenance

Lire `results.json` pour les versions, les résultats et les SHA-256 des sources.
5 tests Node et 3 tests Playwright passent (1 téléchargement et 2 rendus de l’article).
L’article bilingue est `/blog/singularity-vs-antigravity` et son miroir
`/blog/singularity-vs-antigravity.md`.

## Limites / Limits

API + lien de téléchargement uniquement. Pas d’authentification, de base de
données, de charge, de vraie facture ni d’audit de sécurité. Ne pas exposer ce
serveur de démonstration en production. Une seule exécution technique ne mesure
ni temps de génération, ni coût fournisseur, ni qualité comparative d’un agent.
Les tests rejouent le code final, pas les décisions d’un modèle.

Le ticket est orchestré par Singularity, mais le protocole complet à deux tickets
dépendants, approbation manuelle et fusion partielle n’est pas exécuté ici.
La capture `/docs/revue/revue-diff-note.png` est une illustration documentaire
existante (guide daté du 24 août 2026, version 2.17), pas une capture de cet essai.
Antigravity n’a pas été exécuté ; ses pages frontend et artifacts sont des sources
documentaires uniquement. Aucun classement ou citation IA n’est mesuré.

English: save both .mjs files together, run the commands above and click the
export link. The JSON record identifies the tested versions and source hashes.
This is a limited final-code trial with synthetic data, not a benchmark or proof
of the full two-ticket/manual-review workflow. Antigravity was not run.
