devflow-cli 10.1.0__py3-none-any.whl → 10.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- devflow_cli/__init__.py +1 -1
- devflow_cli/cli.py +2 -2
- devflow_cli/resources/commands/devflow.md +13 -1
- devflow_cli-10.1.2.dist-info/METADATA +167 -0
- {devflow_cli-10.1.0.dist-info → devflow_cli-10.1.2.dist-info}/RECORD +8 -8
- devflow_cli-10.1.0.dist-info/METADATA +0 -212
- {devflow_cli-10.1.0.dist-info → devflow_cli-10.1.2.dist-info}/WHEEL +0 -0
- {devflow_cli-10.1.0.dist-info → devflow_cli-10.1.2.dist-info}/entry_points.txt +0 -0
- {devflow_cli-10.1.0.dist-info → devflow_cli-10.1.2.dist-info}/licenses/LICENSE +0 -0
devflow_cli/__init__.py
CHANGED
devflow_cli/cli.py
CHANGED
|
@@ -32,7 +32,7 @@ class DevflowGroup(TyperGroup):
|
|
|
32
32
|
|
|
33
33
|
app = typer.Typer(
|
|
34
34
|
name="devflow",
|
|
35
|
-
help="
|
|
35
|
+
help="Workflow adaptatif pour Claude Code : profils, preuves et contrats d'activité",
|
|
36
36
|
no_args_is_help=True,
|
|
37
37
|
cls=DevflowGroup,
|
|
38
38
|
)
|
|
@@ -49,7 +49,7 @@ def main(
|
|
|
49
49
|
version: bool = typer.Option(False, "--version", callback=version_callback, is_eager=True, help="Affiche la version"),
|
|
50
50
|
verbose: bool = typer.Option(False, "--verbose", "-v", help="Active les logs dans stderr"),
|
|
51
51
|
) -> None:
|
|
52
|
-
"""devflow —
|
|
52
|
+
"""devflow — Workflow adaptatif pour Claude Code : profils, preuves et contrats d'activité."""
|
|
53
53
|
setup_logging(verbose=verbose)
|
|
54
54
|
|
|
55
55
|
|
|
@@ -9,6 +9,9 @@ allowed-tools: Bash(devflow:*)
|
|
|
9
9
|
Utiliser exclusivement la machine adaptative de la CLI. Ne jamais créer ni
|
|
10
10
|
interpréter de `state.json`.
|
|
11
11
|
|
|
12
|
+
Avant toute chose, exécuter `devflow check`. En échec, ne pas utiliser
|
|
13
|
+
Devflow : le dire, avec la cause, et traiter la demande hors Devflow.
|
|
14
|
+
|
|
12
15
|
1. Lire `$ARGUMENTS` et extraire l'identifiant de feature et la cible `--until`
|
|
13
16
|
(`done` par défaut).
|
|
14
17
|
2. Exécuter `devflow status ISSUE_ID`.
|
|
@@ -17,7 +20,13 @@ interpréter de `state.json`.
|
|
|
17
20
|
l'issue) et annoncer la branche et le dossier créés.
|
|
18
21
|
4. Si la feature n'est pas encore évaluée et que `need.md` n'existe pas dans
|
|
19
22
|
son dossier, le rédiger à partir de l'issue et de la demande. En cas de
|
|
20
|
-
doute sur le besoin, poser la question avant de l'écrire.
|
|
23
|
+
doute sur le besoin, poser la question avant de l'écrire. Le besoin dit :
|
|
24
|
+
1. les constats observés, avec leur origine ;
|
|
25
|
+
2. les décisions prises, non rediscutables pendant le parcours ;
|
|
26
|
+
3. l'attendu et les tests ;
|
|
27
|
+
4. la livraison (version, fichiers de version) ;
|
|
28
|
+
5. le hors périmètre ;
|
|
29
|
+
6. les contraintes d'exécution.
|
|
21
30
|
5. Si elle n'est pas évaluée, demander les signaux nécessaires puis lancer
|
|
22
31
|
`devflow assess ISSUE_ID` avec des options explicites.
|
|
23
32
|
6. Si elle est évaluée mais non démarrée, lancer
|
|
@@ -59,3 +68,6 @@ devflow feedback add --type bilan --issue <ISSUE> --what "…" \
|
|
|
59
68
|
|
|
60
69
|
Le contrat produit par Devflow est la seule autorité sur les actions,
|
|
61
70
|
artefacts, validations et preuves de l'activité.
|
|
71
|
+
|
|
72
|
+
Si le projet a une constitution (`.specify/memory/constitution.md`), la lire
|
|
73
|
+
avant d'implémenter : elle prime sur spec, plan et tâches.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: devflow-cli
|
|
3
|
+
Version: 10.1.2
|
|
4
|
+
Summary: Workflow adaptatif pour Claude Code : profils, preuves et contrats d'activité
|
|
5
|
+
Project-URL: Homepage, https://github.com/sopequenoteck/devflow
|
|
6
|
+
Project-URL: Repository, https://github.com/sopequenoteck/devflow
|
|
7
|
+
Author-email: sopequenoteck <sopequeno.tech@gmail.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: adaptive,claude-code,cli,workflow
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Requires-Dist: jsonschema>=4.23
|
|
20
|
+
Requires-Dist: pyyaml>=6
|
|
21
|
+
Requires-Dist: rich>=13
|
|
22
|
+
Requires-Dist: typer>=0.12
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: hatchling>=1.27; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest-cov>=5; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# devflow
|
|
30
|
+
|
|
31
|
+
Devflow est un workflow adaptatif pour Claude Code. Il s'adresse au développeur
|
|
32
|
+
qui fait travailler Claude Code sur ses projets et veut une rigueur
|
|
33
|
+
proportionnée au risque : la CLI choisit un profil à partir de signaux
|
|
34
|
+
explicites, confie chaque activité à un agent sous un contrat écrit et ne
|
|
35
|
+
franchit une étape que sur des preuves qu'elle produit elle-même.
|
|
36
|
+
|
|
37
|
+
Un parcours produit une branche Git et un dossier de feature, un besoin écrit
|
|
38
|
+
(`need.md`), les résultats de chaque activité, des preuves exécutées
|
|
39
|
+
localement (tests, inspection du diff, revue) et un journal des retours
|
|
40
|
+
d'usage (frictions et bilan).
|
|
41
|
+
|
|
42
|
+
## Installer
|
|
43
|
+
|
|
44
|
+
Prérequis : Python 3.11+, Git et la CLI `claude` (Claude Code).
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
uv tool install --refresh devflow-cli==X.Y.Z # version publiée sur PyPI
|
|
48
|
+
devflow init
|
|
49
|
+
devflow check
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`devflow init` installe les commandes `/devflow` et `/devflow.status` dans
|
|
53
|
+
`~/.claude` ; `devflow check` vérifie les prérequis. Installer toujours depuis
|
|
54
|
+
PyPI, à une version précise.
|
|
55
|
+
|
|
56
|
+
Après chaque mise à jour de la CLI, lancer `devflow upgrade` : il met à jour
|
|
57
|
+
les commandes `/devflow` installées dans `~/.claude`, que l'installation de la
|
|
58
|
+
CLI ne touche pas. Tant qu'elles diffèrent de la CLI, `devflow status` affiche
|
|
59
|
+
un avertissement avec cette commande ; rien n'est modifié sans vous.
|
|
60
|
+
`--refresh` évite qu'`uv` ignore une version tout juste publiée. Juste après
|
|
61
|
+
une publication, l'installation peut échouer pendant une à quatre minutes, le
|
|
62
|
+
temps que l'index se propage : réessayer.
|
|
63
|
+
|
|
64
|
+
`devflow init` et `devflow upgrade` déplacent les anciennes commandes Claude
|
|
65
|
+
connues vers `~/.claude/.devflow-legacy-backup/` sans toucher aux commandes
|
|
66
|
+
personnalisées.
|
|
67
|
+
|
|
68
|
+
Une version majeure refuse, sans migration, les parcours démarrés avec une
|
|
69
|
+
version majeure antérieure : terminez-les avant la mise à jour, voir les notes
|
|
70
|
+
de version du dépôt.
|
|
71
|
+
|
|
72
|
+
## Premier parcours
|
|
73
|
+
|
|
74
|
+
Une feature avec un identifiant d'issue passe par Devflow ; un correctif
|
|
75
|
+
ponctuel ou une tâche hors feature, non.
|
|
76
|
+
|
|
77
|
+
Avec Claude Code :
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
/devflow KS-123
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
La commande crée la feature, rédige `need.md`, demande les signaux de
|
|
84
|
+
l'évaluation puis enchaîne les activités jusqu'à `done`.
|
|
85
|
+
|
|
86
|
+
À la main :
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
devflow feature KS-123 --short-name user-auth
|
|
90
|
+
# Décrire le besoin dans need.md, dans le dossier de la feature créé
|
|
91
|
+
devflow assess KS-123 --scope multiple --ambiguity medium --risk medium
|
|
92
|
+
devflow adaptive start KS-123
|
|
93
|
+
devflow adaptive run KS-123
|
|
94
|
+
devflow adaptive status KS-123
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Chaque invocation de `adaptive run` traite une activité. `adaptive status`
|
|
98
|
+
affiche la progression, les preuves et la prochaine commande ; `--json` en
|
|
99
|
+
donne une forme exploitable par la CI.
|
|
100
|
+
|
|
101
|
+
## Décrire le besoin
|
|
102
|
+
|
|
103
|
+
`need.md` est l'entrée de tout parcours et fait foi pour chaque activité. Le
|
|
104
|
+
besoin dit :
|
|
105
|
+
|
|
106
|
+
1. les constats observés, avec leur origine ;
|
|
107
|
+
2. les décisions prises, non rediscutables pendant le parcours ;
|
|
108
|
+
3. l'attendu et les tests ;
|
|
109
|
+
4. la livraison (version, fichiers de version) ;
|
|
110
|
+
5. le hors périmètre ;
|
|
111
|
+
6. les contraintes d'exécution.
|
|
112
|
+
|
|
113
|
+
## Lire un refus
|
|
114
|
+
|
|
115
|
+
Chaque refus affiche son motif et la commande de reprise recommandée.
|
|
116
|
+
|
|
117
|
+
- Refus justifié (le travail de l'agent ne satisfait pas l'étape) : corriger
|
|
118
|
+
le travail, puis reprendre par la commande proposée.
|
|
119
|
+
- Échec de Devflow (refus à tort, message trompeur, reprise inadaptée,
|
|
120
|
+
prérequis non documenté) : le consigner aussitôt avec
|
|
121
|
+
`devflow feedback add --type friction`.
|
|
122
|
+
- En fin de parcours, terminé ou abandonné : un bilan avec
|
|
123
|
+
`devflow feedback add --type bilan`.
|
|
124
|
+
|
|
125
|
+
## Profils et garde-fous
|
|
126
|
+
|
|
127
|
+
Le profil fixe la route documentaire :
|
|
128
|
+
|
|
129
|
+
- `quick` : changement local, clair et peu risqué, sans revue.
|
|
130
|
+
- `standard` : plusieurs composants ou risque modéré ; préparation puis revue
|
|
131
|
+
systématique.
|
|
132
|
+
- `deep` : changement transversal, ambigu ou contractuel ; `spec`, `plan`,
|
|
133
|
+
`tasks`, plus `contracts` quand `--contract-change` est déclaré.
|
|
134
|
+
|
|
135
|
+
Un bloc de garde-fous s'y ajoute quand `--data-security` est déclaré ou que
|
|
136
|
+
`--risk high` : évaluation du risque, contrôle bloquant de sécurité ou de
|
|
137
|
+
données à `verify`, revue indépendante, puis vérification du retour arrière
|
|
138
|
+
avant `done`. Un bloc actif impose au minimum le profil `standard`, ne se
|
|
139
|
+
désactive par aucune option et interdit les dérogations.
|
|
140
|
+
|
|
141
|
+
La référence complète (routes, preuves, commandes, contrats d'activité) est
|
|
142
|
+
livrée dans le dépôt, sous `docs/`.
|
|
143
|
+
|
|
144
|
+
## Synchronisation Linear
|
|
145
|
+
|
|
146
|
+
Si `LINEAR_API_KEY` contient une clé d'API personnelle Linear, la CLI met à jour
|
|
147
|
+
le statut de l'issue du parcours au démarrage de chaque activité (`adaptive
|
|
148
|
+
run`, y compris avec `--until`, et clôture `done`). L'équipe Linear doit avoir
|
|
149
|
+
les statuts `Backlog`, `Design`, `In Progress`, `Review` et `Done`. Un statut
|
|
150
|
+
n'est jamais ramené en arrière ; un statut hors de cette liste (`Canceled`,
|
|
151
|
+
`Duplicate`) n'est jamais modifié.
|
|
152
|
+
|
|
153
|
+
Sans clé, ou si Linear échoue (issue inconnue, statut absent, erreur réseau ou
|
|
154
|
+
délai de 5 s dépassé), la CLI affiche un avertissement et le parcours continue
|
|
155
|
+
à l'identique. La clé est retirée de l'environnement de tout processus lancé
|
|
156
|
+
par Devflow (agents, commandes de validation, commandes git) ; elle reste
|
|
157
|
+
lisible par un agent si elle est définie dans un fichier que son shell charge
|
|
158
|
+
(`~/.zshrc`).
|
|
159
|
+
|
|
160
|
+
## Développement
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
uv sync --extra dev
|
|
164
|
+
uv run pytest -q
|
|
165
|
+
./tests/run-tests.sh
|
|
166
|
+
uv run devflow docs-sync --check
|
|
167
|
+
```
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
devflow_cli/__init__.py,sha256=
|
|
2
|
-
devflow_cli/cli.py,sha256=
|
|
1
|
+
devflow_cli/__init__.py,sha256=XP1V0Roti7wlj8qML7lacmEd6PYP7XnstJ85pKbfy3s,871
|
|
2
|
+
devflow_cli/cli.py,sha256=fBtOlwqSrCuYEAGEmg1LamjIcaIgxflysV5PulXb_cg,2067
|
|
3
3
|
devflow_cli/adapters/__init__.py,sha256=z1J7_YJHcgak2a6dTZpOUKKwf-K7UwRqGzS8XY9duC0,299
|
|
4
4
|
devflow_cli/adapters/agents.py,sha256=-9zmNlFmQfP2pOGxA3_SSKij8ScR76J4-sgv4GMBWEI,18530
|
|
5
5
|
devflow_cli/adapters/linear.py,sha256=xHKjMuL3fFJEDBF65pPJ-yWHpXom999UAU2A0C7_QeI,8362
|
|
@@ -53,11 +53,11 @@ devflow_cli/utils/console.py,sha256=t7cpyeEluWj4v_O_KFSI59iqXK4GiSXPuxlsr8q5zoQ,
|
|
|
53
53
|
devflow_cli/utils/logging.py,sha256=I7U9_IVvYAFnUAWi7xs5F_WGR0uSz6DmRvZ_B3xLFbs,1769
|
|
54
54
|
devflow_cli/utils/paths.py,sha256=CH81dZZTI2vjgl8mck6QcAChxoBpujmKZ0vVKhKmXEY,8176
|
|
55
55
|
devflow_cli/utils/strings.py,sha256=bfFXCwBDnFxshgZOYfy6mtysnjiaWO1wFnqBf7HLg4o,351
|
|
56
|
-
devflow_cli/resources/commands/devflow.md,sha256=
|
|
56
|
+
devflow_cli/resources/commands/devflow.md,sha256=5MjahTVYXAT_zrjEQmM25KH9s6DbRmyI1TdJCxYlrKk,3464
|
|
57
57
|
devflow_cli/resources/commands/devflow.status.md,sha256=tqjQ1IboU99ztG6C4nunBHGJCvMn3qDqx3AoF4SPjCk,338
|
|
58
58
|
devflow_cli/resources/templates/constitution-template.md,sha256=uSzNuwF-xIRx8cHt9gloynRjNgDGmnN5z2Xck6fCOsI,2102
|
|
59
|
-
devflow_cli-10.1.
|
|
60
|
-
devflow_cli-10.1.
|
|
61
|
-
devflow_cli-10.1.
|
|
62
|
-
devflow_cli-10.1.
|
|
63
|
-
devflow_cli-10.1.
|
|
59
|
+
devflow_cli-10.1.2.dist-info/METADATA,sha256=dw_au3NQsRDd1USzaA7nY_lWRFZJ6-XYRauRgpreVYw,6501
|
|
60
|
+
devflow_cli-10.1.2.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
61
|
+
devflow_cli-10.1.2.dist-info/entry_points.txt,sha256=GVJ6bMvFpqyO5589iC4nFKeGTpGIW8aKn_QPPpSZ6kU,48
|
|
62
|
+
devflow_cli-10.1.2.dist-info/licenses/LICENSE,sha256=v79PvnmqOdKhQiOa_QcWxng4q8GuGscLOwi7ygUpwpo,1070
|
|
63
|
+
devflow_cli-10.1.2.dist-info/RECORD,,
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: devflow-cli
|
|
3
|
-
Version: 10.1.0
|
|
4
|
-
Summary: Spec-Driven Development workflow CLI
|
|
5
|
-
Project-URL: Homepage, https://github.com/sopequenoteck/devflow
|
|
6
|
-
Project-URL: Repository, https://github.com/sopequenoteck/devflow
|
|
7
|
-
Author-email: sopequenoteck <sopequeno.tech@gmail.com>
|
|
8
|
-
License: MIT
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Keywords: claude-code,cli,development,spec-driven,workflow
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Environment :: Console
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
-
Classifier: Topic :: Software Development :: Quality Assurance
|
|
18
|
-
Requires-Python: >=3.11
|
|
19
|
-
Requires-Dist: jsonschema>=4.23
|
|
20
|
-
Requires-Dist: pyyaml>=6
|
|
21
|
-
Requires-Dist: rich>=13
|
|
22
|
-
Requires-Dist: typer>=0.12
|
|
23
|
-
Provides-Extra: dev
|
|
24
|
-
Requires-Dist: hatchling>=1.27; extra == 'dev'
|
|
25
|
-
Requires-Dist: pytest-cov>=5; extra == 'dev'
|
|
26
|
-
Requires-Dist: pytest>=8; extra == 'dev'
|
|
27
|
-
Description-Content-Type: text/markdown
|
|
28
|
-
|
|
29
|
-
# devflow
|
|
30
|
-
|
|
31
|
-
Devflow est un moteur de développement adaptatif pour Claude Code. Il choisit un niveau de rigueur à partir de signaux explicites, produit
|
|
32
|
-
des contrats d’activité portables et bloque les transitions tant que les
|
|
33
|
-
preuves attendues ne sont pas présentes.
|
|
34
|
-
|
|
35
|
-
## Profils
|
|
36
|
-
|
|
37
|
-
Le profil fixe la route documentaire :
|
|
38
|
-
|
|
39
|
-
- `quick` : changement local, clair et peu risqué, sans revue.
|
|
40
|
-
- `standard` : plusieurs composants ou risque modéré ; préparation puis revue
|
|
41
|
-
systématique (`implementation-review`).
|
|
42
|
-
- `deep` : changement transversal, ambigu ou contractuel ; `spec`, `plan`,
|
|
43
|
-
`tasks`, plus `contracts` quand `--contract-change` est déclaré.
|
|
44
|
-
|
|
45
|
-
Un bloc de garde-fous s'y ajoute quand `--data-security` est déclaré ou que
|
|
46
|
-
`--risk high` : `risk-assessment` après l'évaluation, validation bloquante de
|
|
47
|
-
sécurité ou de données dans le plan de validation (une validation protégée non
|
|
48
|
-
bloquante est refusée dès `prepare` ou `plan`), preuve
|
|
49
|
-
`security-or-data-check` produite par `verify`, revue `independent-review`,
|
|
50
|
-
puis `rollback-check` avec `rollback-plan`. Un bloc actif impose au minimum le
|
|
51
|
-
profil `standard`, ne se désactive par aucune option et interdit les
|
|
52
|
-
dérogations.
|
|
53
|
-
|
|
54
|
-
Les routes exactes et leurs preuves sont générées dans
|
|
55
|
-
[docs/pipeline-reference.generated.md](docs/pipeline-reference.generated.md).
|
|
56
|
-
|
|
57
|
-
## Installation
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
uv tool install --refresh devflow-cli==X.Y.Z # version publiée, voir CHANGELOG.md
|
|
61
|
-
devflow init
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Après chaque mise à jour de la CLI, lancer `devflow upgrade` : il met à jour
|
|
65
|
-
les commandes `/devflow` installées dans `~/.claude`, que l'installation de la
|
|
66
|
-
CLI ne touche pas. `--refresh` évite qu'`uv` ignore une version tout juste
|
|
67
|
-
publiée. Juste après une publication, l'installation peut échouer pendant une
|
|
68
|
-
à quatre minutes, le temps que l'index se propage : réessayer. Tant que les commandes installées diffèrent de la CLI,
|
|
69
|
-
`devflow status` affiche un avertissement avec cette commande ; rien n'est
|
|
70
|
-
modifié sans vous.
|
|
71
|
-
|
|
72
|
-
Installer toujours depuis PyPI, à une version précise, jamais depuis le
|
|
73
|
-
dossier du dépôt. Les versions publiées sont listées dans
|
|
74
|
-
[CHANGELOG.md](CHANGELOG.md).
|
|
75
|
-
|
|
76
|
-
Python 3.11+ et Git sont requis.
|
|
77
|
-
|
|
78
|
-
## Parcours quotidien
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
devflow feature KS-123 --short-name user-auth
|
|
82
|
-
# Décrire le besoin dans need.md, dans le dossier de la feature créé
|
|
83
|
-
devflow assess KS-123 --scope multiple --ambiguity medium --risk medium
|
|
84
|
-
devflow adaptive start KS-123
|
|
85
|
-
devflow adaptive run KS-123
|
|
86
|
-
devflow adaptive status KS-123
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`adaptive status --json` fournit un état exploitable par la CI. Les échecs
|
|
90
|
-
distinguent explicitement blocage métier, contrat invalide, panne agent,
|
|
91
|
-
validation échouée et conflit concurrent ; chaque refus affiche la commande de
|
|
92
|
-
reprise recommandée. Après un refus de `verify`, cette reprise dépend du motif :
|
|
93
|
-
approbations à donner, environnement à corriger, ou trois voies après un
|
|
94
|
-
contrôle échoué (rouvrir `implement` si le code est en cause, rouvrir `prepare`
|
|
95
|
-
ou `plan` si la validation l'est, relancer `verify` après un échec passager).
|
|
96
|
-
En `quick`, un lot purement documentaire (`README.md`, Markdown sous `docs/`)
|
|
97
|
-
sans contrôle détecté franchit `verify` sur l'inspection du diff.
|
|
98
|
-
|
|
99
|
-
Un plan de `prepare` ou de `plan` refusé par les validateurs se corrige sans
|
|
100
|
-
relancer l'agent : `devflow adaptive reconcile KS-123 --result FICHIER.json
|
|
101
|
-
--reason MOTIF` rejoue les mêmes validateurs et trace la correction. Les
|
|
102
|
-
validations qui attendent une approbation (`devflow adaptive approve-command`)
|
|
103
|
-
sont listées en une fois à la fin du plan et au début de `verify`. Pendant
|
|
104
|
-
qu'un agent travaille, les commandes humaines qui modifieraient l'état sont
|
|
105
|
-
refusées sans effet, et un fichier d'exécution modifié par l'agent est remis
|
|
106
|
-
dans son état d'avant l'agent.
|
|
107
|
-
|
|
108
|
-
L'agent Claude d'une activité est lancé avec
|
|
109
|
-
`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1` : il peut déléguer à des sous-agents,
|
|
110
|
-
mais au premier plan seulement. Effet de bord : il ne peut plus lancer de
|
|
111
|
-
commande shell en arrière-plan (serveur de test, par exemple). Tous les contrats
|
|
112
|
-
demandent en plus que la sortie structurée soit le dernier message de l'agent.
|
|
113
|
-
Si un agent termine sans erreur mais sans sortie structurée, `adaptive run`
|
|
114
|
-
nomme la cause (`structured-output-missing`) et propose
|
|
115
|
-
`devflow adaptive reconcile KS-123 --result MODELE --reason MOTIF` avec un
|
|
116
|
-
modèle de résultat prérempli, écrit dans `~/.devflow/reconcile/` et à compléter.
|
|
117
|
-
|
|
118
|
-
`need.md` peut être amendé en cours de parcours. Avant une activité
|
|
119
|
-
documentaire, l'amendement est accepté avec un avertissement qui nomme les
|
|
120
|
-
activités déjà closes, à rouvrir si leur résultat en dépend ; avant `prepare`,
|
|
121
|
-
il est accepté sans cet avertissement ; pendant l'exécution d'un agent, il est refusé ;
|
|
122
|
-
avant `implement`, il périme la preuve de pré-vol ; après `implement`, il
|
|
123
|
-
périme une revue déjà faite. Pour arbitrer après un blocage d'`implement` :
|
|
124
|
-
amender `need.md`, puis `devflow adaptive reopen KS-123 preflight-evidence
|
|
125
|
-
--reason MOTIF`, refaire le pré-vol et relancer `implement`. Un refus
|
|
126
|
-
d'artefact (`artifact-files-mismatch`) nomme chaque fichier en trop et sa
|
|
127
|
-
cause : retirer ou remettre en état le fichier, puis
|
|
128
|
-
`devflow adaptive reconcile KS-123` ; la relance à l'identique n'est plus
|
|
129
|
-
proposée. Pour une entrée du besoin modifiée par un agent, la relance est
|
|
130
|
-
refusée avant le lancement de l'agent : remettre l'entrée en état, ou
|
|
131
|
-
`devflow adaptive discard-attempt KS-123 --reason MOTIF`, puis
|
|
132
|
-
`devflow adaptive run KS-123`.
|
|
133
|
-
|
|
134
|
-
Chaque invocation de `adaptive run` traite une activité. La politique est dans
|
|
135
|
-
`assessment.json`; la progression et les preuves sont dans
|
|
136
|
-
`workflow-state.json`. Les résultats agent sont validés par schéma et les
|
|
137
|
-
preuves d’exécution sensibles sont produites localement par Devflow.
|
|
138
|
-
|
|
139
|
-
Chaque profil exécute `preflight-evidence` avant `implement`. Cette
|
|
140
|
-
activité archive des faits externes reproductibles dans
|
|
141
|
-
`preflight-evidence.md`, sans secret ni donnée utilisateur.
|
|
142
|
-
|
|
143
|
-
`adaptive run` lance toujours Claude Code, sans option d'agent.
|
|
144
|
-
|
|
145
|
-
## Features créées avant devflow 9
|
|
146
|
-
|
|
147
|
-
Devflow 9 refuse, sans migration, un dossier de feature dont la racine contient
|
|
148
|
-
un `*-result.json` de `schemaVersion` 1 ou un `*-attempt.json` de schéma 2 ou
|
|
149
|
-
moins (parcours démarré avec devflow 8.x). Terminez les parcours en cours avec
|
|
150
|
-
devflow 8.5.1, ou gardez la CLI épinglée :
|
|
151
|
-
`uv tool install devflow-cli==8.5.1`. Voir les
|
|
152
|
-
[notes de version 9.0.0](docs/releases/9.0.0.md).
|
|
153
|
-
|
|
154
|
-
## Features créées avant devflow 8
|
|
155
|
-
|
|
156
|
-
Devflow 8 refuse, sans migration, un `workflow-state.json` (schéma 5) produit
|
|
157
|
-
par devflow 7.x. Terminez les parcours en cours avec devflow 7.x, ou gardez la
|
|
158
|
-
CLI épinglée : `uv tool install 'devflow-cli<8'`. Voir les
|
|
159
|
-
[notes de version 8.0.0](docs/releases/8.0.0.md).
|
|
160
|
-
|
|
161
|
-
## Features créées avant devflow 7
|
|
162
|
-
|
|
163
|
-
Devflow 7 refuse, sans migration, un `assessment.json` (schéma 3) ou un
|
|
164
|
-
`workflow-state.json` (schéma 4) produit par devflow 6.x, avec un message qui
|
|
165
|
-
nomme le fichier. Avant la mise à jour, terminez les parcours en cours avec
|
|
166
|
-
devflow 6.x, ou gardez la CLI épinglée :
|
|
167
|
-
`uv tool install 'devflow-cli<7'`. Voir
|
|
168
|
-
[ADR-0003](docs/adr/0003-v7-guardrails-rupture.md) et les
|
|
169
|
-
[notes de version 7.0.0](docs/releases/7.0.0.md).
|
|
170
|
-
|
|
171
|
-
## Features créées avant devflow 5
|
|
172
|
-
|
|
173
|
-
Devflow 5 ne lit que ses propres schémas et ne fournit aucune migration : un
|
|
174
|
-
`assessment.json`, un `workflow-state.json` ou un `state.json` créé par une
|
|
175
|
-
version antérieure est refusé. Terminez ces features avec devflow 4.x avant la
|
|
176
|
-
mise à jour. Voir [ADR-0002](docs/adr/0002-v5-rupture-and-provenance.md).
|
|
177
|
-
|
|
178
|
-
`devflow init` et `devflow upgrade` déplacent également les anciennes commandes
|
|
179
|
-
Claude connues vers `~/.claude/.devflow-legacy-backup/` sans toucher aux
|
|
180
|
-
commandes personnalisées.
|
|
181
|
-
|
|
182
|
-
## Synchronisation Linear
|
|
183
|
-
|
|
184
|
-
Si `LINEAR_API_KEY` contient une clé d'API personnelle Linear, la CLI met à jour
|
|
185
|
-
le statut de l'issue du parcours au démarrage de chaque activité (`adaptive
|
|
186
|
-
run`, y compris avec `--until`, et clôture `done`). L'équipe Linear doit avoir
|
|
187
|
-
les statuts `Backlog`, `Design`, `In Progress`, `Review` et `Done`. Un statut
|
|
188
|
-
n'est jamais ramené en arrière ; un statut hors de cette liste (`Canceled`,
|
|
189
|
-
`Duplicate`) n'est jamais modifié.
|
|
190
|
-
|
|
191
|
-
Sans clé, ou si Linear échoue (issue inconnue, statut absent, erreur réseau ou
|
|
192
|
-
délai de 5 s dépassé), la CLI affiche un avertissement et le parcours continue
|
|
193
|
-
à l'identique. La clé est retirée de l'environnement de tout processus lancé
|
|
194
|
-
par Devflow (agents, commandes de validation, commandes git) ; elle reste
|
|
195
|
-
lisible par un agent si elle est définie dans un fichier que son shell charge (`~/.zshrc`). Détails :
|
|
196
|
-
[Référence CLI](docs/cli-reference.md#synchronisation-linear).
|
|
197
|
-
|
|
198
|
-
## Documentation
|
|
199
|
-
|
|
200
|
-
- [Workflow adaptatif](docs/pipeline.md)
|
|
201
|
-
- [Référence CLI](docs/cli-reference.md)
|
|
202
|
-
- [Contrats d’activité](docs/activity-contracts.md)
|
|
203
|
-
- [Façade Claude Code](docs/commands-reference.md)
|
|
204
|
-
|
|
205
|
-
## Développement
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
uv sync --extra dev
|
|
209
|
-
uv run pytest -q
|
|
210
|
-
./tests/run-tests.sh
|
|
211
|
-
uv run devflow docs-sync --check
|
|
212
|
-
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|