@nowline/cli 0.2.0
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.
- package/LICENSE +190 -0
- package/README.md +372 -0
- package/dist/cli/args.d.ts +54 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +165 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/formats.d.ts +61 -0
- package/dist/cli/formats.d.ts.map +1 -0
- package/dist/cli/formats.js +153 -0
- package/dist/cli/formats.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +90 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/output-path.d.ts +57 -0
- package/dist/cli/output-path.d.ts.map +1 -0
- package/dist/cli/output-path.js +70 -0
- package/dist/cli/output-path.js.map +1 -0
- package/dist/commands/init.d.ts +20 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +80 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/render.d.ts +15 -0
- package/dist/commands/render.d.ts.map +1 -0
- package/dist/commands/render.js +435 -0
- package/dist/commands/render.js.map +1 -0
- package/dist/commands/serve.d.ts +16 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +287 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/convert/parse-json.d.ts +7 -0
- package/dist/convert/parse-json.d.ts.map +1 -0
- package/dist/convert/parse-json.js +34 -0
- package/dist/convert/parse-json.js.map +1 -0
- package/dist/convert/printer.d.ts +6 -0
- package/dist/convert/printer.d.ts.map +1 -0
- package/dist/convert/printer.js +334 -0
- package/dist/convert/printer.js.map +1 -0
- package/dist/convert/schema.d.ts +33 -0
- package/dist/convert/schema.d.ts.map +1 -0
- package/dist/convert/schema.js +77 -0
- package/dist/convert/schema.js.map +1 -0
- package/dist/core/parse.d.ts +24 -0
- package/dist/core/parse.d.ts.map +1 -0
- package/dist/core/parse.js +58 -0
- package/dist/core/parse.js.map +1 -0
- package/dist/diagnostics/adapt.d.ts +46 -0
- package/dist/diagnostics/adapt.d.ts.map +1 -0
- package/dist/diagnostics/adapt.js +109 -0
- package/dist/diagnostics/adapt.js.map +1 -0
- package/dist/diagnostics/format.d.ts +18 -0
- package/dist/diagnostics/format.d.ts.map +1 -0
- package/dist/diagnostics/format.js +41 -0
- package/dist/diagnostics/format.js.map +1 -0
- package/dist/diagnostics/index.d.ts +5 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +5 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/json.d.ts +8 -0
- package/dist/diagnostics/json.d.ts.map +1 -0
- package/dist/diagnostics/json.js +24 -0
- package/dist/diagnostics/json.js.map +1 -0
- package/dist/diagnostics/model.d.ts +44 -0
- package/dist/diagnostics/model.d.ts.map +1 -0
- package/dist/diagnostics/model.js +2 -0
- package/dist/diagnostics/model.js.map +1 -0
- package/dist/diagnostics/text.d.ts +6 -0
- package/dist/diagnostics/text.d.ts.map +1 -0
- package/dist/diagnostics/text.js +43 -0
- package/dist/diagnostics/text.js.map +1 -0
- package/dist/generated/templates.d.ts +4 -0
- package/dist/generated/templates.d.ts.map +1 -0
- package/dist/generated/templates.js +9 -0
- package/dist/generated/templates.js.map +1 -0
- package/dist/generated/version.d.ts +11 -0
- package/dist/generated/version.d.ts.map +1 -0
- package/dist/generated/version.js +8 -0
- package/dist/generated/version.js.map +1 -0
- package/dist/i18n/locale.d.ts +56 -0
- package/dist/i18n/locale.d.ts.map +1 -0
- package/dist/i18n/locale.js +107 -0
- package/dist/i18n/locale.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/io/config.d.ts +2 -0
- package/dist/io/config.d.ts.map +1 -0
- package/dist/io/config.js +5 -0
- package/dist/io/config.js.map +1 -0
- package/dist/io/exit-codes.d.ts +12 -0
- package/dist/io/exit-codes.d.ts.map +1 -0
- package/dist/io/exit-codes.js +15 -0
- package/dist/io/exit-codes.js.map +1 -0
- package/dist/io/read.d.ts +13 -0
- package/dist/io/read.d.ts.map +1 -0
- package/dist/io/read.js +53 -0
- package/dist/io/read.js.map +1 -0
- package/dist/io/write.d.ts +32 -0
- package/dist/io/write.d.ts.map +1 -0
- package/dist/io/write.js +61 -0
- package/dist/io/write.js.map +1 -0
- package/dist/version.d.ts +13 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +20 -0
- package/dist/version.js.map +1 -0
- package/man/fr/nowline.1 +424 -0
- package/man/fr/nowline.5 +1864 -0
- package/man/nowline.1 +517 -0
- package/man/nowline.5 +1784 -0
- package/package.json +66 -0
- package/scripts/bundle-templates.mjs +105 -0
- package/scripts/compile.mjs +131 -0
- package/src/cli/args.ts +252 -0
- package/src/cli/formats.ts +207 -0
- package/src/cli/help.ts +92 -0
- package/src/cli/output-path.ts +98 -0
- package/src/commands/init.ts +99 -0
- package/src/commands/render.ts +566 -0
- package/src/commands/serve.ts +322 -0
- package/src/convert/parse-json.ts +57 -0
- package/src/convert/printer.ts +376 -0
- package/src/convert/schema.ts +105 -0
- package/src/core/parse.ts +93 -0
- package/src/diagnostics/adapt.ts +148 -0
- package/src/diagnostics/format.ts +70 -0
- package/src/diagnostics/index.ts +4 -0
- package/src/diagnostics/json.ts +30 -0
- package/src/diagnostics/model.ts +48 -0
- package/src/diagnostics/text.ts +62 -0
- package/src/generated/templates.ts +12 -0
- package/src/generated/version.ts +18 -0
- package/src/i18n/locale.ts +133 -0
- package/src/index.ts +60 -0
- package/src/io/config.ts +11 -0
- package/src/io/exit-codes.ts +18 -0
- package/src/io/read.ts +70 -0
- package/src/io/write.ts +94 -0
- package/src/version.ts +21 -0
package/man/fr/nowline.5
ADDED
|
@@ -0,0 +1,1864 @@
|
|
|
1
|
+
.\" Traduction française neutre. Les divergences régionales (fr-CA, fr-FR)
|
|
2
|
+
.\" prennent la forme de surcouches dans packages/cli/man/<locale>/nowline.5
|
|
3
|
+
.\" lorsqu'elles existent. Voir specs/localization.md.
|
|
4
|
+
.\"
|
|
5
|
+
.\" Les mots-clés du DSL (nowline, config, roadmap, swimlane, item, parallel,
|
|
6
|
+
.\" group, person, team, anchor, label, size, status, milestone, footnote,
|
|
7
|
+
.\" include, style, symbol, default, scale, calendar) ainsi que les noms de
|
|
8
|
+
.\" propriétés (size:, duration:, after:, before:, on:, owner:, capacity:,
|
|
9
|
+
.\" labels:, link:, style:, status:, etc.) et les valeurs intégrées
|
|
10
|
+
.\" (planned, in-progress, done, at-risk, blocked, business, full, custom)
|
|
11
|
+
.\" restent en anglais : ce sont des éléments de syntaxe acceptés par
|
|
12
|
+
.\" l'analyseur, pas des mots à traduire.
|
|
13
|
+
.Dd $Mdocdate$
|
|
14
|
+
.Dt NOWLINE 5
|
|
15
|
+
.Os
|
|
16
|
+
.Sh NOM
|
|
17
|
+
.Nm nowline
|
|
18
|
+
.Nd format de fichier de feuille de route DSL Nowline
|
|
19
|
+
.Sh DESCRIPTION
|
|
20
|
+
Un fichier
|
|
21
|
+
.Pa .nowline
|
|
22
|
+
est une esquisse à indentation significative qui définit une feuille
|
|
23
|
+
de route.
|
|
24
|
+
Le fichier lui-même est le produit\ ; tout autre artefact (SVG, PNG,
|
|
25
|
+
PDF, HTML, Markdown+Mermaid, XLSX, MS Project XML) est une vue
|
|
26
|
+
produite à partir de lui par
|
|
27
|
+
.Xr nowline 1 .
|
|
28
|
+
.Pp
|
|
29
|
+
Cette page documente le format de fichier.
|
|
30
|
+
Pour le pipeline de production et les contrats visuels, voir
|
|
31
|
+
.Pa specs/rendering.md
|
|
32
|
+
dans le dépôt source.
|
|
33
|
+
Pour la surface CLI, voir
|
|
34
|
+
.Xr nowline 1 .
|
|
35
|
+
.Pp
|
|
36
|
+
La source de référence en prose pour tout ce qui suit est
|
|
37
|
+
.Pa specs/dsl.md
|
|
38
|
+
dans le dépôt source\ ; cette page est une référence rédigée à la
|
|
39
|
+
main, distillée à partir d'elle.
|
|
40
|
+
.Sh STRUCTURE DU FICHIER
|
|
41
|
+
Un fichier
|
|
42
|
+
.Pa .nowline
|
|
43
|
+
comporte jusqu'à quatre sections dans un ordre strict\ :
|
|
44
|
+
.Bl -enum -offset indent
|
|
45
|
+
.It
|
|
46
|
+
Directive
|
|
47
|
+
.Sy nowline
|
|
48
|
+
(facultative, recommandée).
|
|
49
|
+
Doit être la première ligne non vide et non commentaire si elle
|
|
50
|
+
est présente.
|
|
51
|
+
.It
|
|
52
|
+
Déclarations
|
|
53
|
+
.Sy include
|
|
54
|
+
(facultatives).
|
|
55
|
+
Importent d'autres fichiers
|
|
56
|
+
.Pa .nowline .
|
|
57
|
+
.It
|
|
58
|
+
Section
|
|
59
|
+
.Sy config
|
|
60
|
+
(facultative).
|
|
61
|
+
Configuration de production\ : styles, valeurs par défaut, échelle,
|
|
62
|
+
calendrier, symboles.
|
|
63
|
+
.It
|
|
64
|
+
Section
|
|
65
|
+
.Sy roadmap
|
|
66
|
+
(obligatoire).
|
|
67
|
+
Contenu\ : personnes, équipes, ancres, étiquettes, tailles, statuts,
|
|
68
|
+
couloirs, éléments, jalons, notes de bas de page.
|
|
69
|
+
.El
|
|
70
|
+
.Pp
|
|
71
|
+
.Sy config
|
|
72
|
+
et
|
|
73
|
+
.Sy roadmap
|
|
74
|
+
sont des marqueurs de section, et non des conteneurs d'indentation.
|
|
75
|
+
Les mots-clés à l'intérieur de chaque section apparaissent au plus
|
|
76
|
+
haut niveau (non indentés sous le marqueur).
|
|
77
|
+
L'indentation est utilisée là où l'imbrication est réelle\ :
|
|
78
|
+
propriétés de style sous un bloc
|
|
79
|
+
.Sy style ,
|
|
80
|
+
éléments sous un
|
|
81
|
+
.Sy swimlane ,
|
|
82
|
+
membres d'équipe sous un
|
|
83
|
+
.Sy team .
|
|
84
|
+
.Pp
|
|
85
|
+
L'indentation est significative.
|
|
86
|
+
L'indentation à deux espaces est canonique\ ; une tabulation est
|
|
87
|
+
également acceptée.
|
|
88
|
+
Espaces et tabulations ne doivent pas être mélangés dans un même
|
|
89
|
+
fichier \(em l'analyseur rejette une indentation mixte avec une
|
|
90
|
+
erreur identifiant la première ligne fautive.
|
|
91
|
+
.Pp
|
|
92
|
+
Les chaînes sont entre guillemets doubles
|
|
93
|
+
.Pq Qq Auth refactor ,
|
|
94
|
+
ni nues ni en simples apostrophes.
|
|
95
|
+
Les propriétés sont des paires
|
|
96
|
+
.Sy clé:valeur
|
|
97
|
+
sur la même ligne que l'entité\ ; les valeurs contenant des espaces
|
|
98
|
+
doivent être entre guillemets doubles.
|
|
99
|
+
Les clés de propriété n'utilisent jamais
|
|
100
|
+
.Sq = .
|
|
101
|
+
.Pp
|
|
102
|
+
Les mots-clés intégrés et noms de propriétés sont en kebab-case
|
|
103
|
+
.Pq Sy capacity-icon , Sy days-per-week , Sy in-progress .
|
|
104
|
+
Les identifiants choisis par l'auteur peuvent combiner lettres,
|
|
105
|
+
chiffres, tirets bas et tirets
|
|
106
|
+
.Pq Sy auth-refactor , Sy authRefactor , Sy auth_refactor ;
|
|
107
|
+
ils doivent commencer par une lettre ou un tiret bas.
|
|
108
|
+
.Pp
|
|
109
|
+
Les commentaires utilisent
|
|
110
|
+
.Sq //
|
|
111
|
+
pour une seule ligne et
|
|
112
|
+
.Sq /* */
|
|
113
|
+
pour plusieurs lignes.
|
|
114
|
+
Une barre oblique inverse
|
|
115
|
+
.Sq \e
|
|
116
|
+
en fin de ligne prolonge la ligne\ ; l'indentation sur la ligne
|
|
117
|
+
suivante est cosmétique.
|
|
118
|
+
Utilisez
|
|
119
|
+
.Sq \e\e
|
|
120
|
+
pour une barre oblique inverse littérale.
|
|
121
|
+
.Sh DIRECTIVE
|
|
122
|
+
La directive
|
|
123
|
+
.Sy nowline
|
|
124
|
+
déclare la version majeure du DSL ciblée par un fichier\ :
|
|
125
|
+
.Bd -literal -offset indent
|
|
126
|
+
nowline v1
|
|
127
|
+
.Ed
|
|
128
|
+
.Pp
|
|
129
|
+
La version est un entier seul
|
|
130
|
+
.Pq Sy v1 , Sy v2 , Sy v3 , ...
|
|
131
|
+
et est indépendante de la version du paquet npm.
|
|
132
|
+
À l'intérieur d'une majeure du DSL, l'analyseur doit accepter tout
|
|
133
|
+
fichier valide écrit pour cette majeure\ ; une nouvelle syntaxe
|
|
134
|
+
peut être ajoutée entre versions mineures/correctives, mais aucune
|
|
135
|
+
modification cassante d'un fichier
|
|
136
|
+
.Sy nowline v1
|
|
137
|
+
valide existant n'est livrée sans incrémenter la directive à
|
|
138
|
+
.Sy v2 .
|
|
139
|
+
Lorsque l'analyseur rencontre une version qu'il ne prend pas en
|
|
140
|
+
charge, il émet une erreur identifiant la version requise.
|
|
141
|
+
Lorsque la directive est omise, l'analyseur suppose la version la
|
|
142
|
+
plus récente qu'il prend en charge.
|
|
143
|
+
.Pp
|
|
144
|
+
La ligne de directive accepte des propriétés facultatives au niveau
|
|
145
|
+
fichier après la version.
|
|
146
|
+
La seule propriété de directive aujourd'hui est
|
|
147
|
+
.Sy locale: ,
|
|
148
|
+
une étiquette BCP-47 contrôlant la production localisée et les
|
|
149
|
+
messages du validateur\ :
|
|
150
|
+
.Bd -literal -offset indent
|
|
151
|
+
nowline v1 locale:fr-CA
|
|
152
|
+
.Ed
|
|
153
|
+
.Pp
|
|
154
|
+
Les clés de directive inconnues sont une erreur, pour que les
|
|
155
|
+
fautes de frappe se manifestent immédiatement.
|
|
156
|
+
Voir
|
|
157
|
+
.Pa specs/localization.md
|
|
158
|
+
pour le modèle de locale et la chaîne de précédence.
|
|
159
|
+
.Pp
|
|
160
|
+
La directive
|
|
161
|
+
.Sy nowline
|
|
162
|
+
est la seule construction qui ne suit pas le modèle de déclaration
|
|
163
|
+
universel
|
|
164
|
+
.Pq voir Sx GRAMMAIRE :
|
|
165
|
+
pas d'identifiant, pas de titre, juste le mot-clé et la version.
|
|
166
|
+
.Sh INCLUSIONS
|
|
167
|
+
.Sy include
|
|
168
|
+
importe un autre fichier
|
|
169
|
+
.Pa .nowline
|
|
170
|
+
dans le fichier courant\ :
|
|
171
|
+
.Bd -literal -offset indent
|
|
172
|
+
include "shared/teams.nowline"
|
|
173
|
+
include "brand-styles.nowline" roadmap:ignore
|
|
174
|
+
include "partner.nowline" config:isolate roadmap:isolate
|
|
175
|
+
.Ed
|
|
176
|
+
.Pp
|
|
177
|
+
Deux propriétés facultatives \(em
|
|
178
|
+
.Sy config:
|
|
179
|
+
et
|
|
180
|
+
.Sy roadmap:
|
|
181
|
+
\(em contrôlent la manière dont le contenu du fichier inclus est
|
|
182
|
+
traité.
|
|
183
|
+
Elles agissent sur deux catégories indépendantes\ :
|
|
184
|
+
.Bl -tag -width "Roadmap (contenu)"
|
|
185
|
+
.It Sy Config
|
|
186
|
+
Les déclarations
|
|
187
|
+
.Sy scale ,
|
|
188
|
+
.Sy style ,
|
|
189
|
+
.Sy symbol ,
|
|
190
|
+
.Sy default
|
|
191
|
+
et
|
|
192
|
+
.Sy calendar
|
|
193
|
+
du fichier inclus.
|
|
194
|
+
.It Sy Roadmap
|
|
195
|
+
La déclaration
|
|
196
|
+
.Sy roadmap
|
|
197
|
+
du fichier inclus, plus tout son contenu (personnes, équipes,
|
|
198
|
+
ancres, étiquettes, tailles, statuts, couloirs, éléments, jalons,
|
|
199
|
+
notes de bas de page).
|
|
200
|
+
.El
|
|
201
|
+
.Pp
|
|
202
|
+
Modes
|
|
203
|
+
.Sy config: \ :
|
|
204
|
+
.Bl -tag -width "isolate"
|
|
205
|
+
.It Sy merge Pq par défaut
|
|
206
|
+
Les éléments de configuration de l'enfant sont fusionnés dans le
|
|
207
|
+
parent.
|
|
208
|
+
En cas de collision, le
|
|
209
|
+
.Em parent l'emporte
|
|
210
|
+
et l'analyseur émet un avertissement identifiant la définition
|
|
211
|
+
masquée et son fichier source.
|
|
212
|
+
.It Sy ignore
|
|
213
|
+
La configuration de l'enfant est entièrement abandonnée.
|
|
214
|
+
Si le contenu roadmap de l'enfant est fusionné, il résout les
|
|
215
|
+
styles à partir de la configuration post-fusion du parent.
|
|
216
|
+
.It Sy isolate
|
|
217
|
+
La configuration de l'enfant n'est disponible qu'à l'intérieur du
|
|
218
|
+
fichier enfant\ ; la configuration du parent n'est disponible que
|
|
219
|
+
dans le parent.
|
|
220
|
+
Aucun des deux côtés ne déborde sur l'autre.
|
|
221
|
+
.El
|
|
222
|
+
.Pp
|
|
223
|
+
Modes
|
|
224
|
+
.Sy roadmap: \ :
|
|
225
|
+
.Bl -tag -width "isolate"
|
|
226
|
+
.It Sy merge Pq par défaut
|
|
227
|
+
Les entités de contenu de l'enfant sont fusionnées dans le parent.
|
|
228
|
+
En cas de collision,
|
|
229
|
+
.Em le parent l'emporte
|
|
230
|
+
et un avertissement est émis.
|
|
231
|
+
Une collision de couloir abandonne aussi les éléments contenus
|
|
232
|
+
dans le couloir.
|
|
233
|
+
Le contenu fusionné résout les styles à partir de la configuration
|
|
234
|
+
post-fusion.
|
|
235
|
+
.It Sy ignore
|
|
236
|
+
Le contenu de l'enfant est abandonné.
|
|
237
|
+
À utiliser pour les bibliothèques de styles partagées
|
|
238
|
+
.Pq Sy include "brand.nowline" roadmap:ignore .
|
|
239
|
+
Les vocabulaires partagés (étiquettes, statuts, tailles) utilisent
|
|
240
|
+
.Sy roadmap:merge ,
|
|
241
|
+
et non
|
|
242
|
+
.Sy roadmap:ignore .
|
|
243
|
+
.It Sy isolate
|
|
244
|
+
Le contenu de l'enfant reste cantonné au fichier enfant et utilise
|
|
245
|
+
uniquement la configuration de l'enfant.
|
|
246
|
+
L'enfant doit contenir une déclaration
|
|
247
|
+
.Sy roadmap
|
|
248
|
+
(nécessaire à l'étiquette de la région).
|
|
249
|
+
Le contenu isolé est rendu comme une région visuellement distincte,
|
|
250
|
+
avec sa propre bordure.
|
|
251
|
+
.El
|
|
252
|
+
.Pp
|
|
253
|
+
Les inclusions sont traitées en profondeur d'abord, dans l'ordre du
|
|
254
|
+
fichier.
|
|
255
|
+
Lorsque le processeur rencontre une déclaration
|
|
256
|
+
.Sy include ,
|
|
257
|
+
il traite ce fichier enfant (et ses inclusions récursivement) avant
|
|
258
|
+
de poursuivre avec la déclaration suivante.
|
|
259
|
+
La configuration est fusionnée avant le contenu roadmap à chaque
|
|
260
|
+
niveau.
|
|
261
|
+
.Pp
|
|
262
|
+
Les inclusions en losange (A inclut B et C, qui incluent tous deux
|
|
263
|
+
D) sont valides\ ; D est traité une seule fois lors de la première
|
|
264
|
+
rencontre.
|
|
265
|
+
Les doublons d'inclusion du même fichier dans un même fichier sont
|
|
266
|
+
une erreur.
|
|
267
|
+
Les inclusions cycliques sont une erreur.
|
|
268
|
+
.Pp
|
|
269
|
+
Les inclusions sont résolues relativement au répertoire du fichier
|
|
270
|
+
incluant.
|
|
271
|
+
Les chemins utilisent des barres obliques sur toutes les
|
|
272
|
+
plateformes.
|
|
273
|
+
Les inclusions doivent apparaître avant
|
|
274
|
+
.Sy config
|
|
275
|
+
et
|
|
276
|
+
.Sy roadmap
|
|
277
|
+
\(em ce sont les premières déclarations d'un fichier (après la
|
|
278
|
+
directive
|
|
279
|
+
.Sy nowline
|
|
280
|
+
si présente).
|
|
281
|
+
.Pp
|
|
282
|
+
Pour toute inclusion dont le mode
|
|
283
|
+
.Sy roadmap:
|
|
284
|
+
n'est pas
|
|
285
|
+
.Sy ignore ,
|
|
286
|
+
si le fichier enfant déclare un
|
|
287
|
+
.Sy roadmap ,
|
|
288
|
+
le parent et l'enfant doivent s'accorder sur
|
|
289
|
+
.Sy start: \(em
|
|
290
|
+
les deux absents, ou les deux présents avec des valeurs
|
|
291
|
+
identiques.
|
|
292
|
+
Une discordance est une erreur signalée sur la ligne
|
|
293
|
+
.Sy include
|
|
294
|
+
du parent\ ; il s'agit d'une exception explicite au comportement
|
|
295
|
+
de fusion
|
|
296
|
+
.Qq parent l'emporte
|
|
297
|
+
parce que
|
|
298
|
+
.Sy start:
|
|
299
|
+
définit la base temporelle commune.
|
|
300
|
+
.Sh SECTION CONFIG
|
|
301
|
+
Le marqueur de section facultatif
|
|
302
|
+
.Sy config
|
|
303
|
+
apparaît avant
|
|
304
|
+
.Sy roadmap .
|
|
305
|
+
Les mots-clés de configuration se trouvent au plus haut niveau (et
|
|
306
|
+
non indentés sous le marqueur) et définissent vocabulaire de
|
|
307
|
+
production, valeurs par défaut, paramètres d'axe, arithmétique des
|
|
308
|
+
jours et symboles personnalisés.
|
|
309
|
+
.Pp
|
|
310
|
+
Cinq mots-clés de configuration\ :
|
|
311
|
+
.Sy scale ,
|
|
312
|
+
.Sy style ,
|
|
313
|
+
.Sy symbol ,
|
|
314
|
+
.Sy default ,
|
|
315
|
+
.Sy calendar .
|
|
316
|
+
Toute entrée de configuration est facultative\ ; si
|
|
317
|
+
.Sy config
|
|
318
|
+
est omise, toutes les valeurs intégrées par défaut s'appliquent.
|
|
319
|
+
.Ss style \(em définition visuelle nommée
|
|
320
|
+
Une déclaration
|
|
321
|
+
.Sy style
|
|
322
|
+
définit un traitement visuel nommé.
|
|
323
|
+
Les propriétés sont indentées en dessous\ :
|
|
324
|
+
.Bd -literal -offset indent
|
|
325
|
+
style enterprise "Enterprise readiness"
|
|
326
|
+
bg: blue
|
|
327
|
+
fg: navy
|
|
328
|
+
text: white
|
|
329
|
+
border: solid
|
|
330
|
+
icon: shield
|
|
331
|
+
|
|
332
|
+
style risky
|
|
333
|
+
border: dashed
|
|
334
|
+
fg: orange
|
|
335
|
+
.Ed
|
|
336
|
+
.Pp
|
|
337
|
+
Les styles suivent le modèle universel
|
|
338
|
+
.Sy [id] ["titre"] .
|
|
339
|
+
Les propriétés sont énumérées sous
|
|
340
|
+
.Sx PROPRIÉTÉS DE STYLE
|
|
341
|
+
ci-dessous.
|
|
342
|
+
.Ss symbol \(em symbole personnalisé nommé
|
|
343
|
+
Une déclaration
|
|
344
|
+
.Sy symbol
|
|
345
|
+
définit un symbole personnalisé pour les propriétés de style
|
|
346
|
+
.Sy icon:
|
|
347
|
+
et
|
|
348
|
+
.Sy capacity-icon: .
|
|
349
|
+
Les auteurs utilisent la forme littérale Unicode en ligne
|
|
350
|
+
.Pq Sy capacity-icon:"\(rs"
|
|
351
|
+
pour les symboles ponctuels\ ; les déclarations
|
|
352
|
+
.Sy symbol
|
|
353
|
+
nommées sont pour les symboles réutilisables.
|
|
354
|
+
.Bd -literal -offset indent
|
|
355
|
+
symbol budget "Budget" unicode:"\(em" ascii:"$"
|
|
356
|
+
symbol fte unicode:"\eu{1F464}" ascii:"@"
|
|
357
|
+
symbol star unicode:"\(em"
|
|
358
|
+
.Ed
|
|
359
|
+
.Pp
|
|
360
|
+
Obligatoire\ :
|
|
361
|
+
.Sy unicode:"<chaîne>"
|
|
362
|
+
\(em le caractère Unicode (littéral ou échappement
|
|
363
|
+
.Sy \eu{...} ,
|
|
364
|
+
peut être un cluster de graphème multi-points).
|
|
365
|
+
.Pp
|
|
366
|
+
Facultatif\ :
|
|
367
|
+
.Sy ascii:"<chaîne>"
|
|
368
|
+
\(em repli ASCII court pour les terminaux dépourvus du glyphe,
|
|
369
|
+
\(<= 3 caractères ASCII\ ; vaut
|
|
370
|
+
.Sq \&?
|
|
371
|
+
par défaut si omis.
|
|
372
|
+
.Pp
|
|
373
|
+
Un identifiant de
|
|
374
|
+
.Sy symbol
|
|
375
|
+
ne doit pas masquer le nom d'une icône intégrée
|
|
376
|
+
.Pq Sy none , Sy multiplier , Sy person , Sy people , Sy points , Sy time , Sy shield , Sy warning , Sy lock .
|
|
377
|
+
.Ss default \(em valeurs par défaut par type d'entité
|
|
378
|
+
.Sy default <entité> <propriétés>
|
|
379
|
+
définit des valeurs de propriété par défaut pour un type d'entité
|
|
380
|
+
donné.
|
|
381
|
+
Une déclaration par type d'entité par fichier\ :
|
|
382
|
+
.Bd -literal -offset indent
|
|
383
|
+
default item status:planned shadow:subtle
|
|
384
|
+
default label style:subtle corner-radius:full
|
|
385
|
+
default swimlane padding:sm spacing:none
|
|
386
|
+
default roadmap padding:md header-height:md font:sans
|
|
387
|
+
default milestone weight:bold
|
|
388
|
+
default footnote style:subtle shadow:subtle
|
|
389
|
+
default anchor style:subtle
|
|
390
|
+
default parallel bracket:none
|
|
391
|
+
default group padding:xs spacing:xs
|
|
392
|
+
.Ed
|
|
393
|
+
.Pp
|
|
394
|
+
Types d'entités pris en charge\ :
|
|
395
|
+
.Sy item , label , swimlane , roadmap , parallel , group , milestone , footnote , anchor .
|
|
396
|
+
Lorsqu'une entité omet une propriété, la valeur par défaut
|
|
397
|
+
correspondante s'applique\ ; les valeurs explicites sur l'entité
|
|
398
|
+
priment toujours.
|
|
399
|
+
.Pp
|
|
400
|
+
Les propriétés d'identité, de dimensionnement, de séquencement, de
|
|
401
|
+
référence et de prose ne peuvent pas avoir de valeur par défaut\ :
|
|
402
|
+
elles doivent être explicites par entité.
|
|
403
|
+
Interdites, par type d'entité\ :
|
|
404
|
+
.Bl -tag -width "default footnote"
|
|
405
|
+
.It Sy default item
|
|
406
|
+
.Sy size , duration , after , before , remaining , link , description , owner .
|
|
407
|
+
.It Sy default milestone
|
|
408
|
+
.Sy date , after , link , description .
|
|
409
|
+
.It Sy default anchor
|
|
410
|
+
.Sy date , link , description .
|
|
411
|
+
.It Sy default footnote
|
|
412
|
+
.Sy on , link , description .
|
|
413
|
+
.El
|
|
414
|
+
.Pp
|
|
415
|
+
Les propriétés de style brutes
|
|
416
|
+
.Pq Sy bg , Sy fg , Sy text , Sy border , Sy shadow , ...
|
|
417
|
+
sont autorisées sur
|
|
418
|
+
.Sy default
|
|
419
|
+
parce que
|
|
420
|
+
.Sy default
|
|
421
|
+
réside dans
|
|
422
|
+
.Sy config ,
|
|
423
|
+
la section de présentation.
|
|
424
|
+
L'interdiction des propriétés de style brutes s'applique aux
|
|
425
|
+
entités de la section roadmap, et non aux lignes
|
|
426
|
+
.Sy default .
|
|
427
|
+
.Pp
|
|
428
|
+
.Sy capacity
|
|
429
|
+
est autorisée sur
|
|
430
|
+
.Sy default item
|
|
431
|
+
mais
|
|
432
|
+
.Em pas
|
|
433
|
+
sur
|
|
434
|
+
.Sy default swimlane
|
|
435
|
+
\(em le budget de chaque couloir est volontairement explicite à son
|
|
436
|
+
site de déclaration.
|
|
437
|
+
.Sy utilization-warn-at: ,
|
|
438
|
+
.Sy utilization-over-at: ,
|
|
439
|
+
et
|
|
440
|
+
.Sy capacity-icon:
|
|
441
|
+
sont autorisées à la fois sur
|
|
442
|
+
.Sy default swimlane
|
|
443
|
+
et sur
|
|
444
|
+
.Sy default item
|
|
445
|
+
selon la règle habituelle des propriétés de présentation.
|
|
446
|
+
.Ss scale \(em affichage de l'axe
|
|
447
|
+
.Sy scale
|
|
448
|
+
configure l'axe temporel.
|
|
449
|
+
La largeur de colonne est définie par
|
|
450
|
+
.Sy scale:<durée>
|
|
451
|
+
sur la déclaration
|
|
452
|
+
.Sy roadmap \ ;
|
|
453
|
+
ce bloc configure l'affichage\ :
|
|
454
|
+
.Bd -literal -offset indent
|
|
455
|
+
scale
|
|
456
|
+
name: sprints
|
|
457
|
+
label-every: 2
|
|
458
|
+
label: "Sprint {n}"
|
|
459
|
+
.Ed
|
|
460
|
+
.Bl -tag -width "label-every"
|
|
461
|
+
.It Sy name
|
|
462
|
+
Étiquette d'affichage de l'unité d'échelle (p.\ ex.
|
|
463
|
+
.Qq sprint ) .
|
|
464
|
+
Vaut par défaut un nom auto-généré à partir de la durée
|
|
465
|
+
.Sy scale:
|
|
466
|
+
de la roadmap.
|
|
467
|
+
.It Sy label-every
|
|
468
|
+
Affiche une étiquette d'axe toutes les N colonnes.
|
|
469
|
+
Valeur par défaut\ : choix du moteur de production.
|
|
470
|
+
.It Sy label
|
|
471
|
+
Format d'étiquette d'axe.
|
|
472
|
+
.Sq {n}
|
|
473
|
+
est l'indice de colonne.
|
|
474
|
+
.El
|
|
475
|
+
.Pp
|
|
476
|
+
Le bloc de configuration
|
|
477
|
+
.Sy scale
|
|
478
|
+
est facultatif.
|
|
479
|
+
Un fichier peut déclarer
|
|
480
|
+
.Sy scale:2w
|
|
481
|
+
sur sa
|
|
482
|
+
.Sy roadmap
|
|
483
|
+
sans bloc
|
|
484
|
+
.Sy scale ,
|
|
485
|
+
et le moteur de production choisit toutes les valeurs d'affichage
|
|
486
|
+
par défaut.
|
|
487
|
+
.Ss calendar \(em arithmétique des jours
|
|
488
|
+
La propriété
|
|
489
|
+
.Sy calendar:
|
|
490
|
+
sur
|
|
491
|
+
.Sy roadmap
|
|
492
|
+
sélectionne le mode d'arithmétique des jours\ :
|
|
493
|
+
.Bl -tag -width "calendar:business"
|
|
494
|
+
.It Sy calendar:business Pq par défaut
|
|
495
|
+
Arithmétique des jours ouvrés d'ingénierie.
|
|
496
|
+
.Sy days-per-week:5 ,
|
|
497
|
+
.Sy days-per-month:22 ,
|
|
498
|
+
.Sy days-per-quarter:65 ,
|
|
499
|
+
.Sy days-per-year:260 .
|
|
500
|
+
.It Sy calendar:full
|
|
501
|
+
Arithmétique des jours calendaires avec week-ends.
|
|
502
|
+
.Sy days-per-week:7 ,
|
|
503
|
+
.Sy days-per-month:30 ,
|
|
504
|
+
.Sy days-per-quarter:90 ,
|
|
505
|
+
.Sy days-per-year:365 .
|
|
506
|
+
.It Sy calendar:custom
|
|
507
|
+
Valeurs fournies par l'auteur via le bloc de configuration
|
|
508
|
+
.Sy calendar .
|
|
509
|
+
.El
|
|
510
|
+
.Pp
|
|
511
|
+
Un bloc de configuration
|
|
512
|
+
.Sy calendar
|
|
513
|
+
n'a de sens que lorsque
|
|
514
|
+
.Sy roadmap
|
|
515
|
+
déclare
|
|
516
|
+
.Sy calendar:custom .
|
|
517
|
+
En mode personnalisé, les quatre champs
|
|
518
|
+
.Sy days-per-*
|
|
519
|
+
sont obligatoires\ :
|
|
520
|
+
.Bd -literal -offset indent
|
|
521
|
+
config
|
|
522
|
+
|
|
523
|
+
calendar
|
|
524
|
+
days-per-week: 6
|
|
525
|
+
days-per-month: 26
|
|
526
|
+
days-per-quarter: 78
|
|
527
|
+
days-per-year: 312
|
|
528
|
+
|
|
529
|
+
roadmap rotating-shift "Rotating Shift" calendar:custom
|
|
530
|
+
.Ed
|
|
531
|
+
.Pp
|
|
532
|
+
Les quatre entrées doivent être des entiers positifs.
|
|
533
|
+
Il n'existe pas de forme partielle.
|
|
534
|
+
.Pp
|
|
535
|
+
Chaque champ
|
|
536
|
+
.Sy days-per-*
|
|
537
|
+
est défini indépendamment\ : une durée comme
|
|
538
|
+
.Sy 1y
|
|
539
|
+
résout vers
|
|
540
|
+
.Sy days-per-year
|
|
541
|
+
directement, et non en multipliant par mois ou semaines.
|
|
542
|
+
C'est pourquoi le mode business donne
|
|
543
|
+
.Sy 1y = 260d
|
|
544
|
+
et non
|
|
545
|
+
.Sy 12 \(mu 22d = 264d .
|
|
546
|
+
.Sh SECTION ROADMAP
|
|
547
|
+
Le marqueur de section
|
|
548
|
+
.Sy roadmap
|
|
549
|
+
est obligatoire et apparaît exactement une fois par fichier.
|
|
550
|
+
Les mots-clés roadmap se trouvent au plus haut niveau (et non
|
|
551
|
+
indentés sous le marqueur) et constituent le contenu du fichier.
|
|
552
|
+
.Pp
|
|
553
|
+
La ligne de déclaration
|
|
554
|
+
.Sy roadmap
|
|
555
|
+
elle-même accepte\ :
|
|
556
|
+
.Bd -literal -offset indent
|
|
557
|
+
roadmap platform-2026 "Platform 2026" \e
|
|
558
|
+
author:"Acme" \e
|
|
559
|
+
start:2026-01-06 \e
|
|
560
|
+
scale:2w \e
|
|
561
|
+
calendar:business \e
|
|
562
|
+
logo:"./brand/acme.svg" \e
|
|
563
|
+
logo-size:md
|
|
564
|
+
.Ed
|
|
565
|
+
.Bl -tag -width "calendar:"
|
|
566
|
+
.It Sy author:
|
|
567
|
+
Chaîne libre.
|
|
568
|
+
.It Sy start:
|
|
569
|
+
Date ISO
|
|
570
|
+
.Pq Pa AAAA-MM-JJ ,
|
|
571
|
+
base de la chronologie.
|
|
572
|
+
Obligatoire si une
|
|
573
|
+
.Sy anchor
|
|
574
|
+
ou un
|
|
575
|
+
.Sy milestone
|
|
576
|
+
daté existe.
|
|
577
|
+
Toute date d'ancre et toute date de jalon doit être supérieure ou
|
|
578
|
+
égale à
|
|
579
|
+
.Sy start: .
|
|
580
|
+
.It Sy scale:
|
|
581
|
+
Littéral de durée brut pour la largeur de colonne
|
|
582
|
+
.Pq Sy 2w , Sy 1q ;
|
|
583
|
+
.Sy 1w
|
|
584
|
+
par défaut.
|
|
585
|
+
.It Sy calendar:
|
|
586
|
+
.Sy business | full | custom .
|
|
587
|
+
.Sy business
|
|
588
|
+
par défaut.
|
|
589
|
+
.It Sy logo:
|
|
590
|
+
Chemin vers un fichier de logo
|
|
591
|
+
.Pq Sy .svg , Sy .png , Sy .jpg / Sy .jpeg , Sy .webp ,
|
|
592
|
+
résolu relativement au répertoire du fichier
|
|
593
|
+
.Pa .nowline .
|
|
594
|
+
Barres obliques sur toutes les plateformes\ ; seuls les chemins
|
|
595
|
+
locaux sont acceptés.
|
|
596
|
+
La résolution des ressources a lieu au moment du rendu, pas de
|
|
597
|
+
l'analyse \(em un fichier référant un logo absent reste un
|
|
598
|
+
document valide.
|
|
599
|
+
.It Sy logo-size:
|
|
600
|
+
Préréglage de taille
|
|
601
|
+
.Pq Sy xs | sm | md | lg | xl ,
|
|
602
|
+
.Sy md
|
|
603
|
+
par défaut.
|
|
604
|
+
.El
|
|
605
|
+
.Pp
|
|
606
|
+
Douze mots-clés de la section roadmap\ :
|
|
607
|
+
.Sy swimlane , item , parallel , group ,
|
|
608
|
+
.Sy person , team , anchor , label , size , status , milestone ,
|
|
609
|
+
.Sy footnote .
|
|
610
|
+
Chacun suit le modèle universel
|
|
611
|
+
.Sy [id] ["titre"] [clé:valeur...] .
|
|
612
|
+
.Ss swimlane \(em groupe d'éléments par équipe / domaine / flux
|
|
613
|
+
.Bd -literal -offset indent
|
|
614
|
+
swimlane platform owner:platform capacity:5
|
|
615
|
+
item auth-refactor "Auth refactor" size:l after:kickoff
|
|
616
|
+
item platform-qa "Platform QA" size:s capacity:2
|
|
617
|
+
.Ed
|
|
618
|
+
.Pp
|
|
619
|
+
Éléments, blocs parallèles et groupes sont indentés en dessous.
|
|
620
|
+
Propriétés\ :
|
|
621
|
+
.Bl -tag -width "utilization-over-at"
|
|
622
|
+
.It Sy owner:
|
|
623
|
+
Identifiant de personne ou d'équipe.
|
|
624
|
+
.It Sy capacity:
|
|
625
|
+
Budget par pas de temps.
|
|
626
|
+
Entier ou décimal uniquement\ ; pas de forme en pourcentage.
|
|
627
|
+
.It Sy utilization-warn-at: , Sy utilization-over-at:
|
|
628
|
+
Seuils du soulignement d'utilisation du couloir.
|
|
629
|
+
Chacun accepte un littéral pourcentage
|
|
630
|
+
.Pq Sy 80% ,
|
|
631
|
+
un décimal positif interprété comme une fraction
|
|
632
|
+
.Pq Sy 0.8 ,
|
|
633
|
+
ou le mot
|
|
634
|
+
.Sy none
|
|
635
|
+
pour désactiver cette bande de couleur.
|
|
636
|
+
Valeurs par défaut\ :
|
|
637
|
+
.Sy 80%
|
|
638
|
+
et
|
|
639
|
+
.Sy 100% .
|
|
640
|
+
Lorsque les deux seuils numériques sont définis,
|
|
641
|
+
.Sy warn-at \(<= over-at .
|
|
642
|
+
.El
|
|
643
|
+
.Ss item \(em élément de travail
|
|
644
|
+
Les éléments vivent à l'intérieur des couloirs (ou des blocs
|
|
645
|
+
.Sy parallel /
|
|
646
|
+
.Sy group )
|
|
647
|
+
et doivent déclarer au moins l'une des propriétés
|
|
648
|
+
.Sy size:
|
|
649
|
+
ou
|
|
650
|
+
.Sy duration: .
|
|
651
|
+
Voir
|
|
652
|
+
.Sx PROPRIÉTÉS D'ÉLÉMENT
|
|
653
|
+
ci-dessous.
|
|
654
|
+
.Bd -literal -offset indent
|
|
655
|
+
swimlane platform
|
|
656
|
+
item auth-refactor "Auth refactor" size:l status:done
|
|
657
|
+
item "Quick cleanup" size:s
|
|
658
|
+
item sso size:m
|
|
659
|
+
.Ed
|
|
660
|
+
.Ss parallel \(em bloc d'exécution parallèle
|
|
661
|
+
.Sy parallel
|
|
662
|
+
exécute ses enfants en parallèle.
|
|
663
|
+
Les enfants peuvent être des éléments simples ou des groupes.
|
|
664
|
+
.Bd -literal -offset indent
|
|
665
|
+
swimlane platform
|
|
666
|
+
item auth "Auth refactor" size:l
|
|
667
|
+
parallel
|
|
668
|
+
item api-v2 "API v2" size:m
|
|
669
|
+
item sdk-update "SDK update" size:s
|
|
670
|
+
item integration "Integration" size:s
|
|
671
|
+
.Ed
|
|
672
|
+
.Pp
|
|
673
|
+
.Sy api-v2
|
|
674
|
+
et
|
|
675
|
+
.Sy sdk-update
|
|
676
|
+
démarrent en même temps (après la fin de
|
|
677
|
+
.Sy auth ) .
|
|
678
|
+
Lorsque le bloc
|
|
679
|
+
.Sy parallel
|
|
680
|
+
se termine, le frère suivant
|
|
681
|
+
.Pq Sy integration
|
|
682
|
+
attend la fin de tous les enfants parallèles (jonction implicite
|
|
683
|
+
au dédentement).
|
|
684
|
+
Un bloc
|
|
685
|
+
.Sy parallel
|
|
686
|
+
doit contenir au moins 2 enfants\ ; un parallel à un seul enfant
|
|
687
|
+
émet un avertissement.
|
|
688
|
+
.Ss group \(em paquet d'éléments séquentiels
|
|
689
|
+
.Sy group
|
|
690
|
+
regroupe des éléments en une piste séquentielle nommée.
|
|
691
|
+
À l'intérieur d'un couloir (en dehors d'un bloc parallèle), le
|
|
692
|
+
groupe est séquentiel par rapport à ses frères.
|
|
693
|
+
.Bd -literal -offset indent
|
|
694
|
+
swimlane platform
|
|
695
|
+
group api-work "API Work" labels:enterprise
|
|
696
|
+
item api-v2 "API v2" size:m
|
|
697
|
+
item api-docs "API docs" size:s
|
|
698
|
+
item deploy "Deploy" size:s
|
|
699
|
+
.Ed
|
|
700
|
+
.Pp
|
|
701
|
+
Un
|
|
702
|
+
.Sy group
|
|
703
|
+
avec
|
|
704
|
+
.Sy style: ,
|
|
705
|
+
.Sy labels:
|
|
706
|
+
ou d'autres propriétés visuelles est rendu avec une boîte
|
|
707
|
+
englobante visible et une petite pastille de titre.
|
|
708
|
+
Un
|
|
709
|
+
.Sy group
|
|
710
|
+
sans style est purement structurel \(em il ne régit que le
|
|
711
|
+
séquencement et la croissance interne, sans artefact visible.
|
|
712
|
+
.Ss anchor \(em date nommée sur la chronologie
|
|
713
|
+
.Bd -literal -offset indent
|
|
714
|
+
anchor kickoff date:2026-01-06
|
|
715
|
+
anchor code-freeze "Code Freeze" date:2026-05-01
|
|
716
|
+
.Ed
|
|
717
|
+
.Pp
|
|
718
|
+
.Sy date:
|
|
719
|
+
est obligatoire.
|
|
720
|
+
Les ancres sont référencées par
|
|
721
|
+
.Sy after:
|
|
722
|
+
et
|
|
723
|
+
.Sy before:
|
|
724
|
+
sur les éléments, blocs parallèles, groupes et jalons pour fixer
|
|
725
|
+
leur position.
|
|
726
|
+
.Ss label \(em vocabulaire d'étiquettes / chips sémantiques
|
|
727
|
+
Les étiquettes vivent dans la section roadmap pour que contenu et
|
|
728
|
+
vocabulaire cohabitent\ ; les valeurs visuelles par défaut vivent
|
|
729
|
+
dans
|
|
730
|
+
.Sy config
|
|
731
|
+
via
|
|
732
|
+
.Sy default label
|
|
733
|
+
et les blocs
|
|
734
|
+
.Sy style
|
|
735
|
+
référencés.
|
|
736
|
+
.Bd -literal -offset indent
|
|
737
|
+
label enterprise "Enterprise readiness" style:enterprise
|
|
738
|
+
label security "Security hardening" style:enterprise-red
|
|
739
|
+
label low-confidence style:risky-dotted
|
|
740
|
+
.Ed
|
|
741
|
+
.Pp
|
|
742
|
+
Une ligne
|
|
743
|
+
.Sy label
|
|
744
|
+
accepte
|
|
745
|
+
.Sy style:id
|
|
746
|
+
plus les propriétés universelles
|
|
747
|
+
.Pq Sy labels: , Sy link: , description .
|
|
748
|
+
Les propriétés de style brutes ne sont
|
|
749
|
+
.Em pas
|
|
750
|
+
autorisées sur une ligne
|
|
751
|
+
.Sy label .
|
|
752
|
+
Les étiquettes utilisées sur des éléments sans déclaration
|
|
753
|
+
.Sy label
|
|
754
|
+
correspondante restent valides\ ; elles sont rendues avec les
|
|
755
|
+
valeurs par défaut de chip de
|
|
756
|
+
.Sy default label
|
|
757
|
+
ou les valeurs système.
|
|
758
|
+
.Ss size \(em budget d'effort nommé
|
|
759
|
+
Une déclaration
|
|
760
|
+
.Sy size
|
|
761
|
+
associe une taille de t-shirt nommée à un budget d'effort
|
|
762
|
+
mono-ingénieur.
|
|
763
|
+
.Bd -literal -offset indent
|
|
764
|
+
size xs "Extra Small" effort:0.5d
|
|
765
|
+
size s "Small" effort:3d
|
|
766
|
+
size m "Medium" effort:1w
|
|
767
|
+
size l "Large" effort:2w
|
|
768
|
+
size xl "Extra Large" effort:1m
|
|
769
|
+
.Ed
|
|
770
|
+
.Pp
|
|
771
|
+
.Sy effort:
|
|
772
|
+
est obligatoire et doit être un littéral de durée brut positif
|
|
773
|
+
.Pq sensible aux décimales\ : Sy 0.5d , Sy 1.5w .
|
|
774
|
+
L'identifiant ne doit pas correspondre au motif de durée brut
|
|
775
|
+
.Sy \&\ed+(\e.\ed+)?[dwmqy]
|
|
776
|
+
ni être un simple
|
|
777
|
+
.Sy d , w , m , q , y
|
|
778
|
+
\(em cela évite l'ambiguïté au point d'appel.
|
|
779
|
+
.Pp
|
|
780
|
+
Sur les éléments, la chip de taille sur barre rend le
|
|
781
|
+
.Sy titre
|
|
782
|
+
facultatif de la taille s'il est fourni, sinon l'identifiant
|
|
783
|
+
verbatim.
|
|
784
|
+
.Sy size m "M" effort:1w
|
|
785
|
+
rend
|
|
786
|
+
.Qq M \ ;
|
|
787
|
+
.Sy size m effort:1w
|
|
788
|
+
rend
|
|
789
|
+
.Qq m .
|
|
790
|
+
.Pp
|
|
791
|
+
Les déclarations
|
|
792
|
+
.Sy size
|
|
793
|
+
doivent précéder tout élément qui les référence.
|
|
794
|
+
.Ss status \(em valeur de statut personnalisée
|
|
795
|
+
.Bd -literal -offset indent
|
|
796
|
+
status awaiting-review "Awaiting Review"
|
|
797
|
+
status in-review "In Review"
|
|
798
|
+
status deferred "Deferred"
|
|
799
|
+
.Ed
|
|
800
|
+
.Pp
|
|
801
|
+
Étend l'ensemble intégré
|
|
802
|
+
.Po
|
|
803
|
+
.Sy planned ,
|
|
804
|
+
.Sy in-progress
|
|
805
|
+
.Pq alias Sy active ,
|
|
806
|
+
.Sy done
|
|
807
|
+
.Pq alias Sy completed ,
|
|
808
|
+
.Sy at-risk ,
|
|
809
|
+
.Sy blocked
|
|
810
|
+
.Pc .
|
|
811
|
+
Les alias se canonisent à la frontière de la mise en page\ ; les
|
|
812
|
+
deux orthographes sont des entrées valides.
|
|
813
|
+
.Pp
|
|
814
|
+
Les statuts personnalisés n'ont pas de sémantique propre au-delà
|
|
815
|
+
de ce que les moteurs de production leur attribuent\ ; le DSL
|
|
816
|
+
garantit seulement que la valeur résout et peut porter un titre
|
|
817
|
+
d'affichage.
|
|
818
|
+
Les moteurs de production peuvent associer des statuts
|
|
819
|
+
personnalisés à des traitements visuels via
|
|
820
|
+
.Sy default item style:...
|
|
821
|
+
ou via des surcharges
|
|
822
|
+
.Sy style:
|
|
823
|
+
au niveau de l'entité.
|
|
824
|
+
.Pp
|
|
825
|
+
Les déclarations
|
|
826
|
+
.Sy status
|
|
827
|
+
doivent précéder toute entité qui les référence.
|
|
828
|
+
.Ss milestone \(em marqueur de réussite
|
|
829
|
+
.Bd -literal -offset indent
|
|
830
|
+
milestone v1-ga "v1 GA" date:2026-06-30
|
|
831
|
+
milestone beta "Beta" after:auth-refactor
|
|
832
|
+
milestone v1-ga "v1 GA" after:[core-api, audit-log]
|
|
833
|
+
milestone v1-ga "v1 GA" date:2026-06-30 after:[core-api, audit-log]
|
|
834
|
+
.Ed
|
|
835
|
+
.Pp
|
|
836
|
+
Au moins l'une des propriétés
|
|
837
|
+
.Sy date:
|
|
838
|
+
ou
|
|
839
|
+
.Sy after:
|
|
840
|
+
est obligatoire.
|
|
841
|
+
Avec les deux,
|
|
842
|
+
.Sy date:
|
|
843
|
+
est une cible visée, pas un plafond strict\ ; le glissement (les
|
|
844
|
+
dépendances ne convergeant pas vers la date cible) est un sujet de
|
|
845
|
+
production, pas une erreur de validation.
|
|
846
|
+
.Ss footnote \(em annotation rattachable
|
|
847
|
+
.Bd -literal -offset indent
|
|
848
|
+
footnote "Vendor dependency" on:audit-log
|
|
849
|
+
description "Blocked until vendor contract is signed."
|
|
850
|
+
|
|
851
|
+
footnote capacity-risk "Team capacity risk" on:[mobile, platform]
|
|
852
|
+
description "Both teams are understaffed through Q2."
|
|
853
|
+
.Ed
|
|
854
|
+
.Pp
|
|
855
|
+
.Sy on:
|
|
856
|
+
est obligatoire et référence un ou plusieurs identifiants
|
|
857
|
+
(élément, couloir, ancre, jalon, personne, équipe).
|
|
858
|
+
Pour plusieurs cibles, utilisez la notation entre crochets\ :
|
|
859
|
+
.Sy on:[id1, id2] .
|
|
860
|
+
Les notes de bas de page sont numérotées séquentiellement par
|
|
861
|
+
ordre du document\ ; un numéro en exposant apparaît sur chaque
|
|
862
|
+
entité à laquelle la note se rattache.
|
|
863
|
+
.Ss person et team \(em vocabulaire organisationnel
|
|
864
|
+
.Bd -literal -offset indent
|
|
865
|
+
person sam "Sam Chen" link:https://github.com/samchen
|
|
866
|
+
person jen "Jennifer Wu"
|
|
867
|
+
|
|
868
|
+
team engineering "Engineering"
|
|
869
|
+
team platform "Platform Team"
|
|
870
|
+
person sam
|
|
871
|
+
person jen
|
|
872
|
+
team mobile "Mobile Team"
|
|
873
|
+
.Ed
|
|
874
|
+
.Pp
|
|
875
|
+
Un
|
|
876
|
+
.Sy person
|
|
877
|
+
peut être déclaré au plus haut niveau de la roadmap ou imbriqué
|
|
878
|
+
dans un
|
|
879
|
+
.Sy team .
|
|
880
|
+
.Bl -tag -width "person <id>"
|
|
881
|
+
.It Sy person <id>
|
|
882
|
+
Référence simple.
|
|
883
|
+
À l'intérieur d'un
|
|
884
|
+
.Sy team
|
|
885
|
+
elle indique l'appartenance.
|
|
886
|
+
Au plus haut niveau de la roadmap c'est un
|
|
887
|
+
.No no-op
|
|
888
|
+
(l'analyseur peut émettre un avertissement).
|
|
889
|
+
.It Sy person <id> ["titre"] [propriétés]
|
|
890
|
+
Déclaration.
|
|
891
|
+
Crée la personne.
|
|
892
|
+
Si imbriquée dans un
|
|
893
|
+
.Sy team ,
|
|
894
|
+
la déclaration établit aussi l'appartenance.
|
|
895
|
+
.El
|
|
896
|
+
.Pp
|
|
897
|
+
Les identifiants de personne sont globaux dans la portée du
|
|
898
|
+
fichier fusionné, peu importe où ils sont déclarés.
|
|
899
|
+
Une personne peut être déclarée au plus une fois dans la portée
|
|
900
|
+
fusionnée\ ; les déclarations en double sont une erreur.
|
|
901
|
+
.Pp
|
|
902
|
+
L'imbrication d'un
|
|
903
|
+
.Sy team
|
|
904
|
+
dans un autre
|
|
905
|
+
.Sy team
|
|
906
|
+
est toujours une déclaration.
|
|
907
|
+
Les équipes ne peuvent pas être référencées par une ligne nue
|
|
908
|
+
.Sy team <id> .
|
|
909
|
+
.Pp
|
|
910
|
+
Tant
|
|
911
|
+
.Sy person
|
|
912
|
+
que
|
|
913
|
+
.Sy team
|
|
914
|
+
prennent en charge
|
|
915
|
+
.Sy link:
|
|
916
|
+
et la sous-directive
|
|
917
|
+
.Sy description .
|
|
918
|
+
.Sh PROPRIÉTÉS UNIVERSELLES
|
|
919
|
+
Ces propriétés sont valides sur tous les types d'entités\ :
|
|
920
|
+
éléments, couloirs, blocs parallèles, groupes, jalons, ancres,
|
|
921
|
+
personnes, équipes, étiquettes, tailles, statuts, notes de bas de
|
|
922
|
+
page.
|
|
923
|
+
.Bl -tag -width "description"
|
|
924
|
+
.It Sy labels:
|
|
925
|
+
Liste.
|
|
926
|
+
Étiquettes pour le filtrage et l'affichage.
|
|
927
|
+
.Sy labels:enterprise
|
|
928
|
+
ou
|
|
929
|
+
.Sy labels:[enterprise, security] .
|
|
930
|
+
Sur un élément, chaque étiquette est rendue comme une chiclette
|
|
931
|
+
atomique à l'intérieur de la barre.
|
|
932
|
+
.It Sy link:
|
|
933
|
+
URL nue (sans guillemets).
|
|
934
|
+
Un seul lien par entité.
|
|
935
|
+
.It Sy style:
|
|
936
|
+
Identifiant.
|
|
937
|
+
Référence unique vers un style nommé déclaré dans
|
|
938
|
+
.Sy config .
|
|
939
|
+
C'est la seule propriété visuelle autorisée sur une entité de la
|
|
940
|
+
section roadmap.
|
|
941
|
+
.It Sy description
|
|
942
|
+
Sous-directive.
|
|
943
|
+
Indentée sous l'entité.
|
|
944
|
+
Texte explicatif plus long\ :
|
|
945
|
+
.Sy description "Détails ici" .
|
|
946
|
+
.El
|
|
947
|
+
.Pp
|
|
948
|
+
.Sy Séparation contenu / production .
|
|
949
|
+
Les entités de la section roadmap ne portent que des informations
|
|
950
|
+
sémantiques, plus une référence
|
|
951
|
+
.Sy style:id
|
|
952
|
+
unique facultative.
|
|
953
|
+
Les propriétés de style brutes
|
|
954
|
+
.Po
|
|
955
|
+
.Sy bg , Sy fg , Sy text , Sy border , Sy icon , Sy shadow ,
|
|
956
|
+
.Sy font , Sy weight , Sy italic , Sy text-size , Sy padding ,
|
|
957
|
+
.Sy spacing , Sy header-height , Sy corner-radius , Sy bracket ,
|
|
958
|
+
.Sy capacity-icon , Sy timeline-position , Sy minor-grid
|
|
959
|
+
.Pc
|
|
960
|
+
ne peuvent apparaître que dans des blocs
|
|
961
|
+
.Sy style
|
|
962
|
+
et sur les lignes
|
|
963
|
+
.Sy default <entité> \(em
|
|
964
|
+
qui vivent toutes deux dans
|
|
965
|
+
.Sy config .
|
|
966
|
+
.Sh PROPRIÉTÉS D'ÉLÉMENT
|
|
967
|
+
.Sy status , owner , after
|
|
968
|
+
et
|
|
969
|
+
.Sy before
|
|
970
|
+
sont aussi valides sur les couloirs, blocs parallèles et groupes.
|
|
971
|
+
Les autres sont réservées aux éléments.
|
|
972
|
+
.Bl -tag -width "remaining"
|
|
973
|
+
.It Sy status:
|
|
974
|
+
Intégrés\ :
|
|
975
|
+
.Sy planned ,
|
|
976
|
+
.Sy in-progress
|
|
977
|
+
.Pq alias Sy active ,
|
|
978
|
+
.Sy done
|
|
979
|
+
.Pq alias Sy completed ,
|
|
980
|
+
.Sy at-risk ,
|
|
981
|
+
.Sy blocked .
|
|
982
|
+
Personnalisés\ :
|
|
983
|
+
.Sy status:awaiting-review
|
|
984
|
+
correspondant à une déclaration
|
|
985
|
+
.Sy status .
|
|
986
|
+
.It Sy owner:
|
|
987
|
+
Identifiant de personne ou d'équipe.
|
|
988
|
+
Singulier \(em un seul responsable.
|
|
989
|
+
.It Sy after:
|
|
990
|
+
Identifiant ou liste entre crochets.
|
|
991
|
+
L'entité démarre après la fin de l'entité référencée.
|
|
992
|
+
.Sy after:[a, b]
|
|
993
|
+
démarre après le dernier des terminaux.
|
|
994
|
+
Accepte des identifiants d'élément, jalon, ancre, parallel ou
|
|
995
|
+
group.
|
|
996
|
+
.It Sy before:
|
|
997
|
+
Identifiant ou liste entre crochets.
|
|
998
|
+
L'entité doit se terminer avant le début de l'entité référencée.
|
|
999
|
+
.Sy before:[a, b]
|
|
1000
|
+
se termine avant le premier des démarrants.
|
|
1001
|
+
.It Sy size:
|
|
1002
|
+
Alias de taille.
|
|
1003
|
+
.Sy size:l
|
|
1004
|
+
référence une déclaration
|
|
1005
|
+
.Sy size \ ;
|
|
1006
|
+
la durée calendaire de l'élément vaut
|
|
1007
|
+
.Sy effort \(di item_capacity
|
|
1008
|
+
.Pq Sy capacity:
|
|
1009
|
+
vaut
|
|
1010
|
+
.Sy 1
|
|
1011
|
+
si absente.
|
|
1012
|
+
Réservée aux éléments \(em non valide sur
|
|
1013
|
+
.Sy parallel
|
|
1014
|
+
ni
|
|
1015
|
+
.Sy group .
|
|
1016
|
+
.It Sy duration:
|
|
1017
|
+
Littéral de durée brut uniquement
|
|
1018
|
+
.Pq Sy 2w , Sy 3m , Sy 0.5d ;
|
|
1019
|
+
pas d'alias nommés.
|
|
1020
|
+
.Sy size:
|
|
1021
|
+
est le mécanisme d'alias.
|
|
1022
|
+
Lorsqu'elle est définie en même temps que
|
|
1023
|
+
.Sy size: ,
|
|
1024
|
+
.Sy duration:
|
|
1025
|
+
l'emporte pour la largeur de barre et le pilote de la ligne meta
|
|
1026
|
+
(la chip de taille est omise).
|
|
1027
|
+
Réservée aux éléments.
|
|
1028
|
+
.It Sy remaining:
|
|
1029
|
+
Travail restant.
|
|
1030
|
+
Deux formes équivalentes\ : pourcentage
|
|
1031
|
+
.Pq Sy remaining:30%
|
|
1032
|
+
ou littéral d'effort mono-ingénieur
|
|
1033
|
+
.Pq Sy remaining:1w , Sy remaining:0.5d .
|
|
1034
|
+
Un littéral est normalisé en pourcentage lors de la mise en page.
|
|
1035
|
+
Les deux formes sont rendues à l'identique.
|
|
1036
|
+
.Sy status:done
|
|
1037
|
+
prime.
|
|
1038
|
+
Réservée aux éléments.
|
|
1039
|
+
.It Sy capacity:
|
|
1040
|
+
Capacité concurrente consommée par cet élément pendant son
|
|
1041
|
+
exécution.
|
|
1042
|
+
Entier positif
|
|
1043
|
+
.Pq Sy capacity:2 ,
|
|
1044
|
+
décimal
|
|
1045
|
+
.Pq Sy capacity:0.5 ,
|
|
1046
|
+
ou littéral pourcentage
|
|
1047
|
+
.Pq Sy capacity:50%
|
|
1048
|
+
analysé en décimal.
|
|
1049
|
+
Réservée aux éléments.
|
|
1050
|
+
.El
|
|
1051
|
+
.Pp
|
|
1052
|
+
.Sy Propriétés obligatoires .
|
|
1053
|
+
Les déclarations
|
|
1054
|
+
.Sy item
|
|
1055
|
+
doivent inclure au moins l'une des propriétés
|
|
1056
|
+
.Sy size:
|
|
1057
|
+
ou
|
|
1058
|
+
.Sy duration: .
|
|
1059
|
+
Les déclarations
|
|
1060
|
+
.Sy anchor
|
|
1061
|
+
exigent
|
|
1062
|
+
.Sy date: .
|
|
1063
|
+
Les déclarations
|
|
1064
|
+
.Sy milestone
|
|
1065
|
+
exigent au moins l'une des propriétés
|
|
1066
|
+
.Sy date:
|
|
1067
|
+
ou
|
|
1068
|
+
.Sy after: .
|
|
1069
|
+
Les déclarations
|
|
1070
|
+
.Sy footnote
|
|
1071
|
+
exigent
|
|
1072
|
+
.Sy on: .
|
|
1073
|
+
Omettre une propriété obligatoire est une erreur de validation
|
|
1074
|
+
nommant l'entité par identifiant ou titre.
|
|
1075
|
+
.Sh CAPACITÉ
|
|
1076
|
+
.Sy capacity:
|
|
1077
|
+
est une annotation facultative qui modélise le débit par pas de
|
|
1078
|
+
temps.
|
|
1079
|
+
Couloirs et éléments peuvent tous deux la déclarer, et les deux
|
|
1080
|
+
annotations sont totalement indépendantes \(em ni l'une ni
|
|
1081
|
+
l'autre n'est requise.
|
|
1082
|
+
.Bd -literal -offset indent
|
|
1083
|
+
swimlane platform capacity:5
|
|
1084
|
+
item auth size:l capacity:2
|
|
1085
|
+
parallel
|
|
1086
|
+
item api size:m capacity:2
|
|
1087
|
+
item sdk size:m capacity:1
|
|
1088
|
+
item qa size:s capacity:50%
|
|
1089
|
+
.Ed
|
|
1090
|
+
.Pp
|
|
1091
|
+
L'unité est opaque pour le DSL\ : les auteurs décident si
|
|
1092
|
+
.Sy 5
|
|
1093
|
+
représente des ingénieurs, des points d'histoire, des ETP, des
|
|
1094
|
+
heures ou toute autre mesure
|
|
1095
|
+
.Pq même contrat d'opacité que Sy size:l jusqu'à ce qu'une déclaration Sy size lui donne du sens .
|
|
1096
|
+
.Pp
|
|
1097
|
+
Où elle peut apparaître\ :
|
|
1098
|
+
.Bl -tag -width "swimlane"
|
|
1099
|
+
.It Sy swimlane
|
|
1100
|
+
Entier ou décimal uniquement (pas de forme en pourcentage).
|
|
1101
|
+
Le budget par pas de temps du couloir.
|
|
1102
|
+
.It Sy item
|
|
1103
|
+
Entier, décimal ou littéral pourcentage.
|
|
1104
|
+
La consommation concurrente de l'élément.
|
|
1105
|
+
.It Sy parallel , Sy group
|
|
1106
|
+
Non valide \(em dérivée des enfants (somme à chaque pas de temps
|
|
1107
|
+
pour parallel\ ; passe-droit pour group).
|
|
1108
|
+
Même famille d'exclusion que
|
|
1109
|
+
.Sy size , duration , remaining .
|
|
1110
|
+
.El
|
|
1111
|
+
.Pp
|
|
1112
|
+
Capacité par défaut\ :
|
|
1113
|
+
.Bl -tag -width "Items à durée littérale"
|
|
1114
|
+
.It Sy Éléments dimensionnés
|
|
1115
|
+
.Sy size:
|
|
1116
|
+
déclarée, sans
|
|
1117
|
+
.Sy capacity:
|
|
1118
|
+
explicite \(em la capacité vaut
|
|
1119
|
+
.Sy 1
|
|
1120
|
+
par défaut, à la fois pour la dérivation de durée
|
|
1121
|
+
.Pq Sy duration = effort \(di 1 = effort
|
|
1122
|
+
et pour la comptabilité de surcharge.
|
|
1123
|
+
.It Sy Items à durée littérale
|
|
1124
|
+
.Sy duration:
|
|
1125
|
+
déclarée, sans
|
|
1126
|
+
.Sy size: ,
|
|
1127
|
+
sans
|
|
1128
|
+
.Sy capacity:
|
|
1129
|
+
explicite \(em la capacité reste indéfinie et l'élément contribue
|
|
1130
|
+
.Sy 0
|
|
1131
|
+
à la surcharge (non comptabilisé).
|
|
1132
|
+
La durée littérale donne la largeur de barre quoi qu'il arrive.
|
|
1133
|
+
.It Sy capacity:N Pq explicite
|
|
1134
|
+
L'emporte toujours pour les deux usages.
|
|
1135
|
+
.El
|
|
1136
|
+
.Pp
|
|
1137
|
+
Durée de vie\ : la capacité reste constante pendant toute la
|
|
1138
|
+
durée de l'élément.
|
|
1139
|
+
Pas de rampes en
|
|
1140
|
+
.Sy v1 .
|
|
1141
|
+
.Pp
|
|
1142
|
+
.Sy Seuils d'utilisation .
|
|
1143
|
+
Les couloirs qui déclarent
|
|
1144
|
+
.Sy capacity:
|
|
1145
|
+
peignent un soulignement d'utilisation à trois états (vert /
|
|
1146
|
+
jaune / rouge) le long du bas de la bande, basé sur la fonction
|
|
1147
|
+
de charge par pas de temps
|
|
1148
|
+
.Sy f(x) = \(*S items[i].capacity pour les éléments actifs en x .
|
|
1149
|
+
.Bl -tag -width "utilization-over-at"
|
|
1150
|
+
.It Sy utilization-warn-at:N% Pq par défaut Sy 80%
|
|
1151
|
+
À ce seuil ou au-dessus de la fraction de
|
|
1152
|
+
.Sy capacity: ,
|
|
1153
|
+
le segment est peint en
|
|
1154
|
+
.Sy jaune .
|
|
1155
|
+
.It Sy utilization-over-at:N% Pq par défaut Sy 100%
|
|
1156
|
+
À ce seuil ou au-dessus de la fraction de
|
|
1157
|
+
.Sy capacity: ,
|
|
1158
|
+
le segment est peint en
|
|
1159
|
+
.Sy rouge .
|
|
1160
|
+
.El
|
|
1161
|
+
.Pp
|
|
1162
|
+
En dessous de
|
|
1163
|
+
.Sy warn-at
|
|
1164
|
+
le segment est peint en
|
|
1165
|
+
.Sy vert .
|
|
1166
|
+
Les deux seuils acceptent la valeur littérale
|
|
1167
|
+
.Sy none
|
|
1168
|
+
pour désactiver cette bande de couleur\ :
|
|
1169
|
+
.Sy utilization-warn-at:none
|
|
1170
|
+
réduit l'indicateur à un binaire vert/rouge\ ;
|
|
1171
|
+
.Sy utilization-over-at:none
|
|
1172
|
+
supprime entièrement le rouge\ ; mettre les deux à
|
|
1173
|
+
.Sy none
|
|
1174
|
+
supprime purement et simplement le soulignement.
|
|
1175
|
+
.Sh PRÉCÉDENCE DE DIMENSIONNEMENT
|
|
1176
|
+
Lorsqu'un élément déclare à la fois
|
|
1177
|
+
.Sy size:
|
|
1178
|
+
et
|
|
1179
|
+
.Sy duration: ,
|
|
1180
|
+
le littéral
|
|
1181
|
+
.Sy duration:
|
|
1182
|
+
explicite l'emporte pour la largeur de barre et la ligne meta\ :
|
|
1183
|
+
la chip de taille n'est pas affichée (seul le littéral apparaît
|
|
1184
|
+
comme jeton pilote).
|
|
1185
|
+
.Bl -column -offset indent "size:" "duration:" "capacity:" "Durée résultante"
|
|
1186
|
+
.It Sy size: Ta Sy duration: Ta Sy capacity: Ta Durée résultante
|
|
1187
|
+
.It l Ta \(em Ta \(em Ta size.l.effort \(di 1 (p.\ ex. 2w)
|
|
1188
|
+
.It l Ta \(em Ta 2 Ta size.l.effort \(di 2 (p.\ ex. 1w)
|
|
1189
|
+
.It l Ta 2w Ta 2 Ta 2w (le littéral l'emporte\ ; pas de chip)
|
|
1190
|
+
.It \(em Ta 2w Ta 2 Ta 2w (la capacité ne divise pas un littéral)
|
|
1191
|
+
.It \(em Ta \(em Ta \(em Ta erreur de validation
|
|
1192
|
+
.El
|
|
1193
|
+
.Sh PROPRIÉTÉS DE STYLE
|
|
1194
|
+
Propriétés valides à l'intérieur d'un bloc
|
|
1195
|
+
.Sy style
|
|
1196
|
+
(et sur les lignes
|
|
1197
|
+
.Sy default <entité> )\ :
|
|
1198
|
+
.Bl -tag -width "timeline-position"
|
|
1199
|
+
.It Sy bg
|
|
1200
|
+
Couleur de fond / remplissage ou
|
|
1201
|
+
.Sy none .
|
|
1202
|
+
Nommée
|
|
1203
|
+
.Po
|
|
1204
|
+
.Sy red , blue , yellow , green , orange ,
|
|
1205
|
+
.Sy purple
|
|
1206
|
+
.Pq alias Sy violet ,
|
|
1207
|
+
.Sy gray
|
|
1208
|
+
.Pq alias Sy grey ,
|
|
1209
|
+
.Sy navy , white
|
|
1210
|
+
.Pc ,
|
|
1211
|
+
hexadécimale
|
|
1212
|
+
.Pq Sy #2563eb ,
|
|
1213
|
+
ou
|
|
1214
|
+
.Sy none
|
|
1215
|
+
(transparent).
|
|
1216
|
+
.It Sy fg
|
|
1217
|
+
Couleur de bord / contour.
|
|
1218
|
+
Nommée, hexadécimale ou
|
|
1219
|
+
.Sy none
|
|
1220
|
+
(pas de bord).
|
|
1221
|
+
.It Sy text
|
|
1222
|
+
Couleur du texte.
|
|
1223
|
+
Nommée, hexadécimale ou
|
|
1224
|
+
.Sy none
|
|
1225
|
+
(masque le texte).
|
|
1226
|
+
.It Sy border
|
|
1227
|
+
.Sy solid | dashed | dotted .
|
|
1228
|
+
.It Sy icon
|
|
1229
|
+
Identifiant ou chaîne.
|
|
1230
|
+
Identifiants intégrés
|
|
1231
|
+
.Po
|
|
1232
|
+
.Sy shield , warning , lock , plus le vocabulaire capacity-icon
|
|
1233
|
+
.Pc \ ;
|
|
1234
|
+
personnalisé\ : tout identifiant déclaré par une déclaration
|
|
1235
|
+
.Sy symbol \ ;
|
|
1236
|
+
en ligne\ : un littéral Unicode entre guillemets doubles
|
|
1237
|
+
.Pq Sy "\(rs"
|
|
1238
|
+
\(em dépend de la police.
|
|
1239
|
+
.It Sy shadow
|
|
1240
|
+
.Sy none Pq par défaut | subtle | soft | hard .
|
|
1241
|
+
.It Sy font
|
|
1242
|
+
.Sy sans Pq par défaut | serif | mono .
|
|
1243
|
+
.It Sy weight
|
|
1244
|
+
.Sy thin | light | normal Pq par défaut | bold .
|
|
1245
|
+
.It Sy italic
|
|
1246
|
+
.Sy true | false Pq par défaut .
|
|
1247
|
+
.It Sy text-size
|
|
1248
|
+
.Sy xs | sm | md Pq par défaut | lg | xl .
|
|
1249
|
+
.It Sy padding
|
|
1250
|
+
.Sy none | xs | sm | md Pq par défaut | lg | xl .
|
|
1251
|
+
.It Sy spacing
|
|
1252
|
+
.Sy none | xs | sm | md | lg | xl .
|
|
1253
|
+
La valeur par défaut varie selon l'entité.
|
|
1254
|
+
.It Sy header-height
|
|
1255
|
+
.Sy none | xs | sm | md Pq par défaut | lg | xl .
|
|
1256
|
+
Réservée à
|
|
1257
|
+
.Sy roadmap .
|
|
1258
|
+
.It Sy corner-radius
|
|
1259
|
+
.Sy none | xs | sm | md | lg | xl | full .
|
|
1260
|
+
.It Sy bracket
|
|
1261
|
+
.Sy none Pq par défaut | solid | dashed .
|
|
1262
|
+
Réservée à
|
|
1263
|
+
.Sy parallel .
|
|
1264
|
+
.It Sy capacity-icon
|
|
1265
|
+
Glyphe utilisé comme suffixe des nombres de capacité.
|
|
1266
|
+
Identifiants intégrés\ :
|
|
1267
|
+
.Sy none ,
|
|
1268
|
+
.Sy multiplier
|
|
1269
|
+
.Pq par défaut \(em "\(mu" ,
|
|
1270
|
+
.Sy person ,
|
|
1271
|
+
.Sy people ,
|
|
1272
|
+
.Sy points
|
|
1273
|
+
.Pq "\(em" ,
|
|
1274
|
+
.Sy time
|
|
1275
|
+
.Pq "\(em" .
|
|
1276
|
+
Personnalisé\ : tout identifiant
|
|
1277
|
+
.Sy symbol \ ;
|
|
1278
|
+
en ligne\ : un littéral Unicode entre guillemets doubles.
|
|
1279
|
+
.It Sy timeline-position
|
|
1280
|
+
.Sy top Pq par défaut | bottom | both .
|
|
1281
|
+
Réservée à
|
|
1282
|
+
.Sy roadmap .
|
|
1283
|
+
.Sy both
|
|
1284
|
+
réplique la bande de dates au bas du graphique.
|
|
1285
|
+
.It Sy minor-grid
|
|
1286
|
+
.Sy true | false Pq par défaut .
|
|
1287
|
+
Réservée à
|
|
1288
|
+
.Sy roadmap .
|
|
1289
|
+
Lorsque
|
|
1290
|
+
.Sy true ,
|
|
1291
|
+
trace de fines lignes de grille pointillées à chaque frontière de
|
|
1292
|
+
graduation.
|
|
1293
|
+
.El
|
|
1294
|
+
.Pp
|
|
1295
|
+
Les noms d'icône intégrés sont rendus à partir d'une bibliothèque
|
|
1296
|
+
SVG conservée et livrée avec le moteur de production, et non à
|
|
1297
|
+
partir des points de code emoji Unicode.
|
|
1298
|
+
Cela garantit un rendu visuel cohérent sur toutes les plateformes
|
|
1299
|
+
(web, CLI, exports).
|
|
1300
|
+
Les auteurs qui veulent un rendu emoji propre à la plateforme
|
|
1301
|
+
utilisent un littéral Unicode en ligne plutôt que l'identifiant
|
|
1302
|
+
nommé.
|
|
1303
|
+
.Sh GRAMMAIRE
|
|
1304
|
+
.Ss Modèle de déclaration universel
|
|
1305
|
+
Toute déclaration d'entité suit la même forme\ :
|
|
1306
|
+
.Bd -literal -offset indent
|
|
1307
|
+
mot-clé [id] ["titre"] [clé:valeur ...]
|
|
1308
|
+
.Ed
|
|
1309
|
+
.Bl -tag -width "Identifiant"
|
|
1310
|
+
.It Sy Identifiant
|
|
1311
|
+
Sans guillemets, conforme à
|
|
1312
|
+
.Sy [a-zA-Z_][a-zA-Z0-9_-]* .
|
|
1313
|
+
Sert au référencement.
|
|
1314
|
+
Facultatif \(em auto-généré à partir du titre (kebab-case) si
|
|
1315
|
+
omis.
|
|
1316
|
+
.It Sy Titre
|
|
1317
|
+
Chaîne entre guillemets doubles.
|
|
1318
|
+
Nom d'affichage lisible.
|
|
1319
|
+
Facultatif.
|
|
1320
|
+
Toujours entre guillemets doubles, même les titres d'un seul mot
|
|
1321
|
+
\(em les guillemets sont la manière dont l'analyseur distingue
|
|
1322
|
+
identifiant et titre.
|
|
1323
|
+
.El
|
|
1324
|
+
.Pp
|
|
1325
|
+
Au moins l'un des éléments
|
|
1326
|
+
.Sy id
|
|
1327
|
+
ou
|
|
1328
|
+
.Sy "titre"
|
|
1329
|
+
doit être présent.
|
|
1330
|
+
Toute autre entrée est une propriété nommée utilisant
|
|
1331
|
+
.Sy clé:valeur .
|
|
1332
|
+
.Pp
|
|
1333
|
+
La directive
|
|
1334
|
+
.Sy nowline
|
|
1335
|
+
est la seule construction sans identifiant ni titre\ ; toute autre
|
|
1336
|
+
déclaration suit ce modèle.
|
|
1337
|
+
.Ss Identifiants
|
|
1338
|
+
Les identifiants sont conformes à
|
|
1339
|
+
.Sy [a-zA-Z_][a-zA-Z0-9_-]* \(em
|
|
1340
|
+
lettres, chiffres, tirets bas et tirets, commençant par une
|
|
1341
|
+
lettre ou un tiret bas.
|
|
1342
|
+
Ils doivent être uniques sur le résultat fusionné (le fichier et
|
|
1343
|
+
toutes ses inclusions)\ ; éléments, blocs parallèles, groupes,
|
|
1344
|
+
ancres, personnes, équipes, jalons et notes de bas de page
|
|
1345
|
+
partagent un seul espace de noms.
|
|
1346
|
+
.Pp
|
|
1347
|
+
La forme idiomatique de Nowline utilise le kebab-case, mais
|
|
1348
|
+
.Sy authRefactor ,
|
|
1349
|
+
.Sy auth_refactor
|
|
1350
|
+
et
|
|
1351
|
+
.Sy MED
|
|
1352
|
+
sont également valides.
|
|
1353
|
+
.Pp
|
|
1354
|
+
Lorsqu'omis, l'analyseur en génère un en transformant le titre
|
|
1355
|
+
en kebab-case\ :
|
|
1356
|
+
.Qq Audit log v2
|
|
1357
|
+
devient
|
|
1358
|
+
.Sy audit-log-v2 .
|
|
1359
|
+
.Ss Listes
|
|
1360
|
+
Toute propriété de type liste accepte une seule valeur sans
|
|
1361
|
+
crochets ou plusieurs valeurs avec la notation entre crochets\ :
|
|
1362
|
+
.Bd -literal -offset indent
|
|
1363
|
+
labels:enterprise
|
|
1364
|
+
labels:[enterprise, security]
|
|
1365
|
+
.Ed
|
|
1366
|
+
.Pp
|
|
1367
|
+
Pas de guillemets autour des identifiants dans les listes.
|
|
1368
|
+
Séparés par des virgules, espaces facultatifs.
|
|
1369
|
+
.Ss Dépendances
|
|
1370
|
+
.Sy after:
|
|
1371
|
+
et
|
|
1372
|
+
.Sy before:
|
|
1373
|
+
acceptent chacune un seul identifiant ou une liste entre crochets.
|
|
1374
|
+
Les références peuvent viser des éléments, jalons, ancres, blocs
|
|
1375
|
+
parallèles ou groupes.
|
|
1376
|
+
.Bl -bullet -offset indent -compact
|
|
1377
|
+
.It
|
|
1378
|
+
.Sy after:id
|
|
1379
|
+
\(em cette entité démarre après la fin de l'entité référencée (ou
|
|
1380
|
+
après la date de l'ancre référencée).
|
|
1381
|
+
.It
|
|
1382
|
+
.Sy after:[id1, id2, ...]
|
|
1383
|
+
\(em démarre après la fin
|
|
1384
|
+
.Em de toutes
|
|
1385
|
+
les entités référencées (autrement dit, après la dernière des
|
|
1386
|
+
fins).
|
|
1387
|
+
.It
|
|
1388
|
+
.Sy before:id
|
|
1389
|
+
\(em cette entité doit se terminer avant le début de l'entité
|
|
1390
|
+
référencée (ou avant la date de l'ancre référencée).
|
|
1391
|
+
.It
|
|
1392
|
+
.Sy before:[id1, id2, ...]
|
|
1393
|
+
\(em se termine avant le début
|
|
1394
|
+
.Em du plus tôt
|
|
1395
|
+
des entités référencées.
|
|
1396
|
+
.El
|
|
1397
|
+
.Pp
|
|
1398
|
+
Les dépendances cycliques à travers le graphe complet (y compris
|
|
1399
|
+
chaque élément des références sous forme de liste) sont une
|
|
1400
|
+
erreur de validation.
|
|
1401
|
+
.Ss Continuation de ligne
|
|
1402
|
+
Une barre oblique inverse
|
|
1403
|
+
.Sq \e
|
|
1404
|
+
en fin de ligne signifie que la ligne suivante prolonge la même
|
|
1405
|
+
déclaration.
|
|
1406
|
+
L'indentation sur la ligne suivante est cosmétique.
|
|
1407
|
+
Valable uniquement à la fin d'une ligne de propriété \(em pas
|
|
1408
|
+
dans les chaînes ni les commentaires.
|
|
1409
|
+
Utilisez
|
|
1410
|
+
.Sq \e\e
|
|
1411
|
+
pour une barre oblique inverse littérale.
|
|
1412
|
+
.Bd -literal -offset indent
|
|
1413
|
+
item auth "Auth refactor" duration:2w status:in-progress \e
|
|
1414
|
+
owner:sam labels:[security,enterprise] \e
|
|
1415
|
+
link:https://github.com/acme/auth/issues/123 \e
|
|
1416
|
+
style:flagged
|
|
1417
|
+
.Ed
|
|
1418
|
+
.Ss Commentaires
|
|
1419
|
+
.Bd -literal -offset indent
|
|
1420
|
+
// Ceci est un commentaire d'une seule ligne
|
|
1421
|
+
|
|
1422
|
+
/* Ceci est un
|
|
1423
|
+
commentaire sur plusieurs lignes */
|
|
1424
|
+
.Ed
|
|
1425
|
+
.Sh VALIDATION
|
|
1426
|
+
L'analyseur produit des messages d'erreur clairs avec position
|
|
1427
|
+
dans le fichier et suggestions (indices
|
|
1428
|
+
.Qq vouliez-vous dire X ?
|
|
1429
|
+
par recherche floue).
|
|
1430
|
+
Les règles se groupent ainsi\ ; la prose complète vit dans
|
|
1431
|
+
.Pa specs/dsl.md .
|
|
1432
|
+
.Ss Structure
|
|
1433
|
+
.Bl -bullet -offset indent -compact
|
|
1434
|
+
.It
|
|
1435
|
+
Exactement une déclaration
|
|
1436
|
+
.Sy roadmap
|
|
1437
|
+
par fichier (sous réserve du mode
|
|
1438
|
+
.Sy include
|
|
1439
|
+
.Sy roadmap: ) .
|
|
1440
|
+
.It
|
|
1441
|
+
Tous les identifiants sont uniques sur le résultat fusionné.
|
|
1442
|
+
Le parent l'emporte en cas de collision, avec un avertissement.
|
|
1443
|
+
.It
|
|
1444
|
+
Toute entité doit avoir au moins un identifiant ou un titre (ou
|
|
1445
|
+
les deux).
|
|
1446
|
+
.It
|
|
1447
|
+
La structure du fichier doit suivre l'ordre des sections\ :
|
|
1448
|
+
directive
|
|
1449
|
+
.Sy nowline
|
|
1450
|
+
(facultative, première ligne non commentaire),
|
|
1451
|
+
.Sy include ,
|
|
1452
|
+
.Sy config ,
|
|
1453
|
+
.Sy roadmap .
|
|
1454
|
+
.It
|
|
1455
|
+
La version de la directive
|
|
1456
|
+
.Sy nowline
|
|
1457
|
+
doit correspondre à
|
|
1458
|
+
.Sy v\&\ed+ .
|
|
1459
|
+
Une version plus récente que celle prise en charge par
|
|
1460
|
+
l'analyseur est une erreur identifiant la version requise.
|
|
1461
|
+
.It
|
|
1462
|
+
Au moins un couloir est obligatoire dans le résultat fusionné.
|
|
1463
|
+
.It
|
|
1464
|
+
L'indentation doit être cohérente dans un fichier\ : espaces
|
|
1465
|
+
.Em ou
|
|
1466
|
+
tabulations, jamais les deux.
|
|
1467
|
+
Une indentation mixte est une erreur d'analyse identifiant la
|
|
1468
|
+
première ligne fautive.
|
|
1469
|
+
.It
|
|
1470
|
+
Les déclarations
|
|
1471
|
+
.Sy label ,
|
|
1472
|
+
.Sy size
|
|
1473
|
+
et
|
|
1474
|
+
.Sy status
|
|
1475
|
+
doivent apparaître dans la section roadmap.
|
|
1476
|
+
Les placer avant
|
|
1477
|
+
.Sy roadmap
|
|
1478
|
+
est une erreur.
|
|
1479
|
+
.El
|
|
1480
|
+
.Ss Références
|
|
1481
|
+
.Bl -bullet -offset indent -compact
|
|
1482
|
+
.It
|
|
1483
|
+
Tous les éléments de
|
|
1484
|
+
.Sy after: ,
|
|
1485
|
+
.Sy before:
|
|
1486
|
+
et
|
|
1487
|
+
.Sy on:
|
|
1488
|
+
doivent résoudre vers des identifiants déclarés dans la portée
|
|
1489
|
+
fusionnée.
|
|
1490
|
+
.It
|
|
1491
|
+
Une référence
|
|
1492
|
+
.Sy size:
|
|
1493
|
+
ou
|
|
1494
|
+
.Sy status:
|
|
1495
|
+
doit résoudre vers une déclaration apparaissant
|
|
1496
|
+
.Em plus tôt dans le fichier
|
|
1497
|
+
(ou dans une inclusion antérieure).
|
|
1498
|
+
Les références anticipées sont une erreur.
|
|
1499
|
+
.It
|
|
1500
|
+
Pas de dépendances cycliques dans les chaînes
|
|
1501
|
+
.Sy after / before .
|
|
1502
|
+
.El
|
|
1503
|
+
.Ss Valeurs
|
|
1504
|
+
.Bl -bullet -offset indent -compact
|
|
1505
|
+
.It
|
|
1506
|
+
Les valeurs
|
|
1507
|
+
.Sy anchor date:
|
|
1508
|
+
et celles de
|
|
1509
|
+
.Sy milestone date:
|
|
1510
|
+
datés sont des dates ISO 8601 valides
|
|
1511
|
+
.Pq Pa AAAA-MM-JJ , calendrier valide .
|
|
1512
|
+
.It
|
|
1513
|
+
Les valeurs
|
|
1514
|
+
.Sy duration:
|
|
1515
|
+
et
|
|
1516
|
+
.Sy scale:
|
|
1517
|
+
correspondent au motif de durée brut
|
|
1518
|
+
.Sy \&\ed+(\e.\ed+)?[dwmqy] .
|
|
1519
|
+
.It
|
|
1520
|
+
L'identifiant d'une déclaration
|
|
1521
|
+
.Sy size
|
|
1522
|
+
ne doit pas correspondre au motif de durée brut, ni être un
|
|
1523
|
+
simple
|
|
1524
|
+
.Sy d , w , m , q , y .
|
|
1525
|
+
.It
|
|
1526
|
+
Toute déclaration
|
|
1527
|
+
.Sy size
|
|
1528
|
+
doit spécifier
|
|
1529
|
+
.Sy effort: \ ;
|
|
1530
|
+
la valeur doit être un littéral de durée brut positif.
|
|
1531
|
+
.It
|
|
1532
|
+
.Sy capacity:
|
|
1533
|
+
sur un
|
|
1534
|
+
.Sy swimlane
|
|
1535
|
+
doit être un entier ou un décimal positif (pas de forme en
|
|
1536
|
+
pourcentage).
|
|
1537
|
+
.Sy capacity:
|
|
1538
|
+
sur un
|
|
1539
|
+
.Sy item
|
|
1540
|
+
doit être un entier, un décimal ou un littéral pourcentage
|
|
1541
|
+
positif.
|
|
1542
|
+
.Sy capacity:
|
|
1543
|
+
n'est pas valide sur
|
|
1544
|
+
.Sy parallel
|
|
1545
|
+
ni
|
|
1546
|
+
.Sy group .
|
|
1547
|
+
.It
|
|
1548
|
+
.Sy utilization-warn-at:
|
|
1549
|
+
et
|
|
1550
|
+
.Sy utilization-over-at:
|
|
1551
|
+
doivent chacune être un littéral pourcentage positif, une
|
|
1552
|
+
fraction décimale positive, ou
|
|
1553
|
+
.Sy none .
|
|
1554
|
+
Lorsque les deux seuils numériques sont définis,
|
|
1555
|
+
.Sy warn-at \(<= over-at .
|
|
1556
|
+
.It
|
|
1557
|
+
La valeur de
|
|
1558
|
+
.Sy capacity-icon:
|
|
1559
|
+
doit être un identifiant intégré
|
|
1560
|
+
.Po
|
|
1561
|
+
.Sy none , Sy multiplier , Sy person , Sy people , Sy points , Sy time
|
|
1562
|
+
.Pc ,
|
|
1563
|
+
un identifiant correspondant à une déclaration
|
|
1564
|
+
.Sy symbol
|
|
1565
|
+
en portée, ou un littéral Unicode entre guillemets doubles.
|
|
1566
|
+
Même contrat pour
|
|
1567
|
+
.Sy icon: .
|
|
1568
|
+
.It
|
|
1569
|
+
.Sy remaining:
|
|
1570
|
+
est soit un pourcentage
|
|
1571
|
+
.Pq Sy 0% \(en Sy 100%
|
|
1572
|
+
soit un littéral d'effort mono-ingénieur.
|
|
1573
|
+
Lorsque le littéral dépasse l'effort total (pourcentage calculé
|
|
1574
|
+
.Sy > 100% ) ,
|
|
1575
|
+
l'étape de mise en page émet un avertissement souple et bride la
|
|
1576
|
+
barre peinte à 100\ % restant\ ; le rendu n'est jamais bloqué.
|
|
1577
|
+
.El
|
|
1578
|
+
.Ss Calendrier
|
|
1579
|
+
.Bl -bullet -offset indent -compact
|
|
1580
|
+
.It
|
|
1581
|
+
.Sy calendar:
|
|
1582
|
+
sur
|
|
1583
|
+
.Sy roadmap
|
|
1584
|
+
doit être l'une des valeurs
|
|
1585
|
+
.Sy business , full , custom .
|
|
1586
|
+
.It
|
|
1587
|
+
Un bloc de configuration
|
|
1588
|
+
.Sy calendar
|
|
1589
|
+
n'est valide que lorsque la roadmap déclare
|
|
1590
|
+
.Sy calendar:custom .
|
|
1591
|
+
.It
|
|
1592
|
+
Lorsque
|
|
1593
|
+
.Sy calendar:custom ,
|
|
1594
|
+
les quatre entrées
|
|
1595
|
+
.Sy days-per-*
|
|
1596
|
+
sont obligatoires et doivent être des entiers positifs.
|
|
1597
|
+
.El
|
|
1598
|
+
.Ss Propriété roadmap start
|
|
1599
|
+
.Bl -bullet -offset indent -compact
|
|
1600
|
+
.It
|
|
1601
|
+
.Sy roadmap start:
|
|
1602
|
+
doit être une date ISO 8601 valide.
|
|
1603
|
+
.It
|
|
1604
|
+
Si un fichier contient une
|
|
1605
|
+
.Sy anchor
|
|
1606
|
+
ou un
|
|
1607
|
+
.Sy milestone
|
|
1608
|
+
daté,
|
|
1609
|
+
.Sy start:
|
|
1610
|
+
est obligatoire.
|
|
1611
|
+
.It
|
|
1612
|
+
Toute date d'ancre et toute date de jalon datée doit être
|
|
1613
|
+
supérieure ou égale à
|
|
1614
|
+
.Sy start: .
|
|
1615
|
+
.El
|
|
1616
|
+
.Ss Personnes et équipes
|
|
1617
|
+
.Bl -bullet -offset indent -compact
|
|
1618
|
+
.It
|
|
1619
|
+
Un
|
|
1620
|
+
.Sy person
|
|
1621
|
+
peut être déclaré au plus une fois dans la portée du fichier
|
|
1622
|
+
fusionné.
|
|
1623
|
+
Une déclaration est identifiée par la présence d'un titre ou de
|
|
1624
|
+
toute propriété nommée sur la ligne.
|
|
1625
|
+
.It
|
|
1626
|
+
Une ligne nue
|
|
1627
|
+
.Sy person <id>
|
|
1628
|
+
à l'intérieur d'un
|
|
1629
|
+
.Sy team
|
|
1630
|
+
indique l'appartenance et est valide avec ou sans déclaration
|
|
1631
|
+
séparée.
|
|
1632
|
+
.It
|
|
1633
|
+
Une ligne nue
|
|
1634
|
+
.Sy person <id>
|
|
1635
|
+
au plus haut niveau de la roadmap, sans déclaration
|
|
1636
|
+
correspondante nulle part, est un
|
|
1637
|
+
.No no-op
|
|
1638
|
+
(l'analyseur peut émettre un avertissement).
|
|
1639
|
+
.El
|
|
1640
|
+
.Ss Inclusions
|
|
1641
|
+
.Bl -bullet -offset indent -compact
|
|
1642
|
+
.It
|
|
1643
|
+
Les chemins
|
|
1644
|
+
.Sy include
|
|
1645
|
+
doivent résoudre vers un fichier
|
|
1646
|
+
.Pa .nowline
|
|
1647
|
+
existant, relatif au répertoire du fichier incluant.
|
|
1648
|
+
.It
|
|
1649
|
+
Pas d'inclusions cycliques.
|
|
1650
|
+
.It
|
|
1651
|
+
Les déclarations
|
|
1652
|
+
.Sy include
|
|
1653
|
+
apparaissent avant
|
|
1654
|
+
.Sy config
|
|
1655
|
+
et
|
|
1656
|
+
.Sy roadmap
|
|
1657
|
+
(après la directive
|
|
1658
|
+
.Sy nowline
|
|
1659
|
+
si présente).
|
|
1660
|
+
.It
|
|
1661
|
+
Un doublon d'inclusion du même fichier dans un même fichier est
|
|
1662
|
+
une erreur.
|
|
1663
|
+
.It
|
|
1664
|
+
.Sy config:
|
|
1665
|
+
doit être
|
|
1666
|
+
.Sy merge , ignore ou isolate .
|
|
1667
|
+
.Sy roadmap:
|
|
1668
|
+
doit être
|
|
1669
|
+
.Sy merge , ignore ou isolate .
|
|
1670
|
+
.It
|
|
1671
|
+
En
|
|
1672
|
+
.Sy config:isolate ,
|
|
1673
|
+
les références
|
|
1674
|
+
.Sy style:
|
|
1675
|
+
à l'intérieur du fichier isolé doivent résoudre dans la
|
|
1676
|
+
configuration propre à ce fichier.
|
|
1677
|
+
.It
|
|
1678
|
+
En
|
|
1679
|
+
.Sy roadmap:isolate ,
|
|
1680
|
+
le fichier inclus doit contenir une déclaration
|
|
1681
|
+
.Sy roadmap .
|
|
1682
|
+
.It
|
|
1683
|
+
Pour toute inclusion dont le mode
|
|
1684
|
+
.Sy roadmap:
|
|
1685
|
+
n'est pas
|
|
1686
|
+
.Sy ignore ,
|
|
1687
|
+
parent et enfant doivent s'accorder sur
|
|
1688
|
+
.Sy start: \(em
|
|
1689
|
+
les deux absents ou les deux présents avec des valeurs
|
|
1690
|
+
identiques.
|
|
1691
|
+
Une discordance est une erreur signalée sur la ligne
|
|
1692
|
+
.Sy include
|
|
1693
|
+
du parent.
|
|
1694
|
+
.El
|
|
1695
|
+
.Ss parallel et group
|
|
1696
|
+
.Bl -bullet -offset indent -compact
|
|
1697
|
+
.It
|
|
1698
|
+
.Sy parallel
|
|
1699
|
+
doit contenir au moins 2 enfants.
|
|
1700
|
+
Un parallel à un seul enfant émet un avertissement.
|
|
1701
|
+
.It
|
|
1702
|
+
.Sy group
|
|
1703
|
+
doit contenir au moins 1 enfant.
|
|
1704
|
+
.It
|
|
1705
|
+
.Sy size , duration , remaining , capacity
|
|
1706
|
+
ne sont pas valides sur
|
|
1707
|
+
.Sy parallel
|
|
1708
|
+
ni
|
|
1709
|
+
.Sy group
|
|
1710
|
+
(calculées à partir des enfants).
|
|
1711
|
+
.It
|
|
1712
|
+
.Sy parallel
|
|
1713
|
+
est valide à l'intérieur d'un swimlane ou d'un group.
|
|
1714
|
+
.Pp
|
|
1715
|
+
.Sy group
|
|
1716
|
+
est valide à l'intérieur d'un swimlane, d'un parallel ou d'un
|
|
1717
|
+
group.
|
|
1718
|
+
.El
|
|
1719
|
+
.Ss Valeurs par défaut
|
|
1720
|
+
.Bl -bullet -offset indent -compact
|
|
1721
|
+
.It
|
|
1722
|
+
Le premier argument positionnel après
|
|
1723
|
+
.Sy default
|
|
1724
|
+
doit être l'un des suivants\ :
|
|
1725
|
+
.Sy item , label , swimlane , roadmap , parallel , group ,
|
|
1726
|
+
.Sy milestone , footnote , anchor .
|
|
1727
|
+
.It
|
|
1728
|
+
Les déclarations
|
|
1729
|
+
.Sy default <entité>
|
|
1730
|
+
en double pour le même type d'entité dans un même fichier sont
|
|
1731
|
+
une erreur.
|
|
1732
|
+
.It
|
|
1733
|
+
Une déclaration
|
|
1734
|
+
.Sy default <entité>
|
|
1735
|
+
qui définit une propriété interdite
|
|
1736
|
+
.Pq voir Sx SECTION CONFIG
|
|
1737
|
+
est une erreur.
|
|
1738
|
+
.El
|
|
1739
|
+
.Ss Symboles
|
|
1740
|
+
.Bl -bullet -offset indent -compact
|
|
1741
|
+
.It
|
|
1742
|
+
Toute déclaration
|
|
1743
|
+
.Sy symbol
|
|
1744
|
+
doit spécifier une valeur
|
|
1745
|
+
.Sy unicode:"<chaîne>"
|
|
1746
|
+
non vide.
|
|
1747
|
+
.It
|
|
1748
|
+
.Sy ascii: ,
|
|
1749
|
+
si présente, doit être une chaîne entre guillemets de longueur
|
|
1750
|
+
\(<= 3 caractères ASCII.
|
|
1751
|
+
.It
|
|
1752
|
+
Un identifiant de
|
|
1753
|
+
.Sy symbol
|
|
1754
|
+
ne doit pas masquer un nom d'icône intégré.
|
|
1755
|
+
.It
|
|
1756
|
+
Une référence
|
|
1757
|
+
.Sy symbol
|
|
1758
|
+
.Pq Sy icon:NOM ou Sy capacity-icon:NOM
|
|
1759
|
+
doit résoudre vers un nom intégré ou vers une déclaration
|
|
1760
|
+
.Sy symbol
|
|
1761
|
+
antérieure.
|
|
1762
|
+
Les références anticipées sont une erreur.
|
|
1763
|
+
.El
|
|
1764
|
+
.Sh EXEMPLES
|
|
1765
|
+
Un fichier
|
|
1766
|
+
.Pa .nowline
|
|
1767
|
+
complet exerçant les principales fonctionnalités du langage\ :
|
|
1768
|
+
.Bd -literal -offset indent
|
|
1769
|
+
nowline v1
|
|
1770
|
+
|
|
1771
|
+
include "shared/teams.nowline"
|
|
1772
|
+
|
|
1773
|
+
config
|
|
1774
|
+
|
|
1775
|
+
style enterprise "Enterprise readiness"
|
|
1776
|
+
bg: blue
|
|
1777
|
+
fg: navy
|
|
1778
|
+
text: white
|
|
1779
|
+
border: solid
|
|
1780
|
+
icon: shield
|
|
1781
|
+
|
|
1782
|
+
style risky
|
|
1783
|
+
border: dashed
|
|
1784
|
+
fg: orange
|
|
1785
|
+
|
|
1786
|
+
default item status:planned shadow:subtle
|
|
1787
|
+
default label style:subtle corner-radius:full
|
|
1788
|
+
default swimlane padding:sm spacing:none
|
|
1789
|
+
|
|
1790
|
+
roadmap platform-2026 "Platform 2026" \e
|
|
1791
|
+
author:"Acme Engineering" \e
|
|
1792
|
+
logo:"./brand/acme.svg" \e
|
|
1793
|
+
start:2026-01-06 scale:2w calendar:business
|
|
1794
|
+
|
|
1795
|
+
person sam "Sam Chen" link:https://github.com/samchen
|
|
1796
|
+
person jen "Jennifer Wu"
|
|
1797
|
+
|
|
1798
|
+
team engineering "Engineering"
|
|
1799
|
+
team platform "Platform Team"
|
|
1800
|
+
person sam
|
|
1801
|
+
person jen
|
|
1802
|
+
team mobile "Mobile Team"
|
|
1803
|
+
|
|
1804
|
+
anchor kickoff date:2026-01-06
|
|
1805
|
+
anchor code-freeze "Code Freeze" date:2026-05-01
|
|
1806
|
+
anchor ga-date "GA Date" date:2026-06-01
|
|
1807
|
+
|
|
1808
|
+
size xs "Extra Small" effort:1d
|
|
1809
|
+
size s "Small" effort:3d
|
|
1810
|
+
size m "Medium" effort:1w
|
|
1811
|
+
size l "Large" effort:2w
|
|
1812
|
+
size xl "Extra Large" effort:1m
|
|
1813
|
+
|
|
1814
|
+
status awaiting-review "Awaiting Review"
|
|
1815
|
+
|
|
1816
|
+
label enterprise "Enterprise readiness" style:enterprise
|
|
1817
|
+
label security "Security hardening" style:enterprise
|
|
1818
|
+
label low-confidence style:risky
|
|
1819
|
+
|
|
1820
|
+
swimlane platform owner:platform capacity:5
|
|
1821
|
+
item auth-refactor "Auth refactor" size:l after:kickoff \e
|
|
1822
|
+
status:done owner:sam labels:enterprise capacity:3 \e
|
|
1823
|
+
link:https://github.com/acme/auth/issues/123
|
|
1824
|
+
parallel after:auth-refactor
|
|
1825
|
+
group audit-track "Audit Track" labels:security
|
|
1826
|
+
item audit-log "Audit log v2" size:xl before:code-freeze \e
|
|
1827
|
+
remaining:30% labels:[enterprise, security] capacity:2
|
|
1828
|
+
description "Comprehensive audit trail for admin actions"
|
|
1829
|
+
item audit-ui "Audit UI" size:m capacity:1
|
|
1830
|
+
item sso "SSO plugins" size:m \e
|
|
1831
|
+
labels:[enterprise, low-confidence] capacity:50%
|
|
1832
|
+
item platform-qa "Platform QA" size:s capacity:2
|
|
1833
|
+
|
|
1834
|
+
swimlane mobile owner:mobile capacity:2
|
|
1835
|
+
item offline "Offline mode" size:l after:kickoff owner:jen \e
|
|
1836
|
+
status:at-risk remaining:60% capacity:3
|
|
1837
|
+
item push-v2 "Push notifications v2" size:m owner:mobile capacity:1
|
|
1838
|
+
|
|
1839
|
+
milestone beta "Beta" after:auth-refactor
|
|
1840
|
+
milestone v1-ga "v1 GA" after:[auth-refactor, audit-log]
|
|
1841
|
+
milestone ga-launch "GA launch" date:2026-06-01 \e
|
|
1842
|
+
after:[auth-refactor, audit-log]
|
|
1843
|
+
|
|
1844
|
+
footnote "Vendor dependency" on:audit-log
|
|
1845
|
+
description "Blocked until vendor contract is signed."
|
|
1846
|
+
footnote capacity-risk "Team capacity risk" on:[mobile, platform]
|
|
1847
|
+
description "Mobile team is down to 2 engineers through Q2."
|
|
1848
|
+
.Ed
|
|
1849
|
+
.Sh VOIR AUSSI
|
|
1850
|
+
.Xr nowline 1
|
|
1851
|
+
.Pq Sy man 1 nowline
|
|
1852
|
+
.Pp
|
|
1853
|
+
Le dossier
|
|
1854
|
+
.Sy specs/
|
|
1855
|
+
du dépôt source documente la grammaire DSL en prose
|
|
1856
|
+
.Pq Pa specs/dsl.md ,
|
|
1857
|
+
le pipeline de mise en page et de production
|
|
1858
|
+
.Pq Pa specs/rendering.md ,
|
|
1859
|
+
le modèle de localisation
|
|
1860
|
+
.Pq Pa specs/localization.md
|
|
1861
|
+
et les jalons libres
|
|
1862
|
+
.Pq Pa specs/milestones.md .
|
|
1863
|
+
.Sh AUTEURS
|
|
1864
|
+
.An Lolay Aq Mt packages@lolay.com
|