# Provenance du modèle de travail 2026-preview.1

Date de contrôle : 23 octobre 2026. Cette version est une réimplémentation indépendante du générateur et une adaptation de travail du contrat publié en 2023. Elle ne constitue ni une nouvelle édition juridiquement validée de FACT, ni l’annonce d’un accord des auteurs historiques.

## Sources et droits

Célya Gruson-Daniel, Benjamin Jean, Mehdi Medjaoui et Mark Boyd, *Improving Trustworthy and Sustainability Digital Infrastructures with The Fair API Commitment to Trust Model*, Inno3 ; Les mainteneurs ; Platformable, 2023, 88 pages. Référence canonique : [HAL hal-04180319v1](https://hal.science/hal-04180319v1). [Copie du rapport conservée par le financeur](https://infrastructureinsights.fund/wp-content/uploads/2025/07/API-Terms-of-Service-FACT-Digital-Infrastructure-Grants-2023-report.pdf).

Le rapport et sa notice contractuelle portent une licence [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/). Les crédits, la source, la licence et l’indication des modifications figurent dans chaque export. Cette licence documentaire ne désigne pas automatiquement le régime d’une API, des données, de la spécification, des marques ou du logiciel nouveau. Le choix « sans attribution » concerne la référence au fournisseur de l’API ; il ne retire jamais les crédits du modèle documentaire.

Empreintes SHA-256 des références examinées :

| Référence | Empreinte |
| --- | --- |
| Rapport PDF original | `f4e47cbe1deeb72562180169b9848edc4ad5dbb008f900064c711c3c87453243` |
| Extraction de contrôle `rapport-2023.txt` | `e0aec8f63a1f4c60113a37269ac470c0ed06362977a943324c36b19ce84d054b` |
| Données de comparaison `wizard-archive-2023.json` | `7bb71675f3441f99e663fcf81b345a38c0eb91864ae18212d6f7be3f3a90cf31` |

Le texte contractuel est transcrit depuis le rapport. La matrice publiée page 50 et les données archivées du formulaire servent à identifier les cinq familles et leurs options. Le contrôleur historique du [serveur](https://github.com/platformable/apitos-server), commit `c6299bfc63c18511a019fae532cb4ba203647fb3`, fichiers `src/api/pdf/controllers/pdfData.js` et `pdf.js`, a été lu pour comparer les comportements. Son implémentation n’a pas été copiée. Aucun code de l’ancienne interface n’a été repris. Les captures et médias de l’ancien formulaire ne sont pas nécessaires au fonctionnement.

## Correspondance du texte

| Sections du modèle | Pages du rapport | Contenu |
| --- | --- | --- |
| 0 à 0.2 | 76 | Présentation, statut du pilote et avertissement historique |
| 1.1 à 1.3 | 77 et 78 | Origine, objectifs, engagements et documents contractuels |
| 2 | 78 et 79 | Dix définitions, dont propriété intellectuelle et brevets |
| 3.1 à 3.1.2 | 79 | Neutralité, restrictions objectives, réciprocité FACT |
| 3.2 | 80 | Accès et concession des droits |
| 3.3.1 à 3.3.5 | 80 et 81 | Spécifications, mises à jour, CC0 ou CC BY-SA |
| 3.4.1 à 3.4.3 | 81 et 82 | Modifications techniques et contractuelles |
| 3.5.1.1 à 3.5.1.2.2 | 82 et 83 | Données personnelles et trois régimes de données |
| 3.6 | 83 | Politique relative aux résultats |
| 4.1 à 4.3.1 | 83 et 84 | Mise en oeuvre, usage loyal, attribution standard |
| 4.3.2 à 4.5 | 85 | Absence d’attribution, marques, concurrence et partage |
| 5.1 à 5.5 | 85 et 86 | Responsabilité, juridiction, droit applicable, garanties et durée |
| 5.6, 6.1 et 6.2 | 87 | Validité et annexes A et B |
| 4.4.1 | 50, pour le choix seulement | Ajout rédactionnel de travail, aucune clause équivalente pages 76 à 87 |

La page 88 clôt le rapport avec un renvoi au site et au formulaire. Elle ne contient pas de clause supplémentaire. Les parties `status`, `particulars` et `references` sont des ajouts éditoriaux. Les lignes d’annexe sont fournies par la personne qui prépare le contrat.

## Discordances observées et traitements explicites

| Repère | Écart constaté | Traitement dans 2026-preview.1 |
| --- | --- | --- |
| A1 | Le serveur associe le choix d’accès `12` aux restrictions et `13` au partage ; le formulaire archivé les présente dans l’autre ordre. La matrice page 50 a encore un autre ordre visuel, restrictions puis partage. | Identifiants sémantiques stables `neutral`, `share-alike`, `restricted`. Aucune position, aucun ancien identifiant numérique ne détermine le contenu. |
| A2 | L’ancien formulaire décrit le partage d’accès comme CC BY-SA appliquée à l’API. Les articles 3.1.2 et 4.5 imposent le contrat FACT aux API dérivées. | Le texte publié commande la clause. La description nouvelle indique expressément qu’il s’agit de réciprocité FACT, distincte de la licence de spécification CC BY-SA. |
| A3 | Le contrôleur retire tout l’article 3.1 lorsque l’accès n’est pas l’option neutre. Le texte publié prévoit déjà des restrictions objectives dans 3.1. | Neutralité et information technique communes à toutes les options ; 3.1.1 et 3.1.2 sont des branches supplémentaires. Il s’agit d’une interprétation éditoriale documentée, à relire. |
| A4 | Article 3.1.2 : le renvoi publié à 4.4 vise la concurrence, alors que le partage est en 4.5. | Renvoi corrigé vers 4.5. |
| A5 | Article 3.2 : la durée renvoie à l’article 10, absent du contrat. | Renvoi corrigé vers 5.5. |
| A6 | Trois titres sont numérotés 3.4.2 dans le rapport. Les deux variantes de données sont numérotées 3.5.1.2.1. | Titres 3.4.1, 3.4.2, 3.4.3 et 3.5.1.2.1, 3.5.1.2.2 ; texte conservé. |
| A7 | Le titre 3.3.5 répète « Specification Contract » ; son texte dit « could apply ». | Titre explicite de partage de spécification ; « applies » rend l’option sélectionnée opérante. Cette substitution est une adaptation de concordance, pas une transcription verbatim. |
| A8 | L’option de données ouvertes dit « should combine » alors que la sélection présente ce régime comme choisi. | « combines » dans la branche sélectionnée. La licence et les contenus restent à renseigner en annexe A. |
| A9 | Le rapport juxtapose les variantes de spécification et de données. L’ancienne logique peut être interprétée comme substitutive, mais le PDF n’est pas un contrat personnalisé. | Une seule branche de spécification et une seule branche de données par export. La renonciation étendue ne se cumule pas avec une licence commerciale. |
| A10 | La phrase de non-concurrence en 3.6 est inconditionnelle dans le rapport et le contrôleur, alors que 4.4 est une option distincte. | Seconde phrase de 3.6 et article 4.4 présents uniquement pour `non-compete`. Aucun de ces textes pour `commercial` ou `non-commercial`. |
| A11 | Le partage 4.5 est inconditionnel dans le contrôleur, malgré le choix d’accès. | 4.5 présent uniquement pour `share-alike`, avec 3.1.2. |
| A12 | Choix non commercial dans la matrice page 50 et le formulaire archivé, sans clause dédiée dans le contrat publié ni branche `43` du contrôleur. | Ajout 4.4.1 clairement identifié : « The API User agrees to use the API only for non-commercial purposes. » Portée non définie, avertissement dans chaque export concerné. |
| A13 | Le contrôleur n’inclut pas l’attribution standard lorsque 4.3.3 est sélectionné, alors que cette clause se réfère explicitement au standard « described above ». | `trademark` comprend 4.3.1 et 4.3.3. `none` comprend seulement 4.3.2. |
| A14 | Le contrôleur appelle une propriété absente pour la phrase d’introduction de 4.2. Le rapport contient cette phrase. | Phrase publiée conservée : responsabilité de l’utilisateur sur les produits suivie de quatre exigences. |
| A15 | Phrase 5.1 « shall be held accountable » contredite par les phrases qui l’entourent. | Sens source conservé ; contradiction signalée en tête de chaque export. Proposition séparée dans relecture-juridique.md, sans application implicite. |
| A16 | Les champs de juridiction sont des blancs distincts ; date d’effet et documents d’annexe ne sont pas définis par défaut. | Saisie séparée de la juridiction et du droit applicable, date d’effet sans valeur automatique, annexes personnalisables. Les blancs deviennent des repères « TO COMPLETE ». |
| A17 | Le paragraphe 1.3 décrit un profil de base ; certaines de ses promesses ne décrivent pas toutes les configurations et sa restriction de réutilisation des données ne correspond pas à la renonciation étendue de 3.5.1.2. | Paragraphe conservé et avertissement explicite. Aucune résolution juridique silencieuse du conflit. |
| A18 | La référence INTILA est placée en note après la mention de licence documentaire, sans être un lien vers CC BY 4.0. Le contrôleur tronque en outre son URL en `publicatio7a88b`. | URL complète du rapport restaurée ; référence INTILA et lien officiel CC BY 4.0 distingués en bibliographie. |
| A19 | Le contrôleur extrait les choix par position dans une chaîne et ne valide pas les valeurs, ce qui peut omettre des branches sans message explicite. | Validation stricte des cinq familles, des valeurs et des champs de personnalisation. Les sélections inconnues ou incomplètes sont refusées. |

## Normalisations matérielles

Le titre et le slogan de couverture sont remplacés par un titre de travail versionné qui ne présente pas la fiabilité juridique comme acquise. Retours de ligne de mise en page, numéros de page, pieds de page et puces typographiques ont été normalisés en texte simple. Les paragraphes coupés entre pages sont réunis. La césure `know- how` et la coupure de l’URL CC0 sont réparées. Les tirets longs sont remplacés par des virgules ou un deux-points, sans changement volontaire de portée.

Corrections ponctuelles : titre « GPDR » en « GDPR » ; « i any » en « if any » ; « Core API Provide » en « Core API Provider » ; « changeover time » en « change over time » ; « API Use acknowledges » en « API User acknowledges » ; point manquant après « responsibility of the API User » ; espace manquant dans « third parties.The » ; « API User s obligated » en « API User is obligated » ; sujet manquant de l’introduction de 4.3.1 rétabli. Les maladresses restantes, notamment « evocation », les notions non définies et la phrase de résiliation, sont signalées dans relecture-juridique.md. Le sens de 5.1 n’a pas été réécrit.

## Interface et déterminisme

Le module `model.mjs` exporte `VERSION`, `SOURCE`, `families`, `defaultSelection`, `detailFields`, `annexTemplates`, `validateSelection` et `generateContract`.

`generateContract(selection, details)` renvoie `{version, title, selection, selectionSummary, details, sections, text, warnings, source}`. Une section possède `{id, title, paragraphs, sourcePages, added?}`. Le titre n’inclut pas le numéro. `paragraphs` est une liste de chaînes de texte, jamais du HTML. `added: true` identifie les parties éditoriales et la clause non commerciale ajoutée. `sourcePages: [50]` sur 4.4.1 indique l’origine du choix, pas celle de la phrase ajoutée.

Sélection complète :

```json
{"access":"neutral","specification":"cc0","data":"waiver","output":"commercial","attribution":"required"}
```

Chaque clé admet exclusivement les identifiants définis dans `families`. Appeler la fonction sans sélection utilise le profil par défaut. Un objet de sélection explicitement incomplet ou inconnu est rejeté, sans profil deviné.

Les détails sont `providerName`, `apiName`, `apiUrl`, `contact`, `effectiveDate`, `jurisdiction`, `applicableLaw`, `contractUrl` et `annexes`. Chaque entrée d’annexe contient `title`, `url`, `description`, qui peuvent inclure du texte contractuel. La date d’effet, lorsqu’elle est renseignée, doit être une date calendaire valide au format AAAA-MM-JJ. Les données absentes restent visibles. L’annexe B inclut l’adresse du contrat et le contact ; ses instructions d’origine sont conservées. Les valeurs sont des textes non fiables à afficher avec `textContent` ou à échapper dans un export HTML. Une URL fournie n’est jamais exécutée ni transformée en lien actif par le modèle.

Le module ne lit ni date courante, ni réseau, ni stockage, ni état de navigateur. Les mêmes entrées normalisées produisent les mêmes sorties. Les objets de sortie sont indépendants, les paramètres de référence immuables. Aucun état distant ni service payant n’est nécessaire.

## Vérifications

171 tests passent, comprenant l’examen des 162 profils, la présence des clauses communes et des seules options correspondantes, les renvois, la conservation des garanties et des limites de responsabilité, l’unicité des 162 corps contractuels, le déterminisme, les champs vides, les types invalides et les chaînes pouvant contenir du code ou du balisage. Commande reproductible : `node model.test.mjs` depuis le dossier du modèle, ou `node --test model.test.mjs` sur un environnement standard.

Vérification des pages sources 76 à 87 par extraction structurée ; examen visuel ciblé des pages 79, 85 et 86 pour la hiérarchie d’options, la réciprocité, les marques et la contradiction de responsabilité. Les paragraphes de garanties et de limitation sont présents dans tous les profils. Ces contrôles établissent un comportement technique et une traçabilité textuelle, sans certifier l’applicabilité juridique des 162 combinaisons.
