api-changes

Par microsoft · fluidframework

À utiliser lorsque des modifications d'API exposées aux clients ont été apportées — c'est-à-dire lorsque les fichiers .md du rapport d'API diffèrent de la branche main. Guide à travers l'attribution des tags de release, les exigences de revue du API Council, la classification des changements cassants, le processus de dépréciation et les recommandations de changeset. Déclenché automatiquement par ci-readiness-check lorsque des diffs de api-report sont détectés.

npx skills add https://github.com/microsoft/fluidframework --skill api-changes

<required> Avant de faire un travail quelconque, créez un élément de tâche/todo par étape applicable en utilisant vos outils de gestion de tâches disponibles (TaskCreate pour Claude, TodoWrite pour Copilot). Marquez chaque tâche in_progress quand vous la commencez et completed quand vous la terminez. Cela empêche que des étapes soient silencieusement ignorées à mesure que le contexte grandit. </required>

Examen des modifications d'API

Étape 1 : Identifier ce qui a changé

git diff $(git merge-base HEAD origin/main)...HEAD -- '**/api-report/**/*.md'

Créez un tableau résumé et présentez-le à l'utilisateur :

Package Type de modification Tag(s) Rupture ?

Types de modification : addition, suppression, changement de signature, promotion de tag.

Si toutes les modifications concernent exclusivement @internal, informez l'utilisateur qu'il n'y a pas de modifications d'API visibles pour les clients et arrêtez-vous.


Étape 2 : Vérifier les tags de release, la documentation et l'accessibilité des exports

Pour tout nouvel export, vérifiez que chacun possède un tag de release et signalez tout tag manquant à l'utilisateur — API Extractor échouera avec ae-missing-release-tag. Aidez l'utilisateur à choisir le bon tag :

Tag Quand l'utiliser
@public Stable, prêt pour la production. SemVer complet. À utiliser seulement quand la forme est finalisée.
@beta En recherche de retours, chemin vers @public. Production acceptable avec prudence.
@alpha Expérimental, retours précoces uniquement. Pas pour la production. Aucune garantie de stabilité.
@internal Interne au framework uniquement, pas pour les consommateurs externes.

En cas de doute : @alpha — plus facile à promouvoir qu'à rétrograder. @legacy est un modificateur associé (@legacy @public ou @legacy @alpha) pour les APIs v1 FF ; ne l'appliquez pas aux nouvelles APIs.

Pour tout nouvel export visible pour les clients (@public, @beta, @alpha) destiné à être utilisable par les consommateurs du package, vérifiez qu'il est accessible depuis le point d'entrée public du package, et non simplement exporté du module ou dossier adjacent. Tracez et mettez à jour la chaîne d'export à travers chaque barrel index.ts pertinent jusqu'au point d'entrée racine du package (généralement src/index.ts, ou des points d'entrée échelonnés comme src/alpha.ts / src/beta.ts le cas échéant). Les exports de barrel parent manquants constituent des modifications d'API incomplètes. API Extractor peut ne pas rapporter l'API prévue du tout, et les consommateurs sont censés importer depuis le point d'entrée de haut niveau du package plutôt que d'accéder à des sous-chemins.

Vérifiez également que chaque nouvel export visible pour les clients (@public, @beta, @alpha) possède une documentation TSDoc — au minimum un résumé, des tags @param et @returns si applicable. Signalez toute documentation manquante à l'utilisateur.


Étape 3 : Informer l'utilisateur de l'examen par l'API Council

Informez l'utilisateur si sa modification nécessite l'approbation de l'API Council :

Surface modifiée Approbation requise ?
@public, @legacy @public, @beta, @legacy @alpha Oui — fluid-cr-api sera automatiquement assigné comme relecteur obligatoire sur la PR
@alpha uniquement (pas @legacy) Non — mais un engagement précoce avec le council est encouragé
@internal uniquement Non

Dites à l'utilisateur : l'approbation du council est un agrément distinct de l'examen du propriétaire du domaine. Pour engager le council, il peut contacter le membre API Council de son équipe EM ou taguer @FF API sur Teams. Partagez ce lien avec l'utilisateur pour plus de détails : https://eng.ms/docs/experiences-devices/opg/office-shared/fluid-framework/fluid-framework-internal/fluid-framework/docs/dev/resources/api-council


Étape 4 : Évaluer les changements cassants

Un changement cassant supprime ou modifie une API existante de manière à causer des erreurs de compilation pour les consommateurs qui mettent à jour.

@public / @legacy+@public

Si c'est un changement cassant pour @public ou @legacy @public, informez l'utilisateur que c'est probablement une erreur — les releases majeurs sont très rares. Les APIs @public cassantes doivent être coordonnées avec une release majeure ; l'ancienne API doit être dépréciée au moins 3 mois avant dans une release mineure avec un remplacement clair.

Partagez ces liens avec l'utilisateur pour le processus requis :

@beta / @legacy+@alpha

Si c'est un changement cassant pour @beta ou @legacy @alpha, informez l'utilisateur :

  • Les changements cassants ne peuvent être intégrés que dans des versions mineures qui sont un incrément de 10 (2.10, 2.20, 2.30, …)
  • La PR doit être staged sur une branche test/breaks/client/#.#0/ et retenue jusqu'à l'ouverture de la fenêtre de rupture
  • Il devrait vérifier si des partenaires (par ex. office-bohemia) consomment l'API directement — en cas de doute, supposez que c'est le cas et prévoyez 12 semaines de délai

Partagez ces liens avec l'utilisateur :

@alpha uniquement

Informez l'utilisateur : bien que @alpha n'ait aucune garantie de stabilité contractuelle, il existe un accord informel de ne pas casser office-bohemia. Si ce changement pourrait casser office-bohemia, il devrait être staged en utilisant le même processus que ci-dessus.

En cas de doute, recommandez à l'utilisateur de tester d'abord contre office-bohemia en exécutant le pipeline d'intégration office-bohemia sur sa branche. Partagez ces liens :

Informez également l'utilisateur : s'il saute cette vérification et que le changement casse office-bohemia, le pipeline d'intégration quotidien le détectera et FF OCE reviendra la PR ou le contactera pour qu'il le fasse dès que possible.


Étape 5 : Liste de vérification de la dépréciation

Si une API est en cours de dépréciation, vérifiez que ce qui suit est en place et signalez tout ce qui manque à l'utilisateur :

  • [ ] Le commentaire TSDoc @deprecated inclut : version dépréciée, version de suppression, remplacement et un lien vers la tracking issue :
    /**
     * @deprecated 2.x.y. Supprimé en 3.0.0. Utilisez {@link replacementApi} à la place.
     * Voir {@link https://github.com/microsoft/FluidFramework/issues/ABCD} pour le contexte.
     */
  • [ ] GitHub issue créée en utilisant le modèle "Deprecated API" comme sous-issue de la tracking issue appropriée
  • [ ] Utilisation dans le codebase supprimée (les utilisations test-only peuvent subsister avec un commentaire explicatif)
  • [ ] Changeset présent (voir Étape 6)

Partagez ce lien avec l'utilisateur pour une orientation complète sur la dépréciation : https://github.com/microsoft/FluidFramework/wiki/API-Deprecation


Étape 6 : Changeset

Tous les changements d'API visibles pour les clients nécessitent un changeset — additions, modifications, dépréciations, promotions de tag, suppressions.

Vérifiez qu'il existe : git status --porcelain -- .changeset/

Si aucun n'existe, créez-en un au nom de l'utilisateur depuis la racine du repo :

pnpm flub changeset add --empty

Cela crée un fichier nommé aléatoirement dans .changeset/. Éditez-le avec du contenu basé sur ce qui a changé. Le frontmatter YAML liste les packages affectés (seulement ceux significatifs pour les consommateurs) avec le type de bump minor, plus "__section" pour diriger vers la bonne section des notes de release : feature (nouvelles APIs), deprecation, breaking (majeur / serveur uniquement ; utilisez legacy pour les ruptures d'API legacy), tree (modifications des APIs SharedTree/@fluidframework/tree), fix, ou other.

Règles de la ligne de résumé (de .changeset/README.md) : succincte, pas de ponctuation terminale, pas de formatage backtick, temps présent. Test de préfixe : prépendez mentalement « Dans cette release, » pour vérifier que c'est naturel. Le corps peut inclure un exemple de code pour les features, dépréciations et changements cassants.

Après avoir rédigé le changeset, affichez le contenu à l'utilisateur et confirmez qu'il a l'air correct avant de poursuivre.


Étape 7 : Résumé

Présentez à l'utilisateur un résumé clair :

  1. Modifications d'API trouvées (tableau de l'Étape 1)
  2. Tout tag de release ou documentation manquants
  3. Si l'examen par l'API Council est requis
  4. Tout avertissement de changement cassant et le processus que l'utilisateur doit suivre
  5. Tout problème de dépréciation
  6. Statut du changeset

Terminez avec un go/no-go clair : « Vos modifications semblent bonnes pour la fusion » ou « Veuillez résoudre ces problèmes avant la fusion : … »

Skills similaires