1 points par GN⁺ 2025-06-29 | 1 commentaires | Partager sur WhatsApp
  • L’article présente l’idée de considérer la procédure de demande de passeport au Royaume-Uni comme un jeu de puzzle, puis de programmer ce processus complexe en Haskell pour en formaliser les règles.
  • La demande de passeport en ligne tire l’essentiel de son intérêt de la collecte de documents variés, de l’interprétation de règles complexes et de quêtes secondaires inattendues.
  • En reliant la logique du processus à la logique constructive, l’auteur souligne que des documents originaux sont indispensables pour étayer chaque preuve.
  • À l’aide de la monade LogicT de Haskell et de la gestion d’état (State), il suit la liste des documents nécessaires et les chemins logiques permettant de prouver la citoyenneté britannique.
  • En pratique, le HMPO semble avoir tendance à exiger d’abord le chemin de preuve le plus complexe, et l’adoption d’outils d’automatisation reste lente en raison des limites de l’interprétation automatique de règles juridiques complexes.

Introduction : la demande de passeport comme un jeu

  • Alors que la tendance consistant à résoudre des jeux en ligne ou des puzzles à l’aide de la programmation se développe, la Passport Application britannique est abordée ici sous cet angle.
  • La Passport Application est une sorte de « jeu d’aventure-puzzle de collecte de documents » auquel les Britanniques s’adonnent tous les 10 ans, avec un coût d’environ £100 et un design textuel minimaliste très rigoureux.
  • L’objectif du jeu est de rassembler, via plusieurs administrations, divers justificatifs (artefacts) afin de prouver, selon des critères juridiques complexes, que « ce demandeur est britannique ».
  • La récompense du jeu est un livret de passeport et « la date à laquelle une nouvelle partie devient possible ».

Structure du jeu et difficulté

  • La version papier hors ligne repose sur le courrier recommandé et des procédures de certification, avec à chaque étape des documents à réunir décrits sous forme d’instructions ou de tableaux.
  • Le début de la procédure est relativement simple, mais à mesure que la partie avance, diverses « quêtes annexes » et difficultés apparaissent.
    • Exemple : demander une vérification d’identité à une connaissance exerçant une profession spécifique, obtenir une traduction certifiée de documents en langue étrangère, coopérer en famille, explorer les procédures administratives propres à chaque organisme, etc.

Retour d’expérience : le niveau « premier enfant né à l’étranger »

  • L’auteur s’est attaqué, pour sa jeune fille, au niveau « premier enfant né à l’étranger » et s’attendait à une difficulté élevée en raison de ses nombreuses expériences passées.
  • Il s’est aperçu par la suite que la moitié des documents demandés au départ étaient inutiles, et que les exigences ainsi que les explications avaient été conçues de manière très ambiguë et confuse.
  • Il est impossible de communiquer directement avec l’examinateur chargé du dossier ; on ne peut obtenir qu’une aide officieuse par l’intermédiaire d’un agent de support faisant office de relais.
  • De nouvelles demandes de documents surgissent sans cesse, parfois même pour des pièces inexistantes, avec des requêtes allant jusqu’aux actes de naissance ou de mariage d’ancêtres familiaux rares, ce qui fait encore monter la difficulté.

La logique du HMPO : la bureaucratic logic

  • La logique de la demande de passeport peut être vue comme une bureaucratic logic dérivée de la logique constructive.
  • Au lieu d’une simple preuve « vrai/faux », il faut soumettre directement les pièces justificatives originales correspondant à chaque règle.
  • Le tiers exclu n’étant pas admis, on ne peut pas prouver qu’« un des scénarios est forcément vrai » ; il faut impérativement suivre un seul chemin et fournir les documents correspondants.
  • En particulier, la « Britishness » dépend de la nationalité des parents, et les demandes de documents progressent récursivement sous forme d’arbre généalogique.
    • Cas de base : naissance au Royaume-Uni avant 1983, naturalisation, etc., où aucune preuve parentale n’est nécessaire.

Modéliser les règles en Haskell

  • Dans le but de modulariser les règles et d’automatiser l’inférence, l’auteur a prototypé la logique de la demande en Haskell, en utilisant notamment la monade LogicT.
  • Il déclare des types tels que Person/Document/Proof afin de modéliser les différents chemins de justification documentaire selon les conditions.
  • La fonction de preuve de la Britishness explore, à partir des informations en entrée (sur chaque personne), plusieurs chemins de preuve possibles (Set of Proofs).
  • En suivant l’arbre des Proof, elle produit les combinaisons minimales de documents nécessaires (Set of Set Document).
  • La combinaison de StateT et LogicT IO permet des requêtes interactives et un partage d’état, avec embranchements et backtracking selon « les informations connues ».
  • Logique d’analyse de la citoyenneté britannique :
    • chemin unique fondé sur une preuve de naturalisation ;
    • chemin conditionnel (de base) en cas de naissance au Royaume-Uni avant 1983 ;
    • preuve récursive via les parents, avec conditions supplémentaires comme le mariage légal ;
    • ajout d’un chemin spécial selon que les parents sont BOTBD (British Otherwise Than By Descent) ;
    • prise en charge dans le code de règles d’exception comme le Crown Service.

Exécution d’exemple et chemins de preuve

  • Via ghci, le programme déduit automatiquement un total de trois chemins de preuve (Proof) selon les entrées réelles (lieu de naissance du demandeur, nationalité des parents, etc.).
  • Pour chacun de ces chemins de preuve, il produit la liste des documents requis (combinaison de certificats, actes de mariage, etc.).
  • Le chemin le plus complexe montre qu’il faut remonter jusqu’aux ancêtres pour une preuve récursive et la démonstration des liens matrimoniaux.

Discussion et conclusion

  • Dans la réalité, le HMPO semble parfois exiger délibérément d’abord le chemin de preuve le plus complexe, tandis que les contradictions juridiques réelles ou les règles de détail relèvent de guides séparés ou du principe de « balance of probabilities ».
  • Si des outils d’automatisation se généralisaient, les demandeurs pourraient beaucoup plus facilement identifier leur propre chemin de preuve et les documents nécessaires.
  • Mais comme le droit est extrêmement subtil et changeant, une automatisation simple dans laquelle « l’ordinateur rend un verdict yes/no » comporte des risques.
  • L’auteur est actuellement en train d’essayer de prouver le dossier par le deuxième et le troisième chemin.

Résumé du code et de la structure documentaire de référence

  • L’intégralité du code Haskell est disponible sur GitHub.
  • On peut y consulter l’implémentation détaillée de la logique Haskell, notamment les différents types, chemins de preuve, structures de modules et fonctions de requête.

1 commentaires

 
GN⁺ 2025-06-29
Commentaires Hacker News
  • Récit d’une expérience de travail, sur les dix dernières années, dans divers grands systèmes de l’administration britannique. Développer le logiciel du gouvernement britannique revient à encoder des centaines d’années de lois votées par le Parlement. Dans des systèmes comme celui des passeports du HMPO, quand la loi change, il faut retrouver et corriger toutes les parties de chaque système qu’elle affecte. Le gouvernement sous-traite ce travail à de coûteux cabinets de conseil, qui sont incités à faire durer les contrats le plus longtemps possible et à extraire un maximum de profit de leurs clients. Au passage, la qualité et la flexibilité des systèmes varient énormément, et quand la loi change à nouveau, tout ce processus complexe recommence. Le coût élevé des services publics s’explique aussi par l’absence d’un organisme central capable de coordonner ce problème via des décisions d’ensemble.
    • On se demande s’il existe un seul cas où la sous-traitance gouvernementale a vraiment bien fonctionné pour quelqu’un ; on n’a jamais entendu parler d’un succès obtenu par l’État en externalisant quoi que ce soit.
    • Question sur la raison pour laquelle les prestataires n’ont apparemment aucune obligation contractuelle de fournir un « système qui fonctionne » ; interrogation sur le fait qu’ils facturent très cher des systèmes qui ont l’air de fonctionner sans pour autant marcher correctement en pratique.
    • Partage d’une expérience récente de renouvellement de passeport en France : il existe désormais une nouvelle plateforme pour tous les documents, un seul formulaire en ligne suffit, et une seule visite sur place a été nécessaire. Tout a été bouclé en 10 minutes, avec un passeport livré rapidement. Le Royaume-Uni n’est donc pas forcément dans une situation désespérée, mais il faudrait embaucher de vrais développeurs en interne et mener le développement directement.
  • Cela rappelle un cas d’automatisation et de codification du droit fiscal néerlandais à l’aide d’un DSL ; comme ressource connexe, recommandation de la présentation de cas Jetbrains sur les DSL.
  • À propos du « base case » utilisé pour expliquer la structure de détermination de la citoyenneté, exemple donné : toute personne née au Royaume-Uni avant 1983 est citoyenne indépendamment de ses parents. L’auteur dit venir d’un pays où la citoyenneté se résout en un simple SELECT sur une table SQL, et trouve une telle structure difficile à croire.
  • Concernant l’idée que la syntaxe de Haskell serait intuitive, avis selon lequel elle ne le devient qu’après qu’on vous l’a expliquée, mais pas avant. Haskell aurait bien trop d’opérateurs, et même en regardant le code il est difficile d’en saisir immédiatement le sens ; partage d’un lien vers un tutoriel sur les opérateurs Haskell.
    • En comptant grossièrement le nombre d’opérateurs réellement utilisés en Haskell, on tomberait sur un total presque similaire à JavaScript, ou au pire deux fois plus. Haskell a certes une barrière d’entrée initiale, mais les premiers langages qu’on apprend, comme Java ou Python, ont eux aussi leur complexité ; ils ne paraissent faciles qu’une fois assimilés par la pratique. Même la syntaxe de base de Python, comme : ou =, est une source de confusion pour les débutants, donc l’intuitivité serait surtout le produit de l’habitude.
    • Débat sur l’idée qu’une chose devient intuitive après explication, ce qui serait finalement assez proche de ce qu’on appelle l’intuition.
    • Mention que Larry Wall avait dit quelque chose de similaire à propos de Perl ; en réalité, le problème n’est pas tant la syntaxe que les concepts propres à Haskell (monades, lenses, etc.) : sans eux, même une syntaxe simple reste difficile à comprendre.
    • Remarque selon laquelle la plupart des opérateurs du lien sont des éléments tout à fait ordinaires pour un débutant en programmation ; regarder un programme Java ou une formule mathématique sans contexte ne permet pas davantage de comprendre. Le vrai critère devrait être le niveau de compréhension après avoir appris les bases et suivi quelques tutoriels.
  • Ce contenu commence comme une parodie, mais évolue peu à peu vers une solution sérieuse et élégante. À la fin, on a soi-même envie de jouer à ce « jeu » pour de vrai.
    • Commentaire indiquant qu’on peut effectivement y jouer, mais que la séquence de fin est bien plus difficile.
  • Partage d’une expérience réelle de dépôt de documents liés à un passeport britannique depuis le Japon. Les pièces à fournir peuvent varier selon la situation ; dans ce cas, il a fallu préparer de nombreux documents, notamment les actes de naissance de l’auteur et de son enfant, l’original du registre familial japonais, des traductions, un certificat d’acceptation de déclaration de naissance, etc. Une copie couleur de chaque page était demandée, ainsi que des copies de passeports d’autres personnes. La procédure était extrêmement floue, et le système consistait au final à continuer de fournir des documents jusqu’à satisfaire les demandes.
    • Explication du fait que le père de l’auteur du commentaire est né au Royaume-Uni, mais que le grand-père est né à l’étranger, ce qui complique encore la situation.
    • Précision qu’au Japon, on n’a pas demandé les actes de naissance des parents. L’auteur, de nationalité hongroise et britannique et résidant en Hongrie, a en revanche dû fournir les actes de naissance de ses deux parents et de ses quatre grands-parents. Comme son épouse avait des liens distants avec sa famille, une lettre explicative a été jointe et acceptée. Bien que, dans son cas, la nationalité ou l’origine de sa mère n’ait pratiquement aucune importance, il a tout de même dû demander à un ami de la famille, juriste, de vérifier cela en ligne.
    • Question sur la raison pour laquelle toutes les pages du passeport japonais de l’enfant ont dû être remises en copie couleur.
  • Les demandes de passeport britannique peuvent entièrement se faire en ligne, y compris les premières demandes pour les nouveaux citoyens (adoption, naturalisation, filiation), avec prise de photo possible sur simple appareil mobile, sans application dédiée. D’après cette expérience, le processus est efficace, rapide et intuitif.
    • Quelqu’un dit avoir récemment utilisé le système de renouvellement de passeport en ligne et le considère comme le meilleur site web rencontré depuis des années : fonctionnement parfait sur un vieil ordinateur et un ancien navigateur, interface très simple et accessible à tous, navigation étape par étape très claire. Souhait que ce type de conception se diffuse davantage dans le monde de l’entreprise ; éloges adressés au HMPO.
    • Une autre personne dit avoir utilisé récemment le système en ligne pour la première fois et reçu son passeport en seulement deux semaines, en Californie, aux États-Unis. À l’inverse, une expérience de renouvellement de passeport canadien avait pris quatre mois, avec une procédure lourde et beaucoup de justificatifs. Espoir que le pilote de renouvellement numérique sur smartphone soit généralisé.
  • Au Japon, en préparant le passeport de sa fille, quelqu’un a connu d’énormes difficultés à cause d’un décalage entre les noms de famille des parents figurant sur l’acte de naissance. Il a finalement réussi à convaincre l’administration qu’étant né au Royaume-Uni et titulaire de la citoyenneté britannique (avec passeport), ses enfants directs pouvaient en hériter. Cela ne correspondait pas aux documents standard demandés, mais ce serait malgré tout une situation relativement moins pénible que d’autres.
  • Récit d’une expérience de jeu par procuration au jeu « Passport Application ». La règle de « mutable history » est jugée intéressante : les faits associés à certains documents peuvent changer même sur de très courtes périodes, si bien qu’il faut parfois soumettre et scanner à nouveau des documents déjà numérisés. Plaisanterie selon laquelle cela revient à considérer que les arbitres reconnaissent implicitement un multivers. La communication avec les agents de support et les opérateurs, qui jouent le rôle de « PNJ », ressemble à une prière à sens unique : les messages passent mal. Supposition selon laquelle l’OP est fan de Mornington Crescent, car les règles ressemblent à celles d’une demande de passeport.
    • Dans le système britannique, on peut changer librement de nom, au point que même la mère de l’auteur a pu enregistrer sa naissance sous le nom de son troisième mariage. Même les actes de naissance ne sont donc pas totalement immuables, seuls certains champs le sont. Le Passport Office oublie parfois aussi l’historique précédent : une incohérence de nom sur son passeport est redevenue un problème alors qu’elle avait déjà été expliquée. À chaque appel, e-mail ou demande envoyée aux agents/« PNJ », les réponses différaient. C’était aussi incohérent que GPT. Un même document pouvait déclencher une demande complémentaire pour une fille, alors que l’autre obtenait son passeport sans problème. Finalement, sa mère s’est plainte auprès d’un député, et tout a été réglé en une journée.
  • Partage d’une expérience remontant à quelques années avec le « jeu » Passport Application. L’auteur était né au Royaume-Uni et avait un père britannique, mais comme ses parents n’étaient pas mariés et qu’il était né après 1983 mais avant la révision des règles en 2006, il n’était pas citoyen au départ. Vers les années 2010, la loi de 2006 a été appliquée rétroactivement, ce qui lui a permis d’être reconnu comme citoyen. La principale « quête » consistait à fournir l’original de l’acte de naissance de son père, et à la fin il a même fallu assister à une étrange cérémonie obligatoire de serment de loyauté à la reine.
    • Au moins, on a droit au générique de fin.