Sommaire de la documentation

// Documentation Singularity

Worktrees & hooks Git

Les worktrees sont la barrière de sécurité entre le travail d’un agent IA et vos fichiers en cours. Singularity donne à chaque exécution un dossier et une branche isolés, puis réapplique ses commits sur votre branche de base avec un rebase.

Un second dossier pour le même dépôt

Un worktree Git est un second dossier de travail rattaché au même dépôt. Il possède sa propre branche et ses propres fichiers extraits, tout en partageant l’historique Git avec le dossier principal. Vous pouvez donc garder une modification inachevée ouverte dans votre arbre habituel pendant qu’un autre travail avance ailleurs.

Ce n’est ni une copie complète du dépôt, ni une branche abstraite sans fichiers : les outils, tests et éditeurs peuvent l’ouvrir normalement.

Pourquoi Singularity en crée

Avec le réglage actif, chaque exécution d’agent reçoit son propre worktree sous .singularity-worktrees/<uuid>/ et une branche dédiée. L’agent lit, modifie, teste et commite dans ce dossier : il ne touche jamais les fichiers non commités de votre arbre de travail courant.

C’est la garantie centrale de Singularity pour le travail assisté par IA. Plusieurs agents peuvent avancer en parallèle sans que leurs fichiers se recouvrent.

Navigateur Singularity montrant le worktree isolé d’une exécution d’agent
Le navigateur ouvre les fichiers et la branche propres au worktree de l’agent.

Le cycle de vie d’une exécution

  1. Singularity crée le worktree depuis la branche de base du ticket.
  2. L’agent travaille sur la branche dédiée, vérifie son travail et y crée ses commits.
  3. À la fin, Singularity réapplique ces commits sur la dernière version de la branche de base.
  4. Selon les réglages du board, le résultat est intégré automatiquement ou présenté dans l’onglet Revue.

L’intégration utilise un rebase, pas un merge. Les commits sont rejoués au sommet de la base pour conserver un historique linéaire, sans commit de fusion. Si la base a avancé et qu’un conflit apparaît, l’exécution reste disponible pour le résoudre.

Le réglage « Utiliser les worktrees Git »

Ouvrez Réglages → Git → Worktrees pour piloter l’isolation. Gardez Utiliser les worktrees Git activé pour le fonctionnement sûr décrit ici. La fusion automatique est distincte : désactivez-la si les exécutions terminées doivent attendre votre approbation dans l’onglet Revue.

Quand l’isolation est désactivée, l’agent écrit directement dans votre arbre de travail. Il n’existe ni dossier ni branche séparés : Singularity n’a donc rien à présenter comme travail isolé dans Revue.

Supprimer et nettoyer les worktrees

Dans le navigateur, ouvrez la section des worktrees du projet puis le menu concerné. Supprimer le worktree efface son dossier, mais conserve sa branche et ses commits : son historique reste récupérable.

Nettoyer les worktrees supprime aussi leurs références de branche. Cette opération est irréversible. Vérifiez que tout travail utile a été intégré ou conservé ailleurs avant de confirmer.

Consulter les hooks Git

Depuis le cockpit Git d’un projet, ouvrez l’onglet Hooks pour consulter les hooks détectés dans le dépôt. Ils exécutent les contrôles définis par le projet aux moments prévus par Git.

Si un hook pre-commit échoue, le commit n’a pas eu lieu. Corrigez la cause signalée — formatage, lint ou test, par exemple — puis relancez le commit. Les fichiers peuvent rester modifiés ou indexés : vérifiez leur état dans le cockpit Git.

Onglet Hooks du cockpit Git listant les hooks d’un projet
L’onglet Hooks rend visibles les contrôles Git installés par le projet.

Questions fréquentes

Un agent peut-il modifier mon arbre de travail courant ?

Pas lorsque « Utiliser les worktrees Git » est activé : il travaille dans son propre dossier et sur sa propre branche. Si l’option est désactivée, l’exécution écrit directement dans votre arbre de travail.

Supprimer un worktree efface-t-il le travail de l’agent ?

La suppression unitaire retire seulement son dossier : la branche et ses commits restent disponibles. Le nettoyage global supprime aussi les références de branche et ne peut pas être annulé.