Une entrée user arrivée après la fin d'un tour de l'agent ouvre désormais une nouvelle plage, même écrite par Claude Code (isMeta). La fin de tour se lit sur la dernière réponse du fil principal : stop_reason autre que tool_use. Les entrées de sous-agent (isSidechain) ne comptent ni pour la fin de tour ni pour l'ouverture.
Changements
outils/temps-session.py : evenements() suit la fin de tour (rendu_la_main()) ; version 1.0.1.
VERSION (nouveau) : 1.0.1, vérifié égal à la constante VERSION de l'outil, qui se télécharge seul et ne peut pas lire ce fichier.
tests/test-temps-session.py : cas 13 à 17.
CHANGELOG.md, README.md.
Preuve
Tests écrits d'abord, vus en échec sur develop :
3 échec(s) :
✗ VERSION dit None, l'outil '1.0.0'
✗ message d'une autre session après l'attente : [1620] au lieu de 420 s
✗ avis d'une autre session après l'attente : [1620] au lieu de 420 s
Les cas 16 (entrée isMeta pendant un tour) et 17 (fin de tour d'un sous-agent) passaient déjà : ce sont les gardes de non-régression. Après le correctif : ok : outil de saisie des temps (cas 1 à 12 inchangés).
14 perdent du temps, et chaque seconde retirée est une attente qui suit une fin de tour, avant un message d'une autre session (~22 100 s), un /rename (~1 500 s) ou une commande slash (~800 s) ;
l'attente de 1 290 s mesurée dans le ticket en fait partie.
Après fusion
Tag v1.0.1 à poser par Baudouin (tags v* protégés).
Critère 1 à prouver sur un vrai transcript depuis l'outil publié, une fois le tag posé.
Refs #2
Une entrée `user` arrivée **après la fin d'un tour** de l'agent ouvre désormais une nouvelle plage, même écrite par Claude Code (`isMeta`). La fin de tour se lit sur la dernière réponse du fil principal : `stop_reason` autre que `tool_use`. Les entrées de sous-agent (`isSidechain`) ne comptent ni pour la fin de tour ni pour l'ouverture.
## Changements
- `outils/temps-session.py` : `evenements()` suit la fin de tour (`rendu_la_main()`) ; version 1.0.1.
- `VERSION` (nouveau) : `1.0.1`, vérifié égal à la constante `VERSION` de l'outil, qui se télécharge seul et ne peut pas lire ce fichier.
- `tests/test-temps-session.py` : cas 13 à 17.
- `CHANGELOG.md`, `README.md`.
## Preuve
Tests écrits d'abord, **vus en échec** sur `develop` :
```
3 échec(s) :
✗ VERSION dit None, l'outil '1.0.0'
✗ message d'une autre session après l'attente : [1620] au lieu de 420 s
✗ avis d'une autre session après l'attente : [1620] au lieu de 420 s
```
Les cas 16 (entrée `isMeta` pendant un tour) et 17 (fin de tour d'un sous-agent) passaient déjà : ce sont les gardes de non-régression. Après le correctif : `ok : outil de saisie des temps` (cas 1 à 12 inchangés).
Comparaison 1.0.0 / 1.0.1 sur 36 transcripts réels (`plages()`, `--pause` 1800) :
- 22 sont identiques ;
- 14 perdent du temps, et chaque seconde retirée est une attente qui suit une fin de tour, avant un message d'une autre session (~22 100 s), un `/rename` (~1 500 s) ou une commande slash (~800 s) ;
- l'attente de 1 290 s mesurée dans le ticket en fait partie.
## Après fusion
- Tag `v1.0.1` à poser par Baudouin (tags `v*` protégés).
- Critère 1 à prouver sur un vrai transcript depuis l'outil publié, une fois le tag posé.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01KT2yBsd7nPivLnrEtcvuhX
Une entrée user arrivée après la fin d'un tour de l'agent (dernière
réponse du fil principal avec stop_reason autre que tool_use) ouvre une
nouvelle plage, même écrite par Claude Code (isMeta) : message ou avis
d'une autre session, commande slash, renommage. Une entrée isMeta écrite
pendant un tour, ou après la fin d'un tour de sous-agent, ne coupe rien.
Ajoute le fichier VERSION (1.0.1), vérifié égal à la constante de l'outil.
Refs #2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KT2yBsd7nPivLnrEtcvuhX
Correction : je décoche le critère 2, je l'avais coché à tort.
Les tests existants restent verts.
Mais sur 36 transcripts réels, trois transcripts sans aucun message entre sessions changent aussi : l'attente qui précède un /rename (243 s) ou une commande slash tapée après une fin de tour (583 s et 210 s) n'est plus comptée.
C'est une attente de l'humain, donc la consigne (« l'attente n'est jamais comptée ») est mieux respectée, mais le résultat n'est pas « identique à la 1.0.0 ».
À trancher par Baudouin :
(a) accepter cet élargissement et reformuler le critère 2 en « identique pour un transcript dont chaque tour s'ouvre sur un message de l'humain » ;
(b) limiter le correctif aux entrées qui portent <cross-session-message ou [Cross-session, ce qui revient à la première solution, écartée.
Correction : je **décoche le critère 2**, je l'avais coché à tort.
- Les tests existants restent verts.
- Mais sur 36 transcripts réels, trois transcripts **sans aucun** message entre sessions changent aussi : l'attente qui précède un `/rename` (243 s) ou une commande slash tapée après une fin de tour (583 s et 210 s) n'est plus comptée.
- C'est une attente de l'humain, donc la consigne (« l'attente n'est jamais comptée ») est mieux respectée, mais le résultat n'est pas « identique à la 1.0.0 ».
À trancher par Baudouin :
- (a) accepter cet élargissement et reformuler le critère 2 en « identique pour un transcript dont chaque tour s'ouvre sur un message de l'humain » ;
- (b) limiter le correctif aux entrées qui portent `<cross-session-message` ou `[Cross-session`, ce qui revient à la première solution, écartée.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Refs #2
Une entrée
userarrivée après la fin d'un tour de l'agent ouvre désormais une nouvelle plage, même écrite par Claude Code (isMeta). La fin de tour se lit sur la dernière réponse du fil principal :stop_reasonautre quetool_use. Les entrées de sous-agent (isSidechain) ne comptent ni pour la fin de tour ni pour l'ouverture.Changements
outils/temps-session.py:evenements()suit la fin de tour (rendu_la_main()) ; version 1.0.1.VERSION(nouveau) :1.0.1, vérifié égal à la constanteVERSIONde l'outil, qui se télécharge seul et ne peut pas lire ce fichier.tests/test-temps-session.py: cas 13 à 17.CHANGELOG.md,README.md.Preuve
Tests écrits d'abord, vus en échec sur
develop:Les cas 16 (entrée
isMetapendant un tour) et 17 (fin de tour d'un sous-agent) passaient déjà : ce sont les gardes de non-régression. Après le correctif :ok : outil de saisie des temps(cas 1 à 12 inchangés).Comparaison 1.0.0 / 1.0.1 sur 36 transcripts réels (
plages(),--pause1800) :/rename(~1 500 s) ou une commande slash (~800 s) ;Après fusion
v1.0.1à poser par Baudouin (tagsv*protégés).🤖 Generated with Claude Code
https://claude.ai/code/session_01KT2yBsd7nPivLnrEtcvuhX
Correction : je décoche le critère 2, je l'avais coché à tort.
/rename(243 s) ou une commande slash tapée après une fin de tour (583 s et 210 s) n'est plus comptée.À trancher par Baudouin :
<cross-session-messageou[Cross-session, ce qui revient à la première solution, écartée.