@nowline/cli 0.8.6 → 0.9.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.
Files changed (89) hide show
  1. package/README.md +32 -9
  2. package/dist/cli/args.d.ts +20 -4
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +20 -0
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/help.d.ts.map +1 -1
  7. package/dist/cli/help.js +30 -2
  8. package/dist/cli/help.js.map +1 -1
  9. package/dist/cli/options.d.ts +74 -0
  10. package/dist/cli/options.d.ts.map +1 -0
  11. package/dist/cli/options.js +209 -0
  12. package/dist/cli/options.js.map +1 -0
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +2 -3
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/mcp-install.d.ts +18 -0
  17. package/dist/commands/mcp-install.d.ts.map +1 -0
  18. package/dist/commands/mcp-install.js +151 -0
  19. package/dist/commands/mcp-install.js.map +1 -0
  20. package/dist/commands/mcp.d.ts.map +1 -1
  21. package/dist/commands/mcp.js +5 -11
  22. package/dist/commands/mcp.js.map +1 -1
  23. package/dist/commands/render.d.ts +7 -0
  24. package/dist/commands/render.d.ts.map +1 -1
  25. package/dist/commands/render.js +161 -155
  26. package/dist/commands/render.js.map +1 -1
  27. package/dist/commands/serve.d.ts.map +1 -1
  28. package/dist/commands/serve.js +87 -60
  29. package/dist/commands/serve.js.map +1 -1
  30. package/dist/diagnostics/adapt.d.ts +12 -1
  31. package/dist/diagnostics/adapt.d.ts.map +1 -1
  32. package/dist/diagnostics/adapt.js +53 -1
  33. package/dist/diagnostics/adapt.js.map +1 -1
  34. package/dist/diagnostics/model.d.ts +1 -1
  35. package/dist/generated/version.d.ts +1 -1
  36. package/dist/generated/version.js +2 -2
  37. package/dist/i18n/locale.d.ts.map +1 -1
  38. package/dist/i18n/locale.js +2 -5
  39. package/dist/i18n/locale.js.map +1 -1
  40. package/dist/index.js +4 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/io/config.d.ts +1 -1
  43. package/dist/io/config.d.ts.map +1 -1
  44. package/dist/io/config.js +1 -1
  45. package/dist/io/config.js.map +1 -1
  46. package/dist/io/log.d.ts +17 -0
  47. package/dist/io/log.d.ts.map +1 -0
  48. package/dist/io/log.js +16 -0
  49. package/dist/io/log.js.map +1 -0
  50. package/dist/mcp-install/clients.d.ts +58 -0
  51. package/dist/mcp-install/clients.d.ts.map +1 -0
  52. package/dist/mcp-install/clients.js +304 -0
  53. package/dist/mcp-install/clients.js.map +1 -0
  54. package/dist/mcp-install/host.d.ts +29 -0
  55. package/dist/mcp-install/host.d.ts.map +1 -0
  56. package/dist/mcp-install/host.js +72 -0
  57. package/dist/mcp-install/host.js.map +1 -0
  58. package/dist/mcp-install/json-config.d.ts +29 -0
  59. package/dist/mcp-install/json-config.d.ts.map +1 -0
  60. package/dist/mcp-install/json-config.js +139 -0
  61. package/dist/mcp-install/json-config.js.map +1 -0
  62. package/dist/mcp-install/server-command.d.ts +26 -0
  63. package/dist/mcp-install/server-command.d.ts.map +1 -0
  64. package/dist/mcp-install/server-command.js +52 -0
  65. package/dist/mcp-install/server-command.js.map +1 -0
  66. package/man/fr/nowline.1 +246 -19
  67. package/man/fr/nowline.5 +819 -45
  68. package/man/nowline.1 +191 -18
  69. package/man/nowline.5 +764 -36
  70. package/package.json +19 -19
  71. package/src/cli/args.ts +55 -5
  72. package/src/cli/help.ts +30 -2
  73. package/src/cli/options.ts +286 -0
  74. package/src/commands/init.ts +2 -3
  75. package/src/commands/mcp-install.ts +211 -0
  76. package/src/commands/mcp.ts +8 -13
  77. package/src/commands/render.ts +198 -195
  78. package/src/commands/serve.ts +102 -74
  79. package/src/diagnostics/adapt.ts +62 -0
  80. package/src/diagnostics/model.ts +1 -1
  81. package/src/generated/version.ts +2 -2
  82. package/src/i18n/locale.ts +2 -6
  83. package/src/index.ts +3 -0
  84. package/src/io/config.ts +0 -1
  85. package/src/io/log.ts +33 -0
  86. package/src/mcp-install/clients.ts +443 -0
  87. package/src/mcp-install/host.ts +106 -0
  88. package/src/mcp-install/json-config.ts +179 -0
  89. package/src/mcp-install/server-command.ts +75 -0
package/man/fr/nowline.5 CHANGED
@@ -2,12 +2,19 @@
2
2
  .\" prennent la forme de surcouches dans packages/cli/man/<locale>/nowline.5
3
3
  .\" lorsqu'elles existent. Voir specs/localization.md.
4
4
  .\"
5
+ .\" Empreinte de la page anglaise relue pour cette traduction. Après avoir
6
+ .\" reporté une modification de la page anglaise, remplacez-la par la ligne
7
+ .\" qu'affiche packages/cli/test/man/translation-parity.test.ts.
8
+ .\" translated-from: nowline.5 sha256:a09a86faed775a5d103a5758ccdaa55085238852506ec4c61af0b8a8f991132e
9
+ .\"
5
10
  .\" 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
11
+ .\" group, person, team, anchor, label, size, status, wave, milestone, footnote,
12
+ .\" include, style, symbol, default, scale, calendar, non-working, working)
13
+ .\" ainsi que les noms de
8
14
  .\" propriétés (size:, duration:, after:, before:, on:, owner:, capacity:,
9
15
  .\" labels:, link:, style:, status:, etc.) et les valeurs intégrées
10
- .\" (planned, in-progress, done, at-risk, blocked, business, full, custom)
16
+ .\" (planned, in-progress, active, done, completed, at-risk, blocked,
17
+ .\" business, full, custom)
11
18
  .\" restent en anglais : ce sont des éléments de syntaxe acceptés par
12
19
  .\" l'analyseur, pas des mots à traduire.
13
20
  .Dd $Mdocdate$
@@ -59,13 +66,13 @@ Section
59
66
  .Sy config
60
67
  (facultative).
61
68
  Configuration de production\ : styles, valeurs par défaut, échelle,
62
- calendrier, symboles.
69
+ calendrier, symboles, jours non ouvrés et ouvrés.
63
70
  .It
64
71
  Section
65
72
  .Sy roadmap
66
73
  (obligatoire).
67
74
  Contenu\ : personnes, équipes, ancres, étiquettes, tailles, statuts,
68
- couloirs, éléments, jalons, notes de bas de page.
75
+ vagues, couloirs, éléments, jalons, notes de bas de page.
69
76
  .El
70
77
  .Pp
71
78
  .Sy config
@@ -187,16 +194,18 @@ Les déclarations
187
194
  .Sy scale ,
188
195
  .Sy style ,
189
196
  .Sy symbol ,
190
- .Sy default
197
+ .Sy default ,
198
+ .Sy calendar ,
199
+ .Sy non-working
191
200
  et
192
- .Sy calendar
201
+ .Sy working
193
202
  du fichier inclus.
194
203
  .It Sy Roadmap
195
204
  La déclaration
196
205
  .Sy roadmap
197
206
  du fichier inclus, plus tout son contenu (personnes, équipes,
198
- ancres, étiquettes, tailles, statuts, couloirs, éléments, jalons,
199
- notes de bas de page).
207
+ ancres, étiquettes, tailles, statuts, vagues, couloirs, éléments,
208
+ jalons, notes de bas de page).
200
209
  .El
201
210
  .Pp
202
211
  Modes
@@ -209,6 +218,13 @@ En cas de collision, le
209
218
  .Em parent l'emporte
210
219
  et l'analyseur émet un avertissement identifiant la définition
211
220
  masquée et son fichier source.
221
+ Une déclaration
222
+ .Sy non-working
223
+ ou
224
+ .Sy working
225
+ n'entre en collision qu'avec une déclaration du parent portant le même
226
+ mot-clé et le même nom\ ; une déclaration sans nom n'entre jamais en
227
+ collision et est toujours fusionnée.
212
228
  .It Sy ignore
213
229
  La configuration de l'enfant est entièrement abandonnée.
214
230
  Si le contenu roadmap de l'enfant est fusionné, il résout les
@@ -297,6 +313,40 @@ de fusion
297
313
  parce que
298
314
  .Sy start:
299
315
  définit la base temporelle commune.
316
+ .Pp
317
+ Les vagues ne fusionnent jamais.
318
+ Pour toute inclusion dont le mode
319
+ .Sy roadmap:
320
+ n'est pas
321
+ .Sy ignore ,
322
+ si le fichier enfant déclare un
323
+ .Sy roadmap ,
324
+ possède des couloirs ou déclare des vagues, le parent et l'enfant
325
+ doivent déclarer les mêmes vagues\ : les mêmes identifiants, dans le
326
+ même ordre, avec les mêmes bornes de départ résolues.
327
+ Les bornes sont comparées par la date qu'elles résolvent, de sorte
328
+ que
329
+ .Sy after:fy-budget
330
+ et
331
+ .Sy after:2026-02-02
332
+ concordent lorsque l'ancre tombe à cette date.
333
+ Une discordance, dans un sens comme dans l'autre, est l'erreur
334
+ .Sy NL.E0202 ,
335
+ signalée sur la ligne
336
+ .Sy include
337
+ du parent\ ; deux fichiers sans vagues passent.
338
+ Les vagues sont des barrières sur tout le canevas\ : une liste de
339
+ vagues masquée en silence déplacerait les colonnes de chaque couloir.
340
+ Lorsque identifiants, ordre et bornes concordent, un titre,
341
+ .Sy style: ,
342
+ .Sy labels: ,
343
+ .Sy link:
344
+ ou une description différents donnent l'avertissement
345
+ .Sy NL.W0701
346
+ et la définition du parent est utilisée.
347
+ Un enfant limité au vocabulaire (personnes, équipes, étiquettes,
348
+ tailles, statuts, ancres\ ; ni roadmap, ni couloirs, ni vagues) ne
349
+ participe pas.
300
350
  .Sh SECTION CONFIG
301
351
  Le marqueur de section facultatif
302
352
  .Sy config
@@ -305,14 +355,16 @@ apparaît avant
305
355
  Les mots-clés de configuration se trouvent au plus haut niveau (et
306
356
  non indentés sous le marqueur) et définissent vocabulaire de
307
357
  production, valeurs par défaut, paramètres d'axe, arithmétique des
308
- jours et symboles personnalisés.
358
+ jours, jours non ouvrés et symboles personnalisés.
309
359
  .Pp
310
- Cinq mots-clés de configuration\ :
360
+ Sept mots-clés de configuration\ :
311
361
  .Sy scale ,
312
362
  .Sy style ,
313
363
  .Sy symbol ,
314
364
  .Sy default ,
315
- .Sy calendar .
365
+ .Sy calendar ,
366
+ .Sy non-working ,
367
+ .Sy working .
316
368
  Toute entrée de configuration est facultative\ ; si
317
369
  .Sy config
318
370
  est omise, toutes les valeurs intégrées par défaut s'appliquent.
@@ -410,6 +462,14 @@ Interdites, par type d'entité\ :
410
462
  .Sy date , link , description .
411
463
  .It Sy default footnote
412
464
  .Sy on , link , description .
465
+ .It Sy chaque ligne default
466
+ .Sy wave
467
+ \(em le séquencement crée des dépendances invisibles, et il n'existe
468
+ pas de
469
+ .Sy default wave .
470
+ C'est une erreur dans une roadmap avec vagues\ ; dans une roadmap
471
+ sans vagues, la clé est ignorée avec l'avertissement
472
+ .Sy NL.W0702 .
413
473
  .El
414
474
  .Pp
415
475
  Les propriétés de style brutes
@@ -501,7 +561,7 @@ Arithmétique des jours ouvrés d'ingénierie.
501
561
  Arithmétique des jours calendaires avec week-ends.
502
562
  .Sy days-per-week:7 ,
503
563
  .Sy days-per-month:30 ,
504
- .Sy days-per-quarter:90 ,
564
+ .Sy days-per-quarter:91 ,
505
565
  .Sy days-per-year:365 .
506
566
  .It Sy calendar:custom
507
567
  Valeurs fournies par l'auteur via le bloc de configuration
@@ -543,6 +603,174 @@ C'est pourquoi le mode business donne
543
603
  .Sy 1y = 260d
544
604
  et non
545
605
  .Sy 12 \(mu 22d = 264d .
606
+ .Ss non-working et working \(em déclarations
607
+ Une déclaration
608
+ .Sy non-working
609
+ retire des jours du calendrier d'exécution\ : week-ends, jours fériés,
610
+ fermetures.
611
+ Une déclaration
612
+ .Sy working
613
+ en remet\ : un samedi de rattrapage ou un jour de récupération.
614
+ Les deux sont des mots-clés de configuration et partagent une même
615
+ forme\ :
616
+ .Bd -literal -offset indent
617
+ config
618
+
619
+ non-working weekend "Weekend" every:[fri, sat]
620
+ non-working new-year "New Year's Day" date:2027-01-01
621
+ non-working summit "Company summit" start:2026-09-14 end:2026-09-16
622
+ non-working fridays every:fri start:2026-07-01 end:2026-08-31
623
+ working crunch "Crunch Saturday" date:2026-01-10
624
+ .Ed
625
+ .Pp
626
+ L'identifiant et le titre sont tous deux facultatifs.
627
+ Les durées ne comptent que les jours ouvrés\ : un élément qui traverse
628
+ un jour non ouvré se termine plus tard, et un élément qui traverse une
629
+ exception ouvrée se termine plus tôt.
630
+ Le graphique étiquette une déclaration datée qui a un titre
631
+ .Po
632
+ .Sy date:
633
+ ou
634
+ .Sy start:
635
+ avec
636
+ .Sy end:
637
+ et sans
638
+ .Sy every:
639
+ .Pc
640
+ avec son titre et le nombre de jours ouvrés qu'elle retire, par exemple
641
+ .Dq Thanksgiving \[u00B7] 2d .
642
+ Sous
643
+ .Sy hide
644
+ l'étiquette est posée sur un trait de coupe à la jointure, et sous
645
+ .Sy show
646
+ au bord gauche de la bande grisée.
647
+ Une déclaration
648
+ .Sy working
649
+ datée qui a un titre est étiquetée aux jours qu'elle rend ouvrés, avec
650
+ son titre et le nombre de jours qu'elle ajoute, par exemple
651
+ .Dq Crunch Saturday \[u00B7] +1d ,
652
+ sans trait de coupe dans aucun des deux affichages\ ; un jour de
653
+ récupération en semaine à l'intérieur d'une fermeture datée compte.
654
+ Un titre sur une récurrence n'est pas dessiné.
655
+ Une déclaration accepte ces propriétés\ :
656
+ .Bl -tag -width "every:"
657
+ .It Sy date:
658
+ Une date ISO ou une liste de dates.
659
+ .It Sy start:
660
+ Une date ISO, incluse\ : le premier jour d'une plage, ou le jour où une
661
+ récurrence commence.
662
+ .It Sy end:
663
+ Une date ISO, incluse\ : le dernier jour d'une plage, ou le jour où une
664
+ récurrence s'arrête.
665
+ Elle ne doit pas précéder
666
+ .Sy start: .
667
+ .It Sy every:
668
+ Un jour de semaine ou une liste de
669
+ .Sy sun , mon , tue , wed , thu , fri , sat .
670
+ Une récurrence hebdomadaire.
671
+ .El
672
+ .Pp
673
+ Une déclaration a exactement l'une de ces trois formes\ :
674
+ .Sy date:
675
+ seul\ ; une plage
676
+ .Sy start:
677
+ et
678
+ .Sy end:
679
+ sans
680
+ .Sy every: \ ;
681
+ ou
682
+ .Sy every:
683
+ avec des bornes
684
+ .Sy start:
685
+ et
686
+ .Sy end:
687
+ facultatives.
688
+ Sans borne, une récurrence est sans fin et vaut chaque semaine.
689
+ .Pp
690
+ Un jour donné, la déclaration la plus précise l'emporte, et
691
+ .Sy working
692
+ l'emporte à égalité\ :
693
+ .Bl -enum -offset indent -compact
694
+ .It
695
+ une déclaration datée, soit une liste
696
+ .Sy date:
697
+ soit une plage\ ;
698
+ .It
699
+ une récurrence bornée\ ;
700
+ .It
701
+ la semaine sans fin.
702
+ .El
703
+ .Pp
704
+ L'ordre n'a jamais d'importance\ : les mêmes déclarations dans un ordre
705
+ quelconque, dans le fichier ou dans des inclusions, donnent le même
706
+ calendrier.
707
+ .Sy calendar:business
708
+ fournit une déclaration
709
+ .Sy non-working weekend
710
+ pour le samedi et le dimanche.
711
+ Une déclaration
712
+ .Sy non-working
713
+ nommée
714
+ .Sy weekend
715
+ la remplace, quel que soit le préréglage, de sorte qu'une semaine
716
+ vendredi-samedi n'exige pas de calendrier personnalisé\ ; tout autre nom
717
+ s'ajoute au préréglage.
718
+ .Pp
719
+ La semaine sans fin doit garder un jour ouvré, et
720
+ .Sy days-per-week
721
+ doit concorder avec les jours de semaine qu'elle laisse ouvrés
722
+ .Pq voir Sx VALIDATION .
723
+ Une déclaration dont une valeur ou la forme est malformée est ignorée
724
+ lors de la construction du calendrier.
725
+ Avec
726
+ .Sy config:isolate ,
727
+ les déclarations de l'enfant restent dans sa région et n'ont pas encore
728
+ d'effet sur le graphique\ : la région est tracée sur le calendrier de
729
+ l'hôte.
730
+ Le validateur ne lit que son propre fichier\ : une déclaration d'une
731
+ inclusion n'est donc pas prise en compte par les vérifications de la
732
+ semaine sans fin.
733
+ .Ss non-working: \(em affichage des jours
734
+ Avec
735
+ .Sy calendar:business ,
736
+ le week-end est non ouvré\ : les durées ne comptent que les jours ouvrés,
737
+ et le graphique masque ces jours ou les dessine.
738
+ L'affichage est une clé de style réservée à
739
+ .Sy roadmap ,
740
+ posée sur la ligne
741
+ .Sy default roadmap
742
+ (les clés de style brutes sont interdites sur la ligne
743
+ .Sy roadmap
744
+ elle-même)\ :
745
+ .Bd -literal -offset indent
746
+ config
747
+
748
+ default roadmap non-working:show
749
+ .Ed
750
+ .Bl -tag -width "show"
751
+ .It Sy hide Pq par défaut
752
+ Les jours non ouvrés n'occupent aucune largeur\ ; chaque série se réduit à
753
+ une couture.
754
+ .It Sy show
755
+ Les jours non ouvrés sont tracés à pleine largeur et ombrés.
756
+ Une barre traverse un week-end mais s'arrête à la fin de son dernier jour
757
+ ouvré, de sorte que l'écart entre des barres enchaînées reste visible.
758
+ .El
759
+ .Pp
760
+ L'affichage ne modifie jamais le calendrier d'exécution\ : les sorties
761
+ Mermaid, MS Project et XLSX sont identiques dans les deux vues.
762
+ Il peut aussi être choisi au rendu\ ; la première source qui s'applique
763
+ l'emporte\ : l'option
764
+ .Fl -non-working
765
+ (ou l'option équivalente d'une autre surface), la clé
766
+ .Sy default roadmap non-working:
767
+ du fichier, puis
768
+ .Sy hide .
769
+ Avec
770
+ .Sy calendar:full
771
+ et
772
+ .Sy calendar:custom ,
773
+ il n'y a pas de jours non ouvrés et la clé est sans effet.
546
774
  .Sh SECTION ROADMAP
547
775
  Le marqueur de section
548
776
  .Sy roadmap
@@ -593,19 +821,37 @@ résolu relativement au répertoire du fichier
593
821
  .Pa .nowline .
594
822
  Barres obliques sur toutes les plateformes\ ; seuls les chemins
595
823
  locaux sont acceptés.
824
+ Le logo est dessiné à gauche du titre dans la carte d'en-tête,
825
+ centré verticalement, et intégré à la sortie (SVG en ligne, image
826
+ matricielle en URI de données base64).
596
827
  La résolution des ressources a lieu au moment du rendu, pas de
597
828
  l'analyse \(em un fichier référant un logo absent reste un
598
829
  document valide.
830
+ Un logo absent, d'un format non pris en charge ou illisible produit
831
+ un avertissement et le graphique est rendu comme si aucun logo
832
+ n'était déclaré\ ; avec
833
+ .Fl -strict ,
834
+ c'est une erreur.
599
835
  .It Sy logo-size:
600
836
  Préréglage de taille
601
837
  .Pq Sy xs | sm | md | lg | xl ,
602
838
  .Sy md
603
839
  par défaut.
840
+ Fixe la hauteur du logo dessiné (18, 24, 36, 48 ou 72\ px)\ ; la
841
+ largeur suit les proportions du logo, si bien qu'une source plus
842
+ grande ou plus petite est mise à l'échelle pour remplir le même
843
+ emplacement.
844
+ Un logo plus large que 160\ px à cette hauteur est réduit pour tenir.
845
+ Un logo plus haut que le titre et l'auteur agrandit la carte
846
+ d'en-tête\ ;
847
+ .Sy xl
848
+ agrandit aussi la bande de 72\ px de
849
+ .Sy header-position:above .
604
850
  .El
605
851
  .Pp
606
- Douze mots-clés de la section roadmap\ :
852
+ Treize mots-clés de la section roadmap\ :
607
853
  .Sy swimlane , item , parallel , group ,
608
- .Sy person , team , anchor , label , size , status , milestone ,
854
+ .Sy person , team , anchor , label , size , status , wave , milestone ,
609
855
  .Sy footnote .
610
856
  Chacun suit le modèle universel
611
857
  .Sy [id] ["titre"] [clé:valeur...] .
@@ -700,15 +946,25 @@ swimlane platform
700
946
  .Pp
701
947
  Un
702
948
  .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.
949
+ est dessiné au-dessus et autour de ses éléments, jamais à côté\ :
950
+ un en-tête (son titre au-dessus d'un crochet qui couvre exactement
951
+ ses dates) sur un corps teinté de son
952
+ .Sy bg ,
953
+ avec une marge au-dessus et au-dessous.
954
+ .Sy style:
955
+ ne change que les couleurs.
708
956
  Un
957
+ .Sy parallel
958
+ est dessiné de la même façon, ses pistes empilées dans son corps.
959
+ Dans une roadmap avec vagues, un
709
960
  .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.
961
+ sans titre, sans
962
+ .Sy style:
963
+ et sans
964
+ .Sy labels:
965
+ qui porte
966
+ .Sy wave:
967
+ ne dessine rien\ ; il ne fait qu'attribuer l'appartenance.
712
968
  .Ss anchor \(em date nommée sur la chronologie
713
969
  .Bd -literal -offset indent
714
970
  anchor kickoff date:2026-01-06
@@ -825,6 +1081,127 @@ au niveau de l'entité.
825
1081
  Les déclarations
826
1082
  .Sy status
827
1083
  doivent précéder toute entité qui les référence.
1084
+ .Ss wave \(em barrière à travers tous les couloirs
1085
+ .Bd -literal -offset indent
1086
+ wave id ["titre"] [after:ancre|jalon|date] \e
1087
+ [style:...] [labels:...] [link:...]
1088
+ .Ed
1089
+ .Pp
1090
+ Une
1091
+ .Sy wave
1092
+ (vague) est une barrière séquentielle stricte qui traverse tous les
1093
+ couloirs\ :
1094
+ .Em aucun élément de la vague k+1 ne démarre avant que
1095
+ .Em tous les éléments de la vague k soient terminés .
1096
+ Une vague s'ouvre pour chaque couloir à l'instant où le membre le
1097
+ plus lent de la vague précédente se termine\ ; les couloirs qui
1098
+ finissent plus tôt attendent à la frontière.
1099
+ Les vagues sont déclarées une seule fois, dans l'ordre, dans la
1100
+ section roadmap, et l'ordre de déclaration est l'ordre dans le
1101
+ temps.
1102
+ Le travail rejoint une vague avec la propriété
1103
+ .Sy wave:
1104
+ sur un
1105
+ .Sy item ,
1106
+ un
1107
+ .Sy group
1108
+ ou un
1109
+ .Sy parallel .
1110
+ .Bd -literal -offset indent
1111
+ wave discover "Discover"
1112
+ wave build "Build"
1113
+ wave launch "Launch" after:fy-budget
1114
+
1115
+ swimlane web "Web"
1116
+ item research "UX research" duration:2w wave:discover
1117
+ group wave:build
1118
+ item checkout "Checkout v2" duration:3w
1119
+ item a11y "Accessibility pass" duration:1w
1120
+ item launch-page "Launch page" duration:1w wave:launch
1121
+ swimlane ops "Ops"
1122
+ item on-call "On-call and KTLO" duration:10w
1123
+
1124
+ milestone beta "Beta" after:build
1125
+ .Ed
1126
+ .Pp
1127
+ Une ligne
1128
+ .Sy wave
1129
+ accepte\ :
1130
+ .Bl -tag -width "style:"
1131
+ .It Sy id
1132
+ Obligatoire
1133
+ .Pq Sy NL.E1100 .
1134
+ Rejoint l'espace de noms d'identifiants unique et partagé.
1135
+ .It Sy titre
1136
+ Facultatif.
1137
+ L'étiquette de la bande\ ; à défaut, l'identifiant.
1138
+ .It Sy after:
1139
+ Borne de départ facultative.
1140
+ La vague ne peut pas s'ouvrir avant le plus tardif de ses éléments.
1141
+ Chaque élément doit être un identifiant d'ancre, l'identifiant d'un
1142
+ jalon qui possède
1143
+ .Sy date: ,
1144
+ ou une date ISO (au plus une date)\ ; tout autre type d'entité est
1145
+ .Sy NL.E1106 .
1146
+ Un écart entre la fin d'une vague et la borne de la suivante est
1147
+ permis.
1148
+ .It Sy style:
1149
+ Couleurs de la vague\ : le
1150
+ .Sy bg
1151
+ du style teinte la colonne de la vague,
1152
+ .Sy fg
1153
+ colore sa ligne de frontière,
1154
+ .Sy text
1155
+ son étiquette de bande et
1156
+ .Sy border
1157
+ fixe le tracé de la frontière.
1158
+ .It Sy labels: , link: , description
1159
+ Conservées dans le modèle, l'export JSON et XLSX et l'infobulle
1160
+ LSP\ ; non dessinées.
1161
+ .El
1162
+ .Pp
1163
+ Clés non autorisées sur une
1164
+ .Sy wave\ :
1165
+ .Sy before: , date: , start: , length: , duration: , size: ,
1166
+ .Sy capacity: , remaining: , wave:
1167
+ .Pq Sy NL.E1105 .
1168
+ L'étendue d'une vague provient de ses éléments.
1169
+ Pour donner une échéance à une vague, ajoutez un jalon daté
1170
+ .Sy after:<vague>\ ;
1171
+ il devient rouge lorsque la vague prend du retard.
1172
+ .Pp
1173
+ Les éléments sans vague effective sont du
1174
+ .Em travail de fond
1175
+ \(em astreinte, support, maintenance continue.
1176
+ Une barrière ne retient jamais le travail de fond et sa propre fin
1177
+ n'allonge jamais une vague, mais il suit toujours l'ordre du couloir
1178
+ et son propre
1179
+ .Sy after: .
1180
+ Le travail de fond est dessiné hachuré.
1181
+ .Pp
1182
+ Un identifiant de vague est une cible valide pour
1183
+ .Sy after: ,
1184
+ .Sy before:
1185
+ et
1186
+ .Sy on: .
1187
+ .Sy after:<vague>
1188
+ démarre au plus tôt à la fin de cette vague, et un
1189
+ .Sy milestone after:<vague>
1190
+ flottant se place sur la frontière de clôture de la vague.
1191
+ .Sy before:<vague>
1192
+ doit se terminer avant le début de la vague (souple, comme tout
1193
+ .Sy before: ) .
1194
+ .Sy on:<vague>
1195
+ rattache une note de bas de page à la vague.
1196
+ Les références à une vague ne tracent aucune flèche de dépendance.
1197
+ .Pp
1198
+ Une roadmap
1199
+ .Qq a des vagues
1200
+ lorsqu'elle déclare au moins une vague avec un identifiant valide.
1201
+ Dans une roadmap sans vagues, toute clé
1202
+ .Sy wave:
1203
+ est ignorée avec l'avertissement
1204
+ .Sy NL.W0702 .
828
1205
  .Ss milestone \(em marqueur de réussite
829
1206
  .Bd -literal -offset indent
830
1207
  milestone v1-ga "v1 GA" date:2026-06-30
@@ -854,7 +1231,7 @@ footnote capacity-risk "Team capacity risk" on:[mobile, platform]
854
1231
  .Pp
855
1232
  .Sy on:
856
1233
  est obligatoire et référence un ou plusieurs identifiants
857
- (élément, couloir, ancre, jalon, personne, équipe).
1234
+ (élément, couloir, ancre, jalon, vague, personne, équipe).
858
1235
  Pour plusieurs cibles, utilisez la notation entre crochets\ :
859
1236
  .Sy on:[id1, id2] .
860
1237
  Les notes de bas de page sont numérotées séquentiellement par
@@ -918,8 +1295,8 @@ et la sous-directive
918
1295
  .Sh PROPRIÉTÉS UNIVERSELLES
919
1296
  Ces propriétés sont valides sur tous les types d'entités\ :
920
1297
  éléments, couloirs, blocs parallèles, groupes, jalons, ancres,
921
- personnes, équipes, étiquettes, tailles, statuts, notes de bas de
922
- page.
1298
+ vagues, personnes, équipes, étiquettes, tailles, statuts, notes de
1299
+ bas de page.
923
1300
  .Bl -tag -width "description"
924
1301
  .It Sy labels:
925
1302
  Liste.
@@ -955,7 +1332,8 @@ Les propriétés de style brutes
955
1332
  .Sy bg , Sy fg , Sy text , Sy border , Sy icon , Sy shadow ,
956
1333
  .Sy font , Sy weight , Sy italic , Sy text-size , Sy padding ,
957
1334
  .Sy spacing , Sy header-height , Sy corner-radius , Sy bracket ,
958
- .Sy capacity-icon , Sy timeline-position , Sy minor-grid
1335
+ .Sy header-position , Sy capacity-icon , Sy timeline-position ,
1336
+ .Sy minor-grid , Sy non-working
959
1337
  .Pc
960
1338
  ne peuvent apparaître que dans des blocs
961
1339
  .Sy style
@@ -968,6 +1346,9 @@ qui vivent toutes deux dans
968
1346
  et
969
1347
  .Sy before
970
1348
  sont aussi valides sur les couloirs, blocs parallèles et groupes.
1349
+ .Sy wave
1350
+ est aussi valide sur les blocs parallèles et les groupes, mais pas
1351
+ sur les couloirs.
971
1352
  Les autres sont réservées aux éléments.
972
1353
  .Bl -tag -width "remaining"
973
1354
  .It Sy status:
@@ -991,13 +1372,34 @@ Identifiant ou liste entre crochets.
991
1372
  L'entité démarre après la fin de l'entité référencée.
992
1373
  .Sy after:[a, b]
993
1374
  démarre après le dernier des terminaux.
994
- Accepte des identifiants d'élément, jalon, ancre, parallel ou
995
- group.
1375
+ Accepte des identifiants d'élément, jalon, ancre, parallel, group
1376
+ ou vague.
996
1377
  .It Sy before:
997
1378
  Identifiant ou liste entre crochets.
998
1379
  L'entité doit se terminer avant le début de l'entité référencée.
999
1380
  .Sy before:[a, b]
1000
1381
  se termine avant le premier des démarrants.
1382
+ .It Sy wave:
1383
+ Identifiant de vague.
1384
+ Exactement une
1385
+ .Sy wave
1386
+ déclarée
1387
+ .Po Sy wave:build Pc Ns \ ;
1388
+ un élément appartient à une seule vague au plus.
1389
+ La vague effective d'un élément est sa propre valeur, sinon celle
1390
+ du
1391
+ .Sy group
1392
+ ou du
1393
+ .Sy parallel
1394
+ englobant le plus proche qui en porte une\ ; un couloir n'en
1395
+ transmet jamais.
1396
+ Un descendant peut répéter la valeur de son conteneur mais pas en
1397
+ changer
1398
+ .Pq Sy NL.E1102 .
1399
+ Un bloc sans
1400
+ .Sy wave:
1401
+ peut contenir des enfants de vagues différentes.
1402
+ Significative seulement dans une roadmap avec vagues.
1001
1403
  .It Sy size:
1002
1404
  Alias de taille.
1003
1405
  .Sy size:l
@@ -1255,12 +1657,34 @@ La valeur par défaut varie selon l'entité.
1255
1657
  .Sy none | xs | sm | md Pq par défaut | lg | xl .
1256
1658
  Réservée à
1257
1659
  .Sy roadmap .
1660
+ Hauteur du bandeau des dates de la frise : 16, 20, 24, 32 ou 40 px de
1661
+ .Sy xs
1662
+ à
1663
+ .Sy xl ,
1664
+ les libellés restant centrés verticalement.
1665
+ Elle s'applique au bandeau du haut comme au bandeau miroir du bas.
1666
+ .Sy none
1667
+ supprime tous les bandeaux de dates, y compris ceux que demande
1668
+ .Sy timeline-position\ ;
1669
+ avec
1670
+ .Sy bottom
1671
+ ou
1672
+ .Sy both ,
1673
+ cela déclenche l'avertissement
1674
+ .Sy NL.W0704 .
1258
1675
  .It Sy corner-radius
1259
1676
  .Sy none | xs | sm | md | lg | xl | full .
1260
1677
  .It Sy bracket
1261
- .Sy none Pq par défaut | solid | dashed .
1262
- Réservée à
1263
- .Sy parallel .
1678
+ .Sy none | solid | dashed .
1679
+ Le crochet d'en-tête au-dessus des dates d'un groupe ou d'un
1680
+ parallèle\ :
1681
+ .Sy solid
1682
+ par défaut sur un groupe,
1683
+ .Sy dashed
1684
+ sur un parallèle\ ;
1685
+ .Sy none
1686
+ le masque.
1687
+ Réservée aux conteneurs.
1264
1688
  .It Sy capacity-icon
1265
1689
  Glyphe utilisé comme suffixe des nombres de capacité.
1266
1690
  Identifiants intégrés\ :
@@ -1276,6 +1700,17 @@ Identifiants intégrés\ :
1276
1700
  Personnalisé\ : tout identifiant
1277
1701
  .Sy symbol \ ;
1278
1702
  en ligne\ : un littéral Unicode entre guillemets doubles.
1703
+ .It Sy header-position
1704
+ .Sy beside Pq par défaut | above .
1705
+ Réservée à
1706
+ .Sy roadmap .
1707
+ Emplacement de la carte d'en-tête de la roadmap (titre et auteur)\ :
1708
+ .Sy beside
1709
+ la place dans une colonne à gauche du graphique, large de 120 à 240 px,
1710
+ le titre passant à la ligne pour tenir\ ;
1711
+ .Sy above
1712
+ la place dans un bandeau pleine largeur de 72 px de haut au-dessus du
1713
+ graphique, qui s'étend alors sur toute la largeur du canevas.
1279
1714
  .It Sy timeline-position
1280
1715
  .Sy top Pq par défaut | bottom | both .
1281
1716
  Réservée à
@@ -1290,6 +1725,24 @@ Lorsque
1290
1725
  .Sy true ,
1291
1726
  trace de fines lignes de grille pointillées à chaque frontière de
1292
1727
  graduation.
1728
+ .It Sy non-working
1729
+ .Sy hide Pq par défaut | show .
1730
+ Réservée à
1731
+ .Sy roadmap ;
1732
+ à placer sur
1733
+ .Sy default roadmap .
1734
+ Avec un calendrier qui comporte des jours non ouvrés
1735
+ .Pq Sy calendar:business ,
1736
+ .Sy hide
1737
+ les réduit à une couture et
1738
+ .Sy show
1739
+ trace chaque série à pleine largeur sous forme de bande ombrée que les
1740
+ barres traversent.
1741
+ L'option
1742
+ .Fl -non-working
1743
+ de
1744
+ .Xr nowline 1
1745
+ et son équivalent sur chaque autre surface la remplacent.
1293
1746
  .El
1294
1747
  .Pp
1295
1748
  Les noms d'icône intégrés sont rendus à partir d'une bibliothèque
@@ -1341,8 +1794,8 @@ lettres, chiffres, tirets bas et tirets, commençant par une
1341
1794
  lettre ou un tiret bas.
1342
1795
  Ils doivent être uniques sur le résultat fusionné (le fichier et
1343
1796
  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.
1797
+ ancres, vagues, personnes, équipes, jalons et notes de bas de
1798
+ page partagent un seul espace de noms.
1346
1799
  .Pp
1347
1800
  La forme idiomatique de Nowline utilise le kebab-case, mais
1348
1801
  .Sy authRefactor ,
@@ -1372,7 +1825,7 @@ et
1372
1825
  .Sy before:
1373
1826
  acceptent chacune un seul identifiant ou une liste entre crochets.
1374
1827
  Les références peuvent viser des éléments, jalons, ancres, blocs
1375
- parallèles ou groupes.
1828
+ parallèles, groupes ou vagues.
1376
1829
  .Bl -bullet -offset indent -compact
1377
1830
  .It
1378
1831
  .Sy after:id
@@ -1393,6 +1846,17 @@ référencée (ou avant la date de l'ancre référencée).
1393
1846
  \(em se termine avant le début
1394
1847
  .Em du plus tôt
1395
1848
  des entités référencées.
1849
+ .It
1850
+ .Sy after:vague
1851
+ \(em démarre au plus tôt à la
1852
+ .Em fin
1853
+ de la vague.
1854
+ .Sy before:vague
1855
+ \(em doit se terminer avant le
1856
+ .Em début
1857
+ de la vague.
1858
+ .Sy on:vague
1859
+ \(em rattache une note de bas de page à la vague.
1396
1860
  .El
1397
1861
  .Pp
1398
1862
  Les dépendances cycliques à travers le graphe complet (y compris
@@ -1439,7 +1903,9 @@ par fichier (sous réserve du mode
1439
1903
  .Sy roadmap: ) .
1440
1904
  .It
1441
1905
  Tous les identifiants sont uniques sur le résultat fusionné.
1442
- Le parent l'emporte en cas de collision, avec un avertissement.
1906
+ Le parent l'emporte en cas de collision, avec un avertissement
1907
+ (sauf les vagues\ ; voir
1908
+ .Sx INCLUSIONS ) .
1443
1909
  .It
1444
1910
  Toute entité doit avoir au moins un identifiant ou un titre (ou
1445
1911
  les deux).
@@ -1469,9 +1935,10 @@ première ligne fautive.
1469
1935
  .It
1470
1936
  Les déclarations
1471
1937
  .Sy label ,
1472
- .Sy size
1473
- et
1938
+ .Sy size ,
1474
1939
  .Sy status
1940
+ et
1941
+ .Sy wave
1475
1942
  doivent apparaître dans la section roadmap.
1476
1943
  Les placer avant
1477
1944
  .Sy roadmap
@@ -1489,12 +1956,14 @@ doivent résoudre vers des identifiants déclarés dans la portée
1489
1956
  fusionnée.
1490
1957
  .It
1491
1958
  Une référence
1492
- .Sy size:
1493
- ou
1959
+ .Sy size: ,
1494
1960
  .Sy status:
1961
+ ou
1962
+ .Sy wave:
1495
1963
  doit résoudre vers une déclaration apparaissant
1496
1964
  .Em plus tôt dans le fichier
1497
- (ou dans une inclusion antérieure).
1965
+ (ou dans une inclusion antérieure\ ; les inclusions ne fournissent
1966
+ jamais de vagues).
1498
1967
  Les références anticipées sont une erreur.
1499
1968
  .It
1500
1969
  Pas de dépendances cycliques dans les chaînes
@@ -1554,6 +2023,39 @@ fraction décimale positive, ou
1554
2023
  Lorsque les deux seuils numériques sont définis,
1555
2024
  .Sy warn-at \(<= over-at .
1556
2025
  .It
2026
+ Valeurs de style, dans un bloc
2027
+ .Sy style
2028
+ ou sur une ligne
2029
+ .Sy default ,
2030
+ les clés
2031
+ .Sy bg: , fg:
2032
+ et
2033
+ .Sy text:
2034
+ prennent une couleur nommée, une valeur hexadécimale ou
2035
+ .Sy none
2036
+ .Pq Sy NL.E0801 ;
2037
+ une clé à ensemble de valeurs fixe, comme
2038
+ .Sy border: , shadow:
2039
+ ou
2040
+ .Sy font: ,
2041
+ prend l'une de ces valeurs
2042
+ .Pq Sy NL.E0802 .
2043
+ Une clé d'un bloc
2044
+ .Sy style
2045
+ qui n'est pas une propriété de style est
2046
+ .Sy NL.E0803 .
2047
+ .It
2048
+ Une propriété de style brute
2049
+ .Pq Sy bg: , Sy icon: , Sy capacity-icon: , No ...
2050
+ sur une entité de la section roadmap est
2051
+ .Sy NL.E0804 ;
2052
+ déclarez un
2053
+ .Sy style
2054
+ nommé dans
2055
+ .Sy config
2056
+ et référencez-le avec
2057
+ .Sy style:id .
2058
+ .It
1557
2059
  La valeur de
1558
2060
  .Sy capacity-icon:
1559
2061
  doit être un identifiant intégré
@@ -1566,6 +2068,57 @@ en portée, ou un littéral Unicode entre guillemets doubles.
1566
2068
  Même contrat pour
1567
2069
  .Sy icon: .
1568
2070
  .It
2071
+ La valeur de
2072
+ .Sy non-working:
2073
+ doit être
2074
+ .Sy hide
2075
+ ou
2076
+ .Sy show ,
2077
+ sur
2078
+ .Sy default roadmap
2079
+ et dans un bloc
2080
+ .Sy style .
2081
+ Toute autre valeur est
2082
+ .Sy NL.E0800
2083
+ (une erreur par valeur).
2084
+ .It
2085
+ Les clés de style propres à la roadmap
2086
+ .Sy header-height , header-position , timeline-position ,
2087
+ .Sy minor-grid
2088
+ et
2089
+ .Sy non-working
2090
+ ne s'appliquent que sur
2091
+ .Sy default roadmap
2092
+ (ou dans un bloc
2093
+ .Sy style
2094
+ référencé par la roadmap).
2095
+ Sur toute autre ligne
2096
+ .Sy default ,
2097
+ elles sont ignorées avec l'avertissement
2098
+ .Sy NL.W0703 .
2099
+ Les blocs
2100
+ .Sy style
2101
+ ne sont pas vérifiés.
2102
+ .It
2103
+ Lorsque le style de la roadmap définit
2104
+ .Sy header-height:none
2105
+ avec
2106
+ .Sy timeline-position:bottom
2107
+ ou
2108
+ .Sy both ,
2109
+ aucun bandeau de dates n'est dessiné, ce qui déclenche l'avertissement
2110
+ .Sy NL.W0704 .
2111
+ Le style se résout à partir de
2112
+ .Sy default roadmap ,
2113
+ puis du style de chaque label de la ligne
2114
+ .Sy roadmap
2115
+ (le premier label l'emportant), puis de son propre
2116
+ .Sy style: ,
2117
+ la dernière clé l'emportant.
2118
+ Seuls les styles et labels déclarés dans le même fichier sont lus\ ; un
2119
+ .Sy style:
2120
+ ou un label venant d'un include laisse la vérification silencieuse.
2121
+ .It
1569
2122
  .Sy remaining:
1570
2123
  est soit un pourcentage
1571
2124
  .Pq Sy 0% \(en Sy 100%
@@ -1594,6 +2147,65 @@ Lorsque
1594
2147
  les quatre entrées
1595
2148
  .Sy days-per-*
1596
2149
  sont obligatoires et doivent être des entiers positifs.
2150
+ .It
2151
+ Une déclaration
2152
+ .Sy non-working
2153
+ ou
2154
+ .Sy working
2155
+ a l'une de trois formes\ : un
2156
+ .Sy date:
2157
+ seul\ ;
2158
+ .Sy start:
2159
+ et
2160
+ .Sy end:
2161
+ sans
2162
+ .Sy every: \ ;
2163
+ ou
2164
+ .Sy every:
2165
+ avec des bornes facultatives
2166
+ .Pq Sy NL.E0900 .
2167
+ Ses seules clés sont
2168
+ .Sy date: , start: , end:
2169
+ et
2170
+ .Sy every:
2171
+ .Pq Sy NL.E0901 ,
2172
+ et
2173
+ .Sy start:
2174
+ et
2175
+ .Sy end:
2176
+ prennent chacun une seule date
2177
+ .Pq Sy NL.E0902 .
2178
+ .It
2179
+ Chaque date d'une déclaration de calendrier est un jour réel du
2180
+ calendrier
2181
+ .Pq Sy NL.E0405 ,
2182
+ et
2183
+ .Sy end:
2184
+ ne précède pas
2185
+ .Sy start:
2186
+ .Pq Sy NL.E0903 .
2187
+ .It
2188
+ Les valeurs de
2189
+ .Sy every:
2190
+ sont des noms de jours de semaine
2191
+ .Pq Sy NL.E0904
2192
+ et chacune apparaît au plus une fois
2193
+ .Pq Sy NL.E0905 .
2194
+ .It
2195
+ La semaine sans fin garde au moins un jour ouvré
2196
+ .Pq Sy NL.E0906 .
2197
+ .Sy days-per-week
2198
+ concorde avec les jours de semaine qu'elle laisse ouvrés\ ; un écart
2199
+ donne l'avertissement
2200
+ .Sy NL.W0705 .
2201
+ .It
2202
+ Un identifiant de déclaration est unique pour son mot-clé dans un
2203
+ fichier
2204
+ .Pq Sy NL.E0907 .
2205
+ .Sy non-working
2206
+ et
2207
+ .Sy working
2208
+ ne partagent pas d'espace de noms.
1597
2209
  .El
1598
2210
  .Ss Propriété roadmap start
1599
2211
  .Bl -bullet -offset indent -compact
@@ -1691,7 +2303,113 @@ identiques.
1691
2303
  Une discordance est une erreur signalée sur la ligne
1692
2304
  .Sy include
1693
2305
  du parent.
2306
+ .It
2307
+ Pour toute inclusion dont le mode
2308
+ .Sy roadmap:
2309
+ n'est pas
2310
+ .Sy ignore ,
2311
+ un enfant participant (qui déclare une roadmap, des couloirs ou des
2312
+ vagues) doit déclarer les mêmes vagues, dans le même ordre, avec les
2313
+ mêmes bornes de départ résolues, que le parent
2314
+ .Pq Sy NL.E0202 .
2315
+ Un titre ou une autre présentation différents donnent
2316
+ l'avertissement
2317
+ .Sy NL.W0701 .
2318
+ .It
2319
+ Avec
2320
+ .Sy config:merge ,
2321
+ une déclaration
2322
+ .Sy non-working
2323
+ ou
2324
+ .Sy working
2325
+ n'entre en collision qu'avec une déclaration du parent portant le même
2326
+ mot-clé et le même nom, et le parent l'emporte avec un avertissement\ ;
2327
+ les déclarations sans nom n'entrent jamais en collision.
2328
+ .El
2329
+ .Ss Vagues
2330
+ Ces règles s'appliquent aux fichiers qui utilisent
2331
+ .Sy wave
2332
+ ou
2333
+ .Sy wave: .
2334
+ Chacune a un code de diagnostic stable.
2335
+ .Bl -tag -width "NL.E1100" -offset indent -compact
2336
+ .It Sy NL.E1100
2337
+ Une déclaration
2338
+ .Sy wave
2339
+ sans identifiant.
2340
+ .It Sy NL.E1101
2341
+ Une valeur
2342
+ .Sy wave:
2343
+ qui n'est pas exactement une vague déclarée plus tôt\ : liste de
2344
+ deux ou plus, identifiant non déclaré, référence anticipée ou
2345
+ identifiant d'un autre type.
2346
+ .It Sy NL.E1102
2347
+ Le
2348
+ .Sy wave:
2349
+ d'un descendant diffère de celui de son conteneur.
2350
+ .It Sy NL.E1103
2351
+ L'ordre des vagues ne peut pas être réalisé\ : du travail devrait
2352
+ démarrer à la fin de sa propre vague ou après, à cause de l'ordre du
2353
+ couloir, d'une jointure
2354
+ .Sy parallel
2355
+ ou d'un
2356
+ .Sy after:
2357
+ qui désigne la propre vague de l'élément, une vague
2358
+ ultérieure ou du travail d'une vague ultérieure
2359
+ (directement ou par une chaîne d'autres travaux).
2360
+ .It Sy NL.E1104
2361
+ .Sy wave:
2362
+ sur un couloir, un jalon ou toute entité autre qu'item, group ou
2363
+ parallel.
2364
+ .It Sy NL.E1105
2365
+ Une clé non autorisée sur une vague
2366
+ .Po
2367
+ .Sy before: , date: , start: , length: , duration: , size: ,
2368
+ .Sy capacity: , remaining: , wave:
2369
+ .Pc .
2370
+ .It Sy NL.E1106
2371
+ Le
2372
+ .Sy after:
2373
+ d'une vague désigne autre chose qu'une ancre, un jalon daté ou une
2374
+ date ISO unique.
2375
+ .It Sy NL.W1100
2376
+ Un
2377
+ .Sy before:
2378
+ que la structure des vagues rend impossible à respecter.
2379
+ .It Sy NL.W1101
2380
+ Un
2381
+ .Sy after:
2382
+ ou
2383
+ .Sy before:
2384
+ que la mise en page ignore dans une roadmap avec vagues\ : référence
2385
+ anticipée, référence au group ou parallel englobant, ou référence à
2386
+ un jalon flottant.
2387
+ .It Sy NL.W0702
2388
+ .Sy wave:
2389
+ (y compris sur une ligne
2390
+ .Sy default )
2391
+ dans une roadmap sans vagues\ ; la clé est ignorée.
1694
2392
  .El
2393
+ .Pp
2394
+ L'accord des inclusions relève de
2395
+ .Sy NL.E0202
2396
+ et
2397
+ .Sy NL.W0701
2398
+ (voir
2399
+ .Sx INCLUSIONS ) .
2400
+ La mise en page ajoute quatre constats\ :
2401
+ .Sy NL.W1002
2402
+ (le solveur de barrières ne s'est pas stabilisé),
2403
+ .Sy NL.I1006
2404
+ (vagues sans éléments),
2405
+ .Sy NL.I1007
2406
+ (une vague dépasse un jalon daté dont le
2407
+ .Sy after:
2408
+ la désigne) et
2409
+ .Sy NL.I1008
2410
+ (un élément dont la date
2411
+ .Sy after:
2412
+ tombe un jour non ouvré démarre le jour ouvré suivant).
1695
2413
  .Ss parallel et group
1696
2414
  .Bl -bullet -offset indent -compact
1697
2415
  .It
@@ -1735,6 +2453,13 @@ Une déclaration
1735
2453
  qui définit une propriété interdite
1736
2454
  .Pq voir Sx SECTION CONFIG
1737
2455
  est une erreur.
2456
+ .It
2457
+ .Sy wave
2458
+ est interdite sur toute ligne
2459
+ .Sy default <entité>\ :
2460
+ erreur lorsque la roadmap a des vagues, avertissement
2461
+ .Sy NL.W0702
2462
+ lorsqu'elle n'en a pas.
1738
2463
  .El
1739
2464
  .Ss Symboles
1740
2465
  .Bl -bullet -offset indent -compact
@@ -1743,23 +2468,40 @@ Toute déclaration
1743
2468
  .Sy symbol
1744
2469
  doit spécifier une valeur
1745
2470
  .Sy unicode:"<chaîne>"
1746
- non vide.
2471
+ .Pq Sy NL.E0806 ,
2472
+ non vide
2473
+ .Pq Sy NL.E0807 .
1747
2474
  .It
1748
2475
  .Sy ascii: ,
1749
2476
  si présente, doit être une chaîne entre guillemets de longueur
1750
- \(<= 3 caractères ASCII.
2477
+ \(<= 3 caractères ASCII
2478
+ .Pq Sy NL.E0808 .
2479
+ .It
2480
+ Un
2481
+ .Sy symbol
2482
+ n'accepte que
2483
+ .Sy unicode: , ascii: , link:
2484
+ et
2485
+ .Sy description: ;
2486
+ toute autre propriété est
2487
+ .Sy NL.E0809 .
1751
2488
  .It
1752
2489
  Un identifiant de
1753
2490
  .Sy symbol
1754
- ne doit pas masquer un nom d'icône intégré.
2491
+ ne doit pas masquer un nom d'icône intégré
2492
+ .Pq Sy NL.E0805
2493
+ et doit être unique dans le fichier
2494
+ .Pq Sy NL.E0810 .
1755
2495
  .It
1756
2496
  Une référence
1757
2497
  .Sy symbol
1758
2498
  .Pq Sy icon:NOM ou Sy capacity-icon:NOM
1759
2499
  doit résoudre vers un nom intégré ou vers une déclaration
1760
2500
  .Sy symbol
1761
- antérieure.
1762
- Les références anticipées sont une erreur.
2501
+ antérieure
2502
+ .Pq Sy NL.E0811 .
2503
+ Les références anticipées sont une erreur
2504
+ .Pq Sy NL.E0812 .
1763
2505
  .El
1764
2506
  .Sh EXEMPLES
1765
2507
  Un fichier
@@ -1846,6 +2588,38 @@ footnote "Vendor dependency" on:audit-log
1846
2588
  footnote capacity-risk "Team capacity risk" on:[mobile, platform]
1847
2589
  description "Mobile team is down to 2 engineers through Q2."
1848
2590
  .Ed
2591
+ .Pp
2592
+ Une roadmap compacte avec vagues\ :
2593
+ .Bd -literal -offset indent
2594
+ nowline v1
2595
+
2596
+ roadmap checkout-relaunch "Checkout relaunch" \e
2597
+ start:2026-01-05 scale:1w calendar:full
2598
+
2599
+ wave foundations "Foundations"
2600
+ wave build "Build"
2601
+ wave launch "Launch"
2602
+
2603
+ swimlane platform "Platform"
2604
+ item auth "Auth service split" duration:4w wave:foundations
2605
+ item payments-api "Payments API v2" duration:8w wave:build
2606
+ item rate-limits "Rate limits" duration:2w wave:launch
2607
+
2608
+ swimlane web "Web"
2609
+ item ux-research "Checkout UX research" duration:2w \e
2610
+ wave:foundations
2611
+ group wave:build
2612
+ item checkout-v2 "Checkout v2" duration:4w
2613
+ item a11y "Accessibility pass" duration:2w
2614
+ item launch-page "Launch page" duration:2w wave:launch
2615
+
2616
+ // Sans wave : travail de fond, jamais retenu par une barrière.
2617
+ swimlane ops "Ops"
2618
+ item on-call "On-call and KTLO" duration:18w
2619
+
2620
+ milestone beta "Beta" after:build
2621
+ milestone ga "GA" after:launch
2622
+ .Ed
1849
2623
  .Sh VOIR AUSSI
1850
2624
  .Xr nowline 1
1851
2625
  .Pq Sy man 1 nowline