@contractspec/module.lifecycle-advisor 3.7.5 → 3.7.7

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/dist/index.js CHANGED
@@ -1,9 +1,4 @@
1
1
  // @bun
2
- // src/recommendations/recommendation-engine.ts
3
- import {
4
- LIFECYCLE_STAGE_META
5
- } from "@contractspec/lib.lifecycle";
6
-
7
2
  // src/data/stage-playbooks.ts
8
3
  import { LifecycleStage } from "@contractspec/lib.lifecycle";
9
4
 
@@ -347,670 +342,670 @@ var enMessages = defineTranslation({
347
342
  }
348
343
  });
349
344
 
350
- // src/i18n/catalogs/fr.ts
345
+ // src/i18n/catalogs/es.ts
351
346
  import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
352
- var frMessages = defineTranslation2({
347
+ var esMessages = defineTranslation2({
353
348
  meta: {
354
349
  key: "lifecycle-advisor.messages",
355
350
  version: "1.0.0",
356
351
  domain: "lifecycle-advisor",
357
- description: "Playbook, ceremony, library, and engine strings (French)",
352
+ description: "Playbook, ceremony, library, and engine strings (Spanish)",
358
353
  owners: ["platform"],
359
354
  stability: "experimental"
360
355
  },
361
- locale: "fr",
356
+ locale: "es",
362
357
  fallback: "en",
363
358
  messages: {
364
359
  "playbook.stage0.focus.0": {
365
- value: "D\xE9couverte",
366
- description: "Stage 0 focus area: Discovery"
360
+ value: "Descubrimiento",
361
+ description: "Stage 0 focus area: discovery research"
367
362
  },
368
363
  "playbook.stage0.focus.1": {
369
- value: "Clart\xE9 du probl\xE8me",
370
- description: "Stage 0 focus area: Problem clarity"
364
+ value: "Claridad del problema",
365
+ description: "Stage 0 focus area: sharpening the problem definition"
371
366
  },
372
367
  "playbook.stage0.focus.2": {
373
368
  value: "Persona",
374
- description: "Stage 0 focus area: Persona"
369
+ description: "Stage 0 focus area: identifying the target persona"
375
370
  },
376
371
  "playbook.stage1.focus.0": {
377
- value: "Prototype",
378
- description: "Stage 1 focus area: Prototype"
372
+ value: "Prototipo",
373
+ description: "Stage 1 focus area: building a prototype"
379
374
  },
380
375
  "playbook.stage1.focus.1": {
381
- value: "Retours",
382
- description: "Stage 1 focus area: Feedback"
376
+ value: "Retroalimentaci\xF3n",
377
+ description: "Stage 1 focus area: gathering user feedback"
383
378
  },
384
379
  "playbook.stage1.focus.2": {
385
- value: "Preuve de valeur",
386
- description: "Stage 1 focus area: Value proof"
380
+ value: "Prueba de valor",
381
+ description: "Stage 1 focus area: proving the value proposition"
387
382
  },
388
383
  "playbook.stage2.focus.0": {
389
- value: "Activation",
390
- description: "Stage 2 focus area: Activation"
384
+ value: "Activaci\xF3n",
385
+ description: "Stage 2 focus area: user activation"
391
386
  },
392
387
  "playbook.stage2.focus.1": {
393
- value: "T\xE9l\xE9m\xE9trie",
394
- description: "Stage 2 focus area: Telemetry"
388
+ value: "Telemetr\xEDa",
389
+ description: "Stage 2 focus area: usage telemetry"
395
390
  },
396
391
  "playbook.stage2.focus.2": {
397
- value: "Retours",
398
- description: "Stage 2 focus area: Feedback"
392
+ value: "Retroalimentaci\xF3n",
393
+ description: "Stage 2 focus area: continuous user feedback"
399
394
  },
400
395
  "playbook.stage3.focus.0": {
401
- value: "R\xE9tention",
402
- description: "Stage 3 focus area: Retention"
396
+ value: "Retenci\xF3n",
397
+ description: "Stage 3 focus area: user retention"
403
398
  },
404
399
  "playbook.stage3.focus.1": {
405
- value: "Fiabilit\xE9",
406
- description: "Stage 3 focus area: Reliability"
400
+ value: "Fiabilidad",
401
+ description: "Stage 3 focus area: product reliability"
407
402
  },
408
403
  "playbook.stage3.focus.2": {
409
- value: "R\xE9cit",
410
- description: "Stage 3 focus area: Story"
404
+ value: "Historia",
405
+ description: "Stage 3 focus area: building the narrative"
411
406
  },
412
407
  "playbook.stage4.focus.0": {
413
- value: "Syst\xE8mes",
414
- description: "Stage 4 focus area: Systems"
408
+ value: "Sistemas",
409
+ description: "Stage 4 focus area: scalable systems"
415
410
  },
416
411
  "playbook.stage4.focus.1": {
417
- value: "Boucles de croissance",
418
- description: "Stage 4 focus area: Growth loops"
412
+ value: "Bucles de crecimiento",
413
+ description: "Stage 4 focus area: repeatable growth loops"
419
414
  },
420
415
  "playbook.stage4.focus.2": {
421
- value: "Sp\xE9cialisation",
422
- description: "Stage 4 focus area: Specialization"
416
+ value: "Especializaci\xF3n",
417
+ description: "Stage 4 focus area: team specialization"
423
418
  },
424
419
  "playbook.stage5.focus.0": {
425
- value: "Partenaires",
426
- description: "Stage 5 focus area: Partners"
420
+ value: "Socios",
421
+ description: "Stage 5 focus area: partner ecosystem"
427
422
  },
428
423
  "playbook.stage5.focus.1": {
429
424
  value: "APIs",
430
- description: "Stage 5 focus area: APIs"
425
+ description: "Stage 5 focus area: platform APIs"
431
426
  },
432
427
  "playbook.stage5.focus.2": {
433
- value: "Paris d'expansion",
434
- description: "Stage 5 focus area: Expansion bets"
428
+ value: "Apuestas de expansi\xF3n",
429
+ description: "Stage 5 focus area: expansion experiments"
435
430
  },
436
431
  "playbook.stage6.focus.0": {
437
- value: "Optimisation",
438
- description: "Stage 6 focus area: Optimization"
432
+ value: "Optimizaci\xF3n",
433
+ description: "Stage 6 focus area: operational optimization"
439
434
  },
440
435
  "playbook.stage6.focus.1": {
441
- value: "Renouvellement",
442
- description: "Stage 6 focus area: Renewal"
436
+ value: "Renovaci\xF3n",
437
+ description: "Stage 6 focus area: product renewal"
443
438
  },
444
439
  "playbook.stage6.focus.2": {
445
- value: "Portefeuille",
446
- description: "Stage 6 focus area: Portfolio"
440
+ value: "Portafolio",
441
+ description: "Stage 6 focus area: portfolio management"
447
442
  },
448
443
  "playbook.stage0.action0.title": {
449
- value: "Mener un sprint d'entretiens de 5 jours",
450
- description: "Stage 0 action 0 title"
444
+ value: "Realizar un sprint de entrevistas de 5 d\xEDas",
445
+ description: "Action title for stage 0 interview sprint"
451
446
  },
452
447
  "playbook.stage0.action0.description": {
453
- value: "Planifier au moins 5 entretiens cons\xE9cutifs et capturer les citations brutes.",
454
- description: "Stage 0 action 0 description"
448
+ value: "Programar al menos 5 entrevistas consecutivas y capturar citas sin editar.",
449
+ description: "Action description for stage 0 interview sprint"
455
450
  },
456
451
  "playbook.stage0.action1.title": {
457
- value: "R\xE9diger l'histoire du probl\xE8me",
458
- description: "Stage 0 action 1 title"
452
+ value: "Redactar la historia del problema",
453
+ description: "Action title for stage 0 problem narrative"
459
454
  },
460
455
  "playbook.stage0.action1.description": {
461
- value: "R\xE9sumer la douleur en un paragraphe que vous pouvez r\xE9p\xE9ter aux partenaires.",
462
- description: "Stage 0 action 1 description"
456
+ value: "Resumir el dolor en un p\xE1rrafo que puedas repetir a los socios.",
457
+ description: "Action description for stage 0 problem narrative"
463
458
  },
464
459
  "playbook.stage1.action0.title": {
465
- value: "Boucle de retours sur le prototype",
466
- description: "Stage 1 action 0 title"
460
+ value: "Ciclo de retroalimentaci\xF3n del prototipo",
461
+ description: "Action title for stage 1 prototype iteration"
467
462
  },
468
463
  "playbook.stage1.action0.description": {
469
- value: "Livrer un prototype basse fid\xE9lit\xE9 et recueillir 3 tours de r\xE9actions.",
470
- description: "Stage 1 action 0 description"
464
+ value: "Entregar un prototipo de baja fidelidad y recopilar 3 rondas de reacciones.",
465
+ description: "Action description for stage 1 prototype iteration"
471
466
  },
472
467
  "playbook.stage1.action1.title": {
473
- value: "Capturer les signaux de recommandation",
474
- description: "Stage 1 action 1 title"
468
+ value: "Capturar se\xF1ales de recomendaci\xF3n",
469
+ description: "Action title for stage 1 referral tracking"
475
470
  },
476
471
  "playbook.stage1.action1.description": {
477
- value: "Demander \xE0 chaque testeur qui d'autre devrait voir la d\xE9mo.",
478
- description: "Stage 1 action 1 description"
472
+ value: "Preguntar a cada tester qui\xE9n m\xE1s deber\xEDa ver la demo.",
473
+ description: "Action description for stage 1 referral tracking"
479
474
  },
480
475
  "playbook.stage2.action0.title": {
481
- value: "D\xE9finir la checklist d'activation",
482
- description: "Stage 2 action 0 title"
476
+ value: "Definir lista de verificaci\xF3n de activaci\xF3n",
477
+ description: "Action title for stage 2 activation definition"
483
478
  },
484
479
  "playbook.stage2.action0.description": {
485
- value: "Documenter les 3 \xE9tapes que les utilisateurs doivent terminer pour obtenir de la valeur.",
486
- description: "Stage 2 action 0 description"
480
+ value: "Documentar los 3 pasos que los usuarios deben completar para obtener valor.",
481
+ description: "Action description for stage 2 activation definition"
487
482
  },
488
483
  "playbook.stage2.action1.title": {
489
- value: "Synchronisation hebdomadaire avec les utilisateurs",
490
- description: "Stage 2 action 1 title"
484
+ value: "Sincronizaci\xF3n semanal con usuarios",
485
+ description: "Action title for stage 2 user communication"
491
486
  },
492
487
  "playbook.stage2.action1.description": {
493
- value: "Organiser un appel r\xE9current avec vos 5 testeurs les plus actifs.",
494
- description: "Stage 2 action 1 description"
488
+ value: "Organizar una llamada recurrente con tus 5 testers m\xE1s activos.",
489
+ description: "Action description for stage 2 user communication"
495
490
  },
496
491
  "playbook.stage3.action0.title": {
497
- value: "Mener une \xE9tude de r\xE9tention",
498
- description: "Stage 3 action 0 title"
492
+ value: "Realizar un estudio de retenci\xF3n",
493
+ description: "Action title for stage 3 retention analysis"
499
494
  },
500
495
  "playbook.stage3.action0.description": {
501
- value: "Interviewer 3 utilisateurs retenus et publier leurs m\xE9triques avant/apr\xE8s.",
502
- description: "Stage 3 action 0 description"
496
+ value: "Entrevistar a 3 usuarios retenidos y publicar sus m\xE9tricas antes/despu\xE9s.",
497
+ description: "Action description for stage 3 retention analysis"
503
498
  },
504
499
  "playbook.stage3.action1.title": {
505
- value: "Revue l\xE9g\xE8re d'incidents",
506
- description: "Stage 3 action 1 title"
500
+ value: "Revisi\xF3n ligera de incidentes",
501
+ description: "Action title for stage 3 reliability review"
507
502
  },
508
503
  "playbook.stage3.action1.description": {
509
- value: "Examiner les 2 derniers incidents de fiabilit\xE9 et capturer les correctifs.",
510
- description: "Stage 3 action 1 description"
504
+ value: "Revisar los \xFAltimos 2 problemas de fiabilidad y capturar las correcciones.",
505
+ description: "Action description for stage 3 reliability review"
511
506
  },
512
507
  "playbook.stage4.action0.title": {
513
- value: "Codifier une boucle de croissance",
514
- description: "Stage 4 action 0 title"
508
+ value: "Codificar un bucle de crecimiento",
509
+ description: "Action title for stage 4 growth loop setup"
515
510
  },
516
511
  "playbook.stage4.action0.description": {
517
- value: "Choisir une boucle (SEO, recommandations, outbound) et documenter les responsables + entr\xE9es.",
518
- description: "Stage 4 action 0 description"
512
+ value: "Elegir un bucle (SEO, referencias, outbound) y documentar responsables + entradas.",
513
+ description: "Action description for stage 4 growth loop setup"
519
514
  },
520
515
  "playbook.stage4.action1.title": {
521
- value: "Cr\xE9er la carte de recrutement",
522
- description: "Stage 4 action 1 title"
516
+ value: "Crear mapa de contrataci\xF3n",
517
+ description: "Action title for stage 4 hiring plan"
523
518
  },
524
519
  "playbook.stage4.action1.description": {
525
- value: "Lister les r\xF4les sp\xE9cialis\xE9s n\xE9cessaires pour les 2 prochains trimestres.",
526
- description: "Stage 4 action 1 description"
520
+ value: "Listar los roles especializados necesarios para los pr\xF3ximos 2 trimestres.",
521
+ description: "Action description for stage 4 hiring plan"
527
522
  },
528
523
  "playbook.stage5.action0.title": {
529
- value: "Brief de pr\xE9paration partenaire",
530
- description: "Stage 5 action 0 title"
524
+ value: "Brief de preparaci\xF3n para socios",
525
+ description: "Action title for stage 5 partner preparation"
531
526
  },
532
527
  "playbook.stage5.action0.description": {
533
- value: "Documenter les types de partenaires, propositions de valeur et \xE9tapes d'int\xE9gration.",
534
- description: "Stage 5 action 0 description"
528
+ value: "Documentar tipos de socios, propuestas de valor y pasos de incorporaci\xF3n.",
529
+ description: "Action description for stage 5 partner preparation"
535
530
  },
536
531
  "playbook.stage5.action1.title": {
537
- value: "Portefeuille d'exp\xE9riences d'expansion",
538
- description: "Stage 5 action 1 title"
532
+ value: "Portafolio de experimentos de expansi\xF3n",
533
+ description: "Action title for stage 5 expansion planning"
539
534
  },
540
535
  "playbook.stage5.action1.description": {
541
- value: "Lister les 3 principaux march\xE9s ou lignes de produits avec les responsables.",
542
- description: "Stage 5 action 1 description"
536
+ value: "Listar los 3 principales mercados o l\xEDneas de producto con responsables.",
537
+ description: "Action description for stage 5 expansion planning"
543
538
  },
544
539
  "playbook.stage6.action0.title": {
545
- value: "Mener une revue co\xFBt-valeur",
546
- description: "Stage 6 action 0 title"
540
+ value: "Realizar una revisi\xF3n costo-valor",
541
+ description: "Action title for stage 6 margin audit"
547
542
  },
548
543
  "playbook.stage6.action0.description": {
549
- value: "Auditer chaque surface majeure pour l\u2019impact sur les marges.",
550
- description: "Stage 6 action 0 description"
544
+ value: "Auditar cada superficie principal por impacto en m\xE1rgenes.",
545
+ description: "Action description for stage 6 margin audit"
551
546
  },
552
547
  "playbook.stage6.action1.title": {
553
- value: "D\xE9finir le pari de renouvellement",
554
- description: "Stage 6 action 1 title"
548
+ value: "Definir la apuesta de renovaci\xF3n",
549
+ description: "Action title for stage 6 reinvention track"
555
550
  },
556
551
  "playbook.stage6.action1.description": {
557
- value: "Choisir une piste de r\xE9invention ou d'arr\xEAt et d\xE9finir des points de contr\xF4le.",
558
- description: "Stage 6 action 1 description"
552
+ value: "Elegir una pista de reinvenci\xF3n o descontinuaci\xF3n y establecer puntos de control.",
553
+ description: "Action description for stage 6 reinvention track"
559
554
  },
560
555
  "ceremony.stage0.title": {
561
- value: "\xC9tincelle de d\xE9couverte",
562
- description: "Stage 0 ceremony title"
556
+ value: "Chispa de descubrimiento",
557
+ description: "Ceremony title for stage 0"
563
558
  },
564
559
  "ceremony.stage0.copy": {
565
- value: "Partagez la citation la plus percutante avec votre \xE9quipe. Encadrez-la, c\xE9l\xE9brez le focus.",
566
- description: "Stage 0 ceremony copy"
560
+ value: "Comparte la cita de dolor m\xE1s impactante con tu equipo. Enm\xE1rcala, celebra el enfoque.",
561
+ description: "Ceremony copy for stage 0"
567
562
  },
568
563
  "ceremony.stage1.title": {
569
- value: "R\xE9sonance de la solution",
570
- description: "Stage 1 ceremony title"
564
+ value: "Resonancia de la soluci\xF3n",
565
+ description: "Ceremony title for stage 1"
571
566
  },
572
567
  "ceremony.stage1.copy": {
573
- value: "Enregistrez un court partage d'\xE9cran racontant l'histoire avant/apr\xE8s \xE0 votre futur vous.",
574
- description: "Stage 1 ceremony copy"
568
+ value: "Graba un breve screencast contando la historia antes/despu\xE9s a tu futuro yo.",
569
+ description: "Ceremony copy for stage 1"
575
570
  },
576
571
  "ceremony.stage2.title": {
577
- value: "Toast \xE0 la traction",
578
- description: "Stage 2 ceremony title"
572
+ value: "Brindis por la tracci\xF3n",
573
+ description: "Ceremony title for stage 2"
579
574
  },
580
575
  "ceremony.stage2.copy": {
581
- value: "Portez un toast \xE0 vos 20 premiers vrais utilisateurs \u2014 dites leurs noms, dites-leur pourquoi ils comptent.",
582
- description: "Stage 2 ceremony copy"
576
+ value: "Brinda por tus primeros 20 usuarios reales\u2014di sus nombres, diles por qu\xE9 importan.",
577
+ description: "Ceremony copy for stage 2"
583
578
  },
584
579
  "ceremony.stage3.title": {
585
- value: "Signal PMF",
586
- description: "Stage 3 ceremony title"
580
+ value: "Se\xF1al de fuego PMF",
581
+ description: "Ceremony title for stage 3"
587
582
  },
588
583
  "ceremony.stage3.copy": {
589
- value: "\xC9crivez une lettre \xE0 votre futur vous de la S\xE9rie A d\xE9crivant l'attraction que vous ressentez aujourd'hui.",
590
- description: "Stage 3 ceremony copy"
584
+ value: "Escribe una carta a tu futuro yo de la Serie A describiendo la atracci\xF3n que sientes hoy.",
585
+ description: "Ceremony copy for stage 3"
591
586
  },
592
587
  "ceremony.stage4.title": {
593
- value: "Syst\xE8mes d'\xE9chelle",
594
- description: "Stage 4 ceremony title"
588
+ value: "Sistemas de escala",
589
+ description: "Ceremony title for stage 4"
595
590
  },
596
591
  "ceremony.stage4.copy": {
597
- value: "Invitez l'\xE9quipe \xE0 cartographier le parcours du premier utilisateur \xE0 la machine r\xE9p\xE9table.",
598
- description: "Stage 4 ceremony copy"
592
+ value: "Invita al equipo a mapear el viaje desde el primer usuario hasta la m\xE1quina repetible.",
593
+ description: "Ceremony copy for stage 4"
599
594
  },
600
595
  "ceremony.stage5.title": {
601
- value: "Seuil de la plateforme",
602
- description: "Stage 5 ceremony title"
596
+ value: "Umbral de la plataforma",
597
+ description: "Ceremony title for stage 5"
603
598
  },
604
599
  "ceremony.stage5.copy": {
605
- value: "Organisez un cercle de partenaires \u2014 invitez les alli\xE9s \xE0 partager ce dont ils ont besoin de votre plateforme.",
606
- description: "Stage 5 ceremony copy"
600
+ value: "Organiza un c\xEDrculo de socios\u2014invita a los aliados a compartir lo que necesitan de tu plataforma.",
601
+ description: "Ceremony copy for stage 5"
607
602
  },
608
603
  "ceremony.stage6.title": {
609
- value: "Sommet du renouvellement",
610
- description: "Stage 6 ceremony title"
604
+ value: "Cumbre de renovaci\xF3n",
605
+ description: "Ceremony title for stage 6"
611
606
  },
612
607
  "ceremony.stage6.copy": {
613
- value: "Faites une pause pour honorer ce qui vous a amen\xE9 ici, puis engagez-vous publiquement pour la prochaine r\xE9invention.",
614
- description: "Stage 6 ceremony copy"
608
+ value: "Haz una pausa para honrar lo que te trajo aqu\xED, luego compr\xF3metete p\xFAblicamente con la pr\xF3xima reinvenci\xF3n.",
609
+ description: "Ceremony copy for stage 6"
615
610
  },
616
611
  "library.stage0.item0": {
617
- value: "R\xE9sumer les entretiens et synth\xE9tiser les insights IC.",
618
- description: "Stage 0 library item 0"
612
+ value: "Resumir entrevistas y sintetizar insights de IC.",
613
+ description: "Library tool description for stage 0 item 0"
619
614
  },
620
615
  "library.stage0.item1": {
621
- value: "Cr\xE9er des storyboards basse fid\xE9lit\xE9 sans code personnalis\xE9.",
622
- description: "Stage 0 library item 1"
616
+ value: "Crear storyboards de baja fidelidad sin c\xF3digo personalizado.",
617
+ description: "Library tool description for stage 0 item 1"
623
618
  },
624
619
  "library.stage1.item0": {
625
- value: "Contr\xF4ler les fonctionnalit\xE9s prototype derri\xE8re des flags l\xE9gers.",
626
- description: "Stage 1 library item 0"
620
+ value: "Controlar funcionalidades del prototipo detr\xE1s de flags ligeros.",
621
+ description: "Library tool description for stage 1 item 0"
627
622
  },
628
623
  "library.stage1.item1": {
629
- value: "Capturer les signaux de questionnaire pour un scoring pr\xE9coce.",
630
- description: "Stage 1 library item 1"
624
+ value: "Capturar se\xF1ales de cuestionario para scoring temprano.",
625
+ description: "Library tool description for stage 1 item 1"
631
626
  },
632
627
  "library.stage2.item0": {
633
- value: "Instrumenter les parcours d'activation + cohortes.",
634
- description: "Stage 2 library item 0"
628
+ value: "Instrumentar rutas de activaci\xF3n + cohortes.",
629
+ description: "Library tool description for stage 2 item 0"
635
630
  },
636
631
  "library.stage2.item1": {
637
- value: "Collecter les traces et m\xE9triques minimales viables.",
638
- description: "Stage 2 library item 1"
632
+ value: "Recopilar trazas y m\xE9tricas m\xEDnimas viables.",
633
+ description: "Library tool description for stage 2 item 1"
639
634
  },
640
635
  "library.stage3.item0": {
641
- value: "D\xE9tecter automatiquement les lacunes de contrat et am\xE9liorations de spec.",
642
- description: "Stage 3 library item 0"
636
+ value: "Detectar autom\xE1ticamente brechas de contrato y mejoras de spec.",
637
+ description: "Library tool description for stage 3 item 0"
643
638
  },
644
639
  "library.stage3.item1": {
645
- value: "G\xE9n\xE9rer des conseils ax\xE9s sur la r\xE9tention \xE0 grande \xE9chelle.",
646
- description: "Stage 3 library item 1"
640
+ value: "Generar orientaci\xF3n enfocada en retenci\xF3n a escala.",
641
+ description: "Library tool description for stage 3 item 1"
647
642
  },
648
643
  "library.stage4.item0": {
649
- value: "Orchestration d'exp\xE9riences avec garde-fous.",
650
- description: "Stage 4 library item 0"
644
+ value: "Orquestaci\xF3n de experimentos con barandillas.",
645
+ description: "Library tool description for stage 4 item 0"
651
646
  },
652
647
  "library.stage4.item1": {
653
- value: "Stabiliser l\u2019infra et les SLOs au fur et \xE0 mesure que les \xE9quipes se divisent.",
654
- description: "Stage 4 library item 1"
648
+ value: "Estabilizar infraestructura y SLOs a medida que los equipos se dividen.",
649
+ description: "Library tool description for stage 4 item 1"
655
650
  },
656
651
  "library.stage5.item0": {
657
- value: "Automatiser les workflows partenaires et int\xE9grations.",
658
- description: "Stage 5 library item 0"
652
+ value: "Automatizar flujos de trabajo de socios e integraciones.",
653
+ description: "Library tool description for stage 5 item 0"
659
654
  },
660
655
  "library.stage5.item1": {
661
- value: "Exposer l'int\xE9gration partenaire g\xE9r\xE9e via Studio.",
662
- description: "Stage 5 library item 1"
656
+ value: "Exponer incorporaci\xF3n de socios gestionada v\xEDa Studio.",
657
+ description: "Library tool description for stage 5 item 1"
663
658
  },
664
659
  "library.stage6.item0": {
665
- value: "Mod\xE9liser les sc\xE9narios de marge et paris de r\xE9investissement.",
666
- description: "Stage 6 library item 0"
660
+ value: "Modelar escenarios de margen y apuestas de reinversi\xF3n.",
661
+ description: "Library tool description for stage 6 item 0"
667
662
  },
668
663
  "library.stage6.item1": {
669
- value: "Standardiser les rituels de renouvellement et l'automatisation.",
670
- description: "Stage 6 library item 1"
664
+ value: "Estandarizar rituales de renovaci\xF3n y automatizaci\xF3n.",
665
+ description: "Library tool description for stage 6 item 1"
671
666
  },
672
667
  "engine.fallbackAction.title": {
673
- value: "Avancer sur {focus}",
674
- description: "Fallback action title with focus placeholder"
668
+ value: "Avanzar en {focus}",
669
+ description: "Fallback action title when no specific action exists",
670
+ placeholders: [{ name: "focus", type: "string" }]
675
671
  },
676
672
  "engine.fallbackAction.description": {
677
- value: "Identifier une t\xE2che qui am\xE9liorera \xAB\u202F{focus}\u202F\xBB cette semaine.",
678
- description: "Fallback action description with focus placeholder"
673
+ value: 'Identificar una tarea que mejore "{focus}" esta semana.',
674
+ description: "Fallback action description when no specific action exists",
675
+ placeholders: [{ name: "focus", type: "string" }]
679
676
  }
680
677
  }
681
678
  });
682
679
 
683
- // src/i18n/catalogs/es.ts
680
+ // src/i18n/catalogs/fr.ts
684
681
  import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
685
- var esMessages = defineTranslation3({
682
+ var frMessages = defineTranslation3({
686
683
  meta: {
687
684
  key: "lifecycle-advisor.messages",
688
685
  version: "1.0.0",
689
686
  domain: "lifecycle-advisor",
690
- description: "Playbook, ceremony, library, and engine strings (Spanish)",
687
+ description: "Playbook, ceremony, library, and engine strings (French)",
691
688
  owners: ["platform"],
692
689
  stability: "experimental"
693
690
  },
694
- locale: "es",
691
+ locale: "fr",
695
692
  fallback: "en",
696
693
  messages: {
697
694
  "playbook.stage0.focus.0": {
698
- value: "Descubrimiento",
699
- description: "Stage 0 focus area: discovery research"
695
+ value: "D\xE9couverte",
696
+ description: "Stage 0 focus area: Discovery"
700
697
  },
701
698
  "playbook.stage0.focus.1": {
702
- value: "Claridad del problema",
703
- description: "Stage 0 focus area: sharpening the problem definition"
699
+ value: "Clart\xE9 du probl\xE8me",
700
+ description: "Stage 0 focus area: Problem clarity"
704
701
  },
705
702
  "playbook.stage0.focus.2": {
706
703
  value: "Persona",
707
- description: "Stage 0 focus area: identifying the target persona"
704
+ description: "Stage 0 focus area: Persona"
708
705
  },
709
706
  "playbook.stage1.focus.0": {
710
- value: "Prototipo",
711
- description: "Stage 1 focus area: building a prototype"
707
+ value: "Prototype",
708
+ description: "Stage 1 focus area: Prototype"
712
709
  },
713
710
  "playbook.stage1.focus.1": {
714
- value: "Retroalimentaci\xF3n",
715
- description: "Stage 1 focus area: gathering user feedback"
711
+ value: "Retours",
712
+ description: "Stage 1 focus area: Feedback"
716
713
  },
717
714
  "playbook.stage1.focus.2": {
718
- value: "Prueba de valor",
719
- description: "Stage 1 focus area: proving the value proposition"
715
+ value: "Preuve de valeur",
716
+ description: "Stage 1 focus area: Value proof"
720
717
  },
721
718
  "playbook.stage2.focus.0": {
722
- value: "Activaci\xF3n",
723
- description: "Stage 2 focus area: user activation"
719
+ value: "Activation",
720
+ description: "Stage 2 focus area: Activation"
724
721
  },
725
722
  "playbook.stage2.focus.1": {
726
- value: "Telemetr\xEDa",
727
- description: "Stage 2 focus area: usage telemetry"
723
+ value: "T\xE9l\xE9m\xE9trie",
724
+ description: "Stage 2 focus area: Telemetry"
728
725
  },
729
726
  "playbook.stage2.focus.2": {
730
- value: "Retroalimentaci\xF3n",
731
- description: "Stage 2 focus area: continuous user feedback"
727
+ value: "Retours",
728
+ description: "Stage 2 focus area: Feedback"
732
729
  },
733
730
  "playbook.stage3.focus.0": {
734
- value: "Retenci\xF3n",
735
- description: "Stage 3 focus area: user retention"
731
+ value: "R\xE9tention",
732
+ description: "Stage 3 focus area: Retention"
736
733
  },
737
734
  "playbook.stage3.focus.1": {
738
- value: "Fiabilidad",
739
- description: "Stage 3 focus area: product reliability"
735
+ value: "Fiabilit\xE9",
736
+ description: "Stage 3 focus area: Reliability"
740
737
  },
741
738
  "playbook.stage3.focus.2": {
742
- value: "Historia",
743
- description: "Stage 3 focus area: building the narrative"
739
+ value: "R\xE9cit",
740
+ description: "Stage 3 focus area: Story"
744
741
  },
745
742
  "playbook.stage4.focus.0": {
746
- value: "Sistemas",
747
- description: "Stage 4 focus area: scalable systems"
743
+ value: "Syst\xE8mes",
744
+ description: "Stage 4 focus area: Systems"
748
745
  },
749
746
  "playbook.stage4.focus.1": {
750
- value: "Bucles de crecimiento",
751
- description: "Stage 4 focus area: repeatable growth loops"
747
+ value: "Boucles de croissance",
748
+ description: "Stage 4 focus area: Growth loops"
752
749
  },
753
750
  "playbook.stage4.focus.2": {
754
- value: "Especializaci\xF3n",
755
- description: "Stage 4 focus area: team specialization"
751
+ value: "Sp\xE9cialisation",
752
+ description: "Stage 4 focus area: Specialization"
756
753
  },
757
754
  "playbook.stage5.focus.0": {
758
- value: "Socios",
759
- description: "Stage 5 focus area: partner ecosystem"
755
+ value: "Partenaires",
756
+ description: "Stage 5 focus area: Partners"
760
757
  },
761
758
  "playbook.stage5.focus.1": {
762
759
  value: "APIs",
763
- description: "Stage 5 focus area: platform APIs"
760
+ description: "Stage 5 focus area: APIs"
764
761
  },
765
762
  "playbook.stage5.focus.2": {
766
- value: "Apuestas de expansi\xF3n",
767
- description: "Stage 5 focus area: expansion experiments"
763
+ value: "Paris d'expansion",
764
+ description: "Stage 5 focus area: Expansion bets"
768
765
  },
769
766
  "playbook.stage6.focus.0": {
770
- value: "Optimizaci\xF3n",
771
- description: "Stage 6 focus area: operational optimization"
767
+ value: "Optimisation",
768
+ description: "Stage 6 focus area: Optimization"
772
769
  },
773
770
  "playbook.stage6.focus.1": {
774
- value: "Renovaci\xF3n",
775
- description: "Stage 6 focus area: product renewal"
771
+ value: "Renouvellement",
772
+ description: "Stage 6 focus area: Renewal"
776
773
  },
777
774
  "playbook.stage6.focus.2": {
778
- value: "Portafolio",
779
- description: "Stage 6 focus area: portfolio management"
775
+ value: "Portefeuille",
776
+ description: "Stage 6 focus area: Portfolio"
780
777
  },
781
778
  "playbook.stage0.action0.title": {
782
- value: "Realizar un sprint de entrevistas de 5 d\xEDas",
783
- description: "Action title for stage 0 interview sprint"
779
+ value: "Mener un sprint d'entretiens de 5 jours",
780
+ description: "Stage 0 action 0 title"
784
781
  },
785
782
  "playbook.stage0.action0.description": {
786
- value: "Programar al menos 5 entrevistas consecutivas y capturar citas sin editar.",
787
- description: "Action description for stage 0 interview sprint"
783
+ value: "Planifier au moins 5 entretiens cons\xE9cutifs et capturer les citations brutes.",
784
+ description: "Stage 0 action 0 description"
788
785
  },
789
786
  "playbook.stage0.action1.title": {
790
- value: "Redactar la historia del problema",
791
- description: "Action title for stage 0 problem narrative"
787
+ value: "R\xE9diger l'histoire du probl\xE8me",
788
+ description: "Stage 0 action 1 title"
792
789
  },
793
790
  "playbook.stage0.action1.description": {
794
- value: "Resumir el dolor en un p\xE1rrafo que puedas repetir a los socios.",
795
- description: "Action description for stage 0 problem narrative"
791
+ value: "R\xE9sumer la douleur en un paragraphe que vous pouvez r\xE9p\xE9ter aux partenaires.",
792
+ description: "Stage 0 action 1 description"
796
793
  },
797
794
  "playbook.stage1.action0.title": {
798
- value: "Ciclo de retroalimentaci\xF3n del prototipo",
799
- description: "Action title for stage 1 prototype iteration"
795
+ value: "Boucle de retours sur le prototype",
796
+ description: "Stage 1 action 0 title"
800
797
  },
801
798
  "playbook.stage1.action0.description": {
802
- value: "Entregar un prototipo de baja fidelidad y recopilar 3 rondas de reacciones.",
803
- description: "Action description for stage 1 prototype iteration"
799
+ value: "Livrer un prototype basse fid\xE9lit\xE9 et recueillir 3 tours de r\xE9actions.",
800
+ description: "Stage 1 action 0 description"
804
801
  },
805
802
  "playbook.stage1.action1.title": {
806
- value: "Capturar se\xF1ales de recomendaci\xF3n",
807
- description: "Action title for stage 1 referral tracking"
803
+ value: "Capturer les signaux de recommandation",
804
+ description: "Stage 1 action 1 title"
808
805
  },
809
806
  "playbook.stage1.action1.description": {
810
- value: "Preguntar a cada tester qui\xE9n m\xE1s deber\xEDa ver la demo.",
811
- description: "Action description for stage 1 referral tracking"
807
+ value: "Demander \xE0 chaque testeur qui d'autre devrait voir la d\xE9mo.",
808
+ description: "Stage 1 action 1 description"
812
809
  },
813
810
  "playbook.stage2.action0.title": {
814
- value: "Definir lista de verificaci\xF3n de activaci\xF3n",
815
- description: "Action title for stage 2 activation definition"
811
+ value: "D\xE9finir la checklist d'activation",
812
+ description: "Stage 2 action 0 title"
816
813
  },
817
814
  "playbook.stage2.action0.description": {
818
- value: "Documentar los 3 pasos que los usuarios deben completar para obtener valor.",
819
- description: "Action description for stage 2 activation definition"
815
+ value: "Documenter les 3 \xE9tapes que les utilisateurs doivent terminer pour obtenir de la valeur.",
816
+ description: "Stage 2 action 0 description"
820
817
  },
821
818
  "playbook.stage2.action1.title": {
822
- value: "Sincronizaci\xF3n semanal con usuarios",
823
- description: "Action title for stage 2 user communication"
819
+ value: "Synchronisation hebdomadaire avec les utilisateurs",
820
+ description: "Stage 2 action 1 title"
824
821
  },
825
822
  "playbook.stage2.action1.description": {
826
- value: "Organizar una llamada recurrente con tus 5 testers m\xE1s activos.",
827
- description: "Action description for stage 2 user communication"
823
+ value: "Organiser un appel r\xE9current avec vos 5 testeurs les plus actifs.",
824
+ description: "Stage 2 action 1 description"
828
825
  },
829
826
  "playbook.stage3.action0.title": {
830
- value: "Realizar un estudio de retenci\xF3n",
831
- description: "Action title for stage 3 retention analysis"
827
+ value: "Mener une \xE9tude de r\xE9tention",
828
+ description: "Stage 3 action 0 title"
832
829
  },
833
830
  "playbook.stage3.action0.description": {
834
- value: "Entrevistar a 3 usuarios retenidos y publicar sus m\xE9tricas antes/despu\xE9s.",
835
- description: "Action description for stage 3 retention analysis"
831
+ value: "Interviewer 3 utilisateurs retenus et publier leurs m\xE9triques avant/apr\xE8s.",
832
+ description: "Stage 3 action 0 description"
836
833
  },
837
834
  "playbook.stage3.action1.title": {
838
- value: "Revisi\xF3n ligera de incidentes",
839
- description: "Action title for stage 3 reliability review"
835
+ value: "Revue l\xE9g\xE8re d'incidents",
836
+ description: "Stage 3 action 1 title"
840
837
  },
841
838
  "playbook.stage3.action1.description": {
842
- value: "Revisar los \xFAltimos 2 problemas de fiabilidad y capturar las correcciones.",
843
- description: "Action description for stage 3 reliability review"
839
+ value: "Examiner les 2 derniers incidents de fiabilit\xE9 et capturer les correctifs.",
840
+ description: "Stage 3 action 1 description"
844
841
  },
845
842
  "playbook.stage4.action0.title": {
846
- value: "Codificar un bucle de crecimiento",
847
- description: "Action title for stage 4 growth loop setup"
843
+ value: "Codifier une boucle de croissance",
844
+ description: "Stage 4 action 0 title"
848
845
  },
849
846
  "playbook.stage4.action0.description": {
850
- value: "Elegir un bucle (SEO, referencias, outbound) y documentar responsables + entradas.",
851
- description: "Action description for stage 4 growth loop setup"
847
+ value: "Choisir une boucle (SEO, recommandations, outbound) et documenter les responsables + entr\xE9es.",
848
+ description: "Stage 4 action 0 description"
852
849
  },
853
850
  "playbook.stage4.action1.title": {
854
- value: "Crear mapa de contrataci\xF3n",
855
- description: "Action title for stage 4 hiring plan"
851
+ value: "Cr\xE9er la carte de recrutement",
852
+ description: "Stage 4 action 1 title"
856
853
  },
857
854
  "playbook.stage4.action1.description": {
858
- value: "Listar los roles especializados necesarios para los pr\xF3ximos 2 trimestres.",
859
- description: "Action description for stage 4 hiring plan"
855
+ value: "Lister les r\xF4les sp\xE9cialis\xE9s n\xE9cessaires pour les 2 prochains trimestres.",
856
+ description: "Stage 4 action 1 description"
860
857
  },
861
858
  "playbook.stage5.action0.title": {
862
- value: "Brief de preparaci\xF3n para socios",
863
- description: "Action title for stage 5 partner preparation"
859
+ value: "Brief de pr\xE9paration partenaire",
860
+ description: "Stage 5 action 0 title"
864
861
  },
865
862
  "playbook.stage5.action0.description": {
866
- value: "Documentar tipos de socios, propuestas de valor y pasos de incorporaci\xF3n.",
867
- description: "Action description for stage 5 partner preparation"
863
+ value: "Documenter les types de partenaires, propositions de valeur et \xE9tapes d'int\xE9gration.",
864
+ description: "Stage 5 action 0 description"
868
865
  },
869
866
  "playbook.stage5.action1.title": {
870
- value: "Portafolio de experimentos de expansi\xF3n",
871
- description: "Action title for stage 5 expansion planning"
867
+ value: "Portefeuille d'exp\xE9riences d'expansion",
868
+ description: "Stage 5 action 1 title"
872
869
  },
873
870
  "playbook.stage5.action1.description": {
874
- value: "Listar los 3 principales mercados o l\xEDneas de producto con responsables.",
875
- description: "Action description for stage 5 expansion planning"
871
+ value: "Lister les 3 principaux march\xE9s ou lignes de produits avec les responsables.",
872
+ description: "Stage 5 action 1 description"
876
873
  },
877
874
  "playbook.stage6.action0.title": {
878
- value: "Realizar una revisi\xF3n costo-valor",
879
- description: "Action title for stage 6 margin audit"
875
+ value: "Mener une revue co\xFBt-valeur",
876
+ description: "Stage 6 action 0 title"
880
877
  },
881
878
  "playbook.stage6.action0.description": {
882
- value: "Auditar cada superficie principal por impacto en m\xE1rgenes.",
883
- description: "Action description for stage 6 margin audit"
879
+ value: "Auditer chaque surface majeure pour l\u2019impact sur les marges.",
880
+ description: "Stage 6 action 0 description"
884
881
  },
885
882
  "playbook.stage6.action1.title": {
886
- value: "Definir la apuesta de renovaci\xF3n",
887
- description: "Action title for stage 6 reinvention track"
883
+ value: "D\xE9finir le pari de renouvellement",
884
+ description: "Stage 6 action 1 title"
888
885
  },
889
886
  "playbook.stage6.action1.description": {
890
- value: "Elegir una pista de reinvenci\xF3n o descontinuaci\xF3n y establecer puntos de control.",
891
- description: "Action description for stage 6 reinvention track"
887
+ value: "Choisir une piste de r\xE9invention ou d'arr\xEAt et d\xE9finir des points de contr\xF4le.",
888
+ description: "Stage 6 action 1 description"
892
889
  },
893
890
  "ceremony.stage0.title": {
894
- value: "Chispa de descubrimiento",
895
- description: "Ceremony title for stage 0"
891
+ value: "\xC9tincelle de d\xE9couverte",
892
+ description: "Stage 0 ceremony title"
896
893
  },
897
894
  "ceremony.stage0.copy": {
898
- value: "Comparte la cita de dolor m\xE1s impactante con tu equipo. Enm\xE1rcala, celebra el enfoque.",
899
- description: "Ceremony copy for stage 0"
895
+ value: "Partagez la citation la plus percutante avec votre \xE9quipe. Encadrez-la, c\xE9l\xE9brez le focus.",
896
+ description: "Stage 0 ceremony copy"
900
897
  },
901
898
  "ceremony.stage1.title": {
902
- value: "Resonancia de la soluci\xF3n",
903
- description: "Ceremony title for stage 1"
899
+ value: "R\xE9sonance de la solution",
900
+ description: "Stage 1 ceremony title"
904
901
  },
905
902
  "ceremony.stage1.copy": {
906
- value: "Graba un breve screencast contando la historia antes/despu\xE9s a tu futuro yo.",
907
- description: "Ceremony copy for stage 1"
903
+ value: "Enregistrez un court partage d'\xE9cran racontant l'histoire avant/apr\xE8s \xE0 votre futur vous.",
904
+ description: "Stage 1 ceremony copy"
908
905
  },
909
906
  "ceremony.stage2.title": {
910
- value: "Brindis por la tracci\xF3n",
911
- description: "Ceremony title for stage 2"
907
+ value: "Toast \xE0 la traction",
908
+ description: "Stage 2 ceremony title"
912
909
  },
913
910
  "ceremony.stage2.copy": {
914
- value: "Brinda por tus primeros 20 usuarios reales\u2014di sus nombres, diles por qu\xE9 importan.",
915
- description: "Ceremony copy for stage 2"
911
+ value: "Portez un toast \xE0 vos 20 premiers vrais utilisateurs \u2014 dites leurs noms, dites-leur pourquoi ils comptent.",
912
+ description: "Stage 2 ceremony copy"
916
913
  },
917
914
  "ceremony.stage3.title": {
918
- value: "Se\xF1al de fuego PMF",
919
- description: "Ceremony title for stage 3"
915
+ value: "Signal PMF",
916
+ description: "Stage 3 ceremony title"
920
917
  },
921
918
  "ceremony.stage3.copy": {
922
- value: "Escribe una carta a tu futuro yo de la Serie A describiendo la atracci\xF3n que sientes hoy.",
923
- description: "Ceremony copy for stage 3"
919
+ value: "\xC9crivez une lettre \xE0 votre futur vous de la S\xE9rie A d\xE9crivant l'attraction que vous ressentez aujourd'hui.",
920
+ description: "Stage 3 ceremony copy"
924
921
  },
925
922
  "ceremony.stage4.title": {
926
- value: "Sistemas de escala",
927
- description: "Ceremony title for stage 4"
923
+ value: "Syst\xE8mes d'\xE9chelle",
924
+ description: "Stage 4 ceremony title"
928
925
  },
929
926
  "ceremony.stage4.copy": {
930
- value: "Invita al equipo a mapear el viaje desde el primer usuario hasta la m\xE1quina repetible.",
931
- description: "Ceremony copy for stage 4"
927
+ value: "Invitez l'\xE9quipe \xE0 cartographier le parcours du premier utilisateur \xE0 la machine r\xE9p\xE9table.",
928
+ description: "Stage 4 ceremony copy"
932
929
  },
933
930
  "ceremony.stage5.title": {
934
- value: "Umbral de la plataforma",
935
- description: "Ceremony title for stage 5"
931
+ value: "Seuil de la plateforme",
932
+ description: "Stage 5 ceremony title"
936
933
  },
937
934
  "ceremony.stage5.copy": {
938
- value: "Organiza un c\xEDrculo de socios\u2014invita a los aliados a compartir lo que necesitan de tu plataforma.",
939
- description: "Ceremony copy for stage 5"
935
+ value: "Organisez un cercle de partenaires \u2014 invitez les alli\xE9s \xE0 partager ce dont ils ont besoin de votre plateforme.",
936
+ description: "Stage 5 ceremony copy"
940
937
  },
941
938
  "ceremony.stage6.title": {
942
- value: "Cumbre de renovaci\xF3n",
943
- description: "Ceremony title for stage 6"
939
+ value: "Sommet du renouvellement",
940
+ description: "Stage 6 ceremony title"
944
941
  },
945
942
  "ceremony.stage6.copy": {
946
- value: "Haz una pausa para honrar lo que te trajo aqu\xED, luego compr\xF3metete p\xFAblicamente con la pr\xF3xima reinvenci\xF3n.",
947
- description: "Ceremony copy for stage 6"
943
+ value: "Faites une pause pour honorer ce qui vous a amen\xE9 ici, puis engagez-vous publiquement pour la prochaine r\xE9invention.",
944
+ description: "Stage 6 ceremony copy"
948
945
  },
949
946
  "library.stage0.item0": {
950
- value: "Resumir entrevistas y sintetizar insights de IC.",
951
- description: "Library tool description for stage 0 item 0"
947
+ value: "R\xE9sumer les entretiens et synth\xE9tiser les insights IC.",
948
+ description: "Stage 0 library item 0"
952
949
  },
953
950
  "library.stage0.item1": {
954
- value: "Crear storyboards de baja fidelidad sin c\xF3digo personalizado.",
955
- description: "Library tool description for stage 0 item 1"
951
+ value: "Cr\xE9er des storyboards basse fid\xE9lit\xE9 sans code personnalis\xE9.",
952
+ description: "Stage 0 library item 1"
956
953
  },
957
954
  "library.stage1.item0": {
958
- value: "Controlar funcionalidades del prototipo detr\xE1s de flags ligeros.",
959
- description: "Library tool description for stage 1 item 0"
955
+ value: "Contr\xF4ler les fonctionnalit\xE9s prototype derri\xE8re des flags l\xE9gers.",
956
+ description: "Stage 1 library item 0"
960
957
  },
961
958
  "library.stage1.item1": {
962
- value: "Capturar se\xF1ales de cuestionario para scoring temprano.",
963
- description: "Library tool description for stage 1 item 1"
959
+ value: "Capturer les signaux de questionnaire pour un scoring pr\xE9coce.",
960
+ description: "Stage 1 library item 1"
964
961
  },
965
962
  "library.stage2.item0": {
966
- value: "Instrumentar rutas de activaci\xF3n + cohortes.",
967
- description: "Library tool description for stage 2 item 0"
963
+ value: "Instrumenter les parcours d'activation + cohortes.",
964
+ description: "Stage 2 library item 0"
968
965
  },
969
966
  "library.stage2.item1": {
970
- value: "Recopilar trazas y m\xE9tricas m\xEDnimas viables.",
971
- description: "Library tool description for stage 2 item 1"
967
+ value: "Collecter les traces et m\xE9triques minimales viables.",
968
+ description: "Stage 2 library item 1"
972
969
  },
973
970
  "library.stage3.item0": {
974
- value: "Detectar autom\xE1ticamente brechas de contrato y mejoras de spec.",
975
- description: "Library tool description for stage 3 item 0"
971
+ value: "D\xE9tecter automatiquement les lacunes de contrat et am\xE9liorations de spec.",
972
+ description: "Stage 3 library item 0"
976
973
  },
977
974
  "library.stage3.item1": {
978
- value: "Generar orientaci\xF3n enfocada en retenci\xF3n a escala.",
979
- description: "Library tool description for stage 3 item 1"
975
+ value: "G\xE9n\xE9rer des conseils ax\xE9s sur la r\xE9tention \xE0 grande \xE9chelle.",
976
+ description: "Stage 3 library item 1"
980
977
  },
981
978
  "library.stage4.item0": {
982
- value: "Orquestaci\xF3n de experimentos con barandillas.",
983
- description: "Library tool description for stage 4 item 0"
979
+ value: "Orchestration d'exp\xE9riences avec garde-fous.",
980
+ description: "Stage 4 library item 0"
984
981
  },
985
982
  "library.stage4.item1": {
986
- value: "Estabilizar infraestructura y SLOs a medida que los equipos se dividen.",
987
- description: "Library tool description for stage 4 item 1"
983
+ value: "Stabiliser l\u2019infra et les SLOs au fur et \xE0 mesure que les \xE9quipes se divisent.",
984
+ description: "Stage 4 library item 1"
988
985
  },
989
986
  "library.stage5.item0": {
990
- value: "Automatizar flujos de trabajo de socios e integraciones.",
991
- description: "Library tool description for stage 5 item 0"
987
+ value: "Automatiser les workflows partenaires et int\xE9grations.",
988
+ description: "Stage 5 library item 0"
992
989
  },
993
990
  "library.stage5.item1": {
994
- value: "Exponer incorporaci\xF3n de socios gestionada v\xEDa Studio.",
995
- description: "Library tool description for stage 5 item 1"
991
+ value: "Exposer l'int\xE9gration partenaire g\xE9r\xE9e via Studio.",
992
+ description: "Stage 5 library item 1"
996
993
  },
997
994
  "library.stage6.item0": {
998
- value: "Modelar escenarios de margen y apuestas de reinversi\xF3n.",
999
- description: "Library tool description for stage 6 item 0"
995
+ value: "Mod\xE9liser les sc\xE9narios de marge et paris de r\xE9investissement.",
996
+ description: "Stage 6 library item 0"
1000
997
  },
1001
998
  "library.stage6.item1": {
1002
- value: "Estandarizar rituales de renovaci\xF3n y automatizaci\xF3n.",
1003
- description: "Library tool description for stage 6 item 1"
999
+ value: "Standardiser les rituels de renouvellement et l'automatisation.",
1000
+ description: "Stage 6 library item 1"
1004
1001
  },
1005
1002
  "engine.fallbackAction.title": {
1006
- value: "Avanzar en {focus}",
1007
- description: "Fallback action title when no specific action exists",
1008
- placeholders: [{ name: "focus", type: "string" }]
1003
+ value: "Avancer sur {focus}",
1004
+ description: "Fallback action title with focus placeholder"
1009
1005
  },
1010
1006
  "engine.fallbackAction.description": {
1011
- value: 'Identificar una tarea que mejore "{focus}" esta semana.',
1012
- description: "Fallback action description when no specific action exists",
1013
- placeholders: [{ name: "focus", type: "string" }]
1007
+ value: "Identifier une t\xE2che qui am\xE9liorera \xAB\u202F{focus}\u202F\xBB cette semaine.",
1008
+ description: "Fallback action description with focus placeholder"
1014
1009
  }
1015
1010
  }
1016
1011
  });
@@ -1277,57 +1272,26 @@ var staticPlaybooks = [
1277
1272
  var stagePlaybooks = staticPlaybooks;
1278
1273
  var stage_playbooks_default = stagePlaybooks;
1279
1274
 
1280
- // src/recommendations/recommendation-engine.ts
1281
- var PLAYBOOK_MAP = new Map(stage_playbooks_default.map((entry) => [
1275
+ // src/ceremony/ceremony-designer.ts
1276
+ var CEREMONY_MAP = new Map(stage_playbooks_default.map((entry) => [
1282
1277
  entry.stage,
1283
- {
1284
- ...entry,
1285
- stage: entry.stage
1286
- }
1278
+ entry.ceremony
1287
1279
  ]));
1288
1280
 
1289
- class LifecycleRecommendationEngine {
1290
- playbooks;
1281
+ class LifecycleCeremonyDesigner {
1282
+ ceremonies;
1291
1283
  constructor(overrides) {
1292
- this.playbooks = overrides?.length ? new Map(overrides.map((entry) => [entry.stage, entry])) : PLAYBOOK_MAP;
1284
+ this.ceremonies = overrides?.length ? new Map(overrides.map((entry) => [entry.stage, entry.ceremony])) : CEREMONY_MAP;
1293
1285
  }
1294
- generate(assessment, options = {}) {
1295
- const { locale, limit: rawLimit, upcomingMilestones } = options;
1296
- const limit = rawLimit ?? 3;
1297
- const entry = locale ? resolveLocalizedPlaybook(assessment.stage, locale) : this.playbooks.get(assessment.stage) ?? createFallbackPlaybook(assessment.stage);
1298
- const actions = (entry.actions ?? []).slice(0, limit);
1299
- const finalActions = actions.length > 0 ? actions : fallbackActions(assessment, limit, locale);
1300
- return {
1301
- assessmentId: assessment.generatedAt,
1302
- stage: assessment.stage,
1303
- actions: finalActions,
1304
- upcomingMilestones: upcomingMilestones ?? [],
1305
- ceremony: entry.ceremony
1306
- };
1286
+ design(stage, locale) {
1287
+ if (locale) {
1288
+ const localized = getLocalizedStagePlaybooks(locale);
1289
+ const entry = localized.find((p) => p.stage === stage);
1290
+ return entry?.ceremony;
1291
+ }
1292
+ return this.ceremonies.get(stage);
1307
1293
  }
1308
1294
  }
1309
- function resolveLocalizedPlaybook(stage, locale) {
1310
- const localized = getLocalizedStagePlaybooks(locale);
1311
- return localized.find((p) => p.stage === stage) ?? createFallbackPlaybook(stage, locale);
1312
- }
1313
- var createFallbackPlaybook = (stage, locale) => ({
1314
- stage,
1315
- actions: [],
1316
- focusAreas: locale ? getLocalizedStagePlaybooks(locale).find((p) => p.stage === stage)?.focusAreas ?? LIFECYCLE_STAGE_META[stage].focusAreas : LIFECYCLE_STAGE_META[stage].focusAreas
1317
- });
1318
- var fallbackActions = (assessment, limit, locale) => {
1319
- const i18n = locale ? createLifecycleAdvisorI18n(locale) : undefined;
1320
- return (assessment.focusAreas ?? LIFECYCLE_STAGE_META[assessment.stage].focusAreas).slice(0, limit).map((focus, index) => ({
1321
- id: `fallback-${assessment.stage}-${index}`,
1322
- stage: assessment.stage,
1323
- title: i18n ? i18n.t("engine.fallbackAction.title", { focus }) : `Advance ${focus}`,
1324
- description: i18n ? i18n.t("engine.fallbackAction.description", { focus }) : `Identify one task that will improve "${focus}" this week.`,
1325
- priority: index + 1,
1326
- estimatedImpact: "low",
1327
- effortLevel: "s",
1328
- category: "product"
1329
- }));
1330
- };
1331
1295
  // src/data/library-stage-map.ts
1332
1296
  function getLocalizedLibraryStageMap(locale) {
1333
1297
  const i18n = createLifecycleAdvisorI18n(locale);
@@ -1448,7 +1412,6 @@ var staticLibraryStageMap = [
1448
1412
  ];
1449
1413
  var libraryStageMap = staticLibraryStageMap;
1450
1414
  var library_stage_map_default = libraryStageMap;
1451
-
1452
1415
  // src/recommendations/library-recommender.ts
1453
1416
  var LIBRARY_MAP = new Map(library_stage_map_default.map((entry) => [entry.stage, entry.items]));
1454
1417
 
@@ -1469,26 +1432,60 @@ class ContractSpecLibraryRecommender {
1469
1432
  return items.slice(0, limit);
1470
1433
  }
1471
1434
  }
1472
- // src/ceremony/ceremony-designer.ts
1473
- var CEREMONY_MAP = new Map(stage_playbooks_default.map((entry) => [
1435
+ // src/recommendations/recommendation-engine.ts
1436
+ import {
1437
+ LIFECYCLE_STAGE_META
1438
+ } from "@contractspec/lib.lifecycle";
1439
+ var PLAYBOOK_MAP = new Map(stage_playbooks_default.map((entry) => [
1474
1440
  entry.stage,
1475
- entry.ceremony
1441
+ {
1442
+ ...entry,
1443
+ stage: entry.stage
1444
+ }
1476
1445
  ]));
1477
1446
 
1478
- class LifecycleCeremonyDesigner {
1479
- ceremonies;
1447
+ class LifecycleRecommendationEngine {
1448
+ playbooks;
1480
1449
  constructor(overrides) {
1481
- this.ceremonies = overrides?.length ? new Map(overrides.map((entry) => [entry.stage, entry.ceremony])) : CEREMONY_MAP;
1450
+ this.playbooks = overrides?.length ? new Map(overrides.map((entry) => [entry.stage, entry])) : PLAYBOOK_MAP;
1482
1451
  }
1483
- design(stage, locale) {
1484
- if (locale) {
1485
- const localized = getLocalizedStagePlaybooks(locale);
1486
- const entry = localized.find((p) => p.stage === stage);
1487
- return entry?.ceremony;
1488
- }
1489
- return this.ceremonies.get(stage);
1452
+ generate(assessment, options = {}) {
1453
+ const { locale, limit: rawLimit, upcomingMilestones } = options;
1454
+ const limit = rawLimit ?? 3;
1455
+ const entry = locale ? resolveLocalizedPlaybook(assessment.stage, locale) : this.playbooks.get(assessment.stage) ?? createFallbackPlaybook(assessment.stage);
1456
+ const actions = (entry.actions ?? []).slice(0, limit);
1457
+ const finalActions = actions.length > 0 ? actions : fallbackActions(assessment, limit, locale);
1458
+ return {
1459
+ assessmentId: assessment.generatedAt,
1460
+ stage: assessment.stage,
1461
+ actions: finalActions,
1462
+ upcomingMilestones: upcomingMilestones ?? [],
1463
+ ceremony: entry.ceremony
1464
+ };
1490
1465
  }
1491
1466
  }
1467
+ function resolveLocalizedPlaybook(stage, locale) {
1468
+ const localized = getLocalizedStagePlaybooks(locale);
1469
+ return localized.find((p) => p.stage === stage) ?? createFallbackPlaybook(stage, locale);
1470
+ }
1471
+ var createFallbackPlaybook = (stage, locale) => ({
1472
+ stage,
1473
+ actions: [],
1474
+ focusAreas: locale ? getLocalizedStagePlaybooks(locale).find((p) => p.stage === stage)?.focusAreas ?? LIFECYCLE_STAGE_META[stage].focusAreas : LIFECYCLE_STAGE_META[stage].focusAreas
1475
+ });
1476
+ var fallbackActions = (assessment, limit, locale) => {
1477
+ const i18n = locale ? createLifecycleAdvisorI18n(locale) : undefined;
1478
+ return (assessment.focusAreas ?? LIFECYCLE_STAGE_META[assessment.stage].focusAreas).slice(0, limit).map((focus, index) => ({
1479
+ id: `fallback-${assessment.stage}-${index}`,
1480
+ stage: assessment.stage,
1481
+ title: i18n ? i18n.t("engine.fallbackAction.title", { focus }) : `Advance ${focus}`,
1482
+ description: i18n ? i18n.t("engine.fallbackAction.description", { focus }) : `Identify one task that will improve "${focus}" this week.`,
1483
+ priority: index + 1,
1484
+ estimatedImpact: "low",
1485
+ effortLevel: "s",
1486
+ category: "product"
1487
+ }));
1488
+ };
1492
1489
  export {
1493
1490
  getLocalizedStagePlaybooks,
1494
1491
  getLocalizedLibraryStageMap,