Summary
- Dans
draft-wei-capability-language-core-00,allow_unresolvedest une valeur autonome : la contrainte est reconnue, mais les preuves ou l'évaluateur disponibles ne permettent pas de conclure. - Le consommateur doit conserver l'ensemble normalisé des obligations, les traiter comme une conjonction et refuser dès qu'une obligation est violée ou ne peut pas être résolue.
- Une résolution temporelle correcte expire. Un résultat
allowobtenu dans une fenêtre ne peut pas rester en cache après la fin de cette fenêtre.
Trois états ne rentrent pas dans un booléen
Imaginons une commande de bascule réseau permise entre 03 h 00 et 03 h 20, depuis un segment approuvé. Le moteur confirme le réseau, mais aucun now digne de confiance ne lui est fourni. CLC revision 00 ne devine pas. Il rend allow_unresolved avec l'obligation d'horloge encore visible.
Ce résultat ne signifie ni « presque autorisé » ni « autorisé sous réserve d'un contrôle ultérieur ». Il signifie que le calcul d'autorisation est inachevé. Le consommateur doit obtenir une heure fiable, produire une résolution et appeler Resolve, ou refuser l'action.
Le risque surgit souvent dans le code le plus banal : une bibliothèque transforme l'enum en booléen, une passerelle considère toute réponse non vide comme un succès, un moteur de workflow ne connaît que réussite et échec. La composante qui simplifie le type devient alors, sans mandat, la véritable autorité de décision.
Comprendre la grammaire ne satisfait pas la règle
CLC se veut indépendant du support. Il ne décide pas si le jeton natif, le document CBOR ou la preuve du porteur est digne de confiance. Cette vérification appartient à l'environnement. Il n'exécute pas non plus l'action. Son contrat consiste à évaluer un langage commun sans masquer ce qui reste à établir.
La révision 00 reconnaît notamment des contraintes d'horloge et de réseau. Reconnaître leur syntaxe permet de les parser, de les normaliser et de les transmettre. Cela ne fournit ni horloge fiable, ni observation courante du réseau, ni évaluateur propre au déploiement.
Supprimer une contrainte connue mais non évaluée élargirait silencieusement le pouvoir du capability. Le projet la place donc dans unresolved. Plusieurs obligations de même scheme/type sont liées par AND. N'en garder que la première, la dernière ou la plus commode ne constitue pas une optimisation : c'est une réécriture de la politique.
La normalisation donne aux deux côtés le même inventaire. Les doublons réellement équivalents peuvent être regroupés ; les obligations distinctes demeurent. L'ordre prescrit porte sur les octets UTF-8 et non sur le tri par défaut d'un langage. L'ordre UTF-16 habituel d'ECMAScript, par exemple, n'est pas une preuve de conformité. Un inventaire déterministe rend le désaccord détectable, sans transformer l'obligation en fait accompli.
Resolve ferme la boucle ou maintient le refus
Resolve reçoit la décision initiale et l'état de chaque obligation. Sa priorité est volontairement prudente : un seul état violated produit deny; tous les états satisfied produisent allow; la présence d'un unknown maintient allow_unresolved. Une résolution mal formée ou un horodatage invalide aboutit au refus.
Le journal doit donc relier les deux étapes. Il faut conserver la version du langage, le résultat de vérification native, l'enum initial, l'ensemble non résolu, l'identité et la version de chaque évaluateur, la référence de preuve, l'heure d'observation, l'état de chaque obligation, l'enum final et l'action libérée. « Resolver appelé » ne dit pas quelle preuve a complété quelle autorisation.
Le chemin consacré aux preuves ne possède pas de zone grise comparable : une condition inconnue y est UNSATISFIED. Cette asymétrie évite de confondre la représentation honnête d'une autorisation inachevée avec l'affirmation qu'une preuve serait suffisante.
La permission de 03 h 18 meurt à 03 h 20
Une horloge fiable indique 03 h 18. La contrainte est satisfaite et Resolve peut rendre allow. Deux minutes plus tard, ce résultat atteint sa limite. À 03 h 23, le rejouer depuis un cache serait une nouvelle décision sans nouvelle évaluation.
Un cache indexé uniquement par sujet, ressource et action perd l'élément déterminant. Il doit intégrer le contexte évalué et expirer au plus tard à la première fin de segment parmi toutes les obligations temporelles. RFC 3339 fournit une représentation de l'heure ; il ne désigne ni l'horloge de confiance, ni la dérive acceptable, ni le responsable d'une donnée périmée.
La containment ne résout pas davantage cette question. Un capability peut rester dans le périmètre structurel d'un autre et être inutilisable maintenant. Il peut être parfaitement normalisé et provenir d'un support non fiable. Une autorisation finale ne prouve pas que l'opération a été exécutée ni que son effet a été observé.
Les « reality layers » de Heng Lu empêchent cette contraction : le texte du capability est un symbole, la liste normalisée une représentation, les observations appartiennent au fonctionnement, et l'effet survient encore après. La spécification minimale peut standardiser la remise de l'obligation sans s'approprier les décisions locales de confiance.
La révision 00 annonce 123 vecteurs de conformité et 1 184 cas de propriétés sur trois implémentations. C'est un socle de code exécutable utile. Les trois implémentations partagent toutefois un auteur ; le seuil d'implémentation indépendante indiqué par le projet n'est pas atteint. Une équipe indépendante doit tester les bindings d'enum, l'ordre UTF-8, les contraintes répétées, les états unknown, les dates invalides et l'expiration exacte du cache avant toute affirmation forte d'interopérabilité.
Sources and limits
- https://api.github.com/repos/varwof/capability/commits/b15b51b8f94125b7a00aa281f98405806e6ea95c
- https://datatracker.ietf.org/doc/draft-wei-capability-language-core/
- https://datatracker.ietf.org/doc/draft-wei-capability-language-core/history/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://www.ietf.org/archive/id/draft-wei-capability-language-core-00.html
- https://www.rfc-editor.org/rfc/rfc2119.html
- https://www.rfc-editor.org/rfc/rfc3339.html
- https://www.rfc-editor.org/rfc/rfc7493.html
- https://www.rfc-editor.org/rfc/rfc8174.html
- https://www.rfc-editor.org/rfc/rfc8785.html
- https://www.rfc-editor.org/rfc/rfc9396.html
Ces sources établissent l'existence d'un Internet-Draft individuel actif, de son corpus public et de spécifications connexes. Elles n'établissent ni consensus IETF, ni RFC, ni adoption par un groupe de travail, ni audit indépendant, ni déploiement généralisé, ni confiance du support, ni résultat opérationnel. Cet Article se limite au canal des contraintes reconnues mais non évaluées, à la boucle Resolve et à l'expiration temporelle de la révision 00.
Briefing des membres
Contexte approfondi du profil
Connectez-vous avec le bon niveau d'adhésion pour débloquer le briefing complet et les notes de source.
Réservé à Strategic Circle
Strategic Circle
Ouvert à tous les lecteurs. Débloquez les briefings de profil après adhésion et connexion.
Rejoindre Strategic CircleRéservé aux membres de Leadership Alliance
Leadership Alliance
Réservé aux propriétaires et dirigeants qualifiés d'actifs IP ; connectez-vous pour débloquer les briefings Alliance.
Rejoindre Leadership Alliance

