Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-065 — Descellement additif couche-1-v1.1 : AirRuntime::errno_location

Statut : Accepté (2026-07-03, autorisation BDFL — l’additif errno_location et la délégation des re-sceaux additifs ont été approuvés explicitement). RFC de structure (ADR-015). Applique le modèle de re-sceau additif du sceau couche 1 (ADR-062), précédent couche 0 ADR-051.

Catégorie : Descellement additif de la couche 1 scellée (couche-1-v1.0couche-1-v1.1). Aucune rupture ; jalons antérieurs conservés.

Contexte

Le premier toit posé sur la couche 1 scellée — la libc C-ABI scopée OpenSSH (roadmap docs/roadmap-libc-openssh-fr.md, jalon M0) — révèle, exactement comme anticipé (ADR-062 : « la libc est le driver des additifs v1.x »), un premier besoin non couvert : __errno_location() (le errno C-ABI) doit rendre l’adresse stable, par-thread de l’errno que la couche 1 possède déjà (#[thread_local] d’air-runtime), pour que la libc et le PAL partagent un seul canal errno (zéro globale, vision Air).

Décision

Descellement additif couche-1-v1.1 : on ajoute à air-runtime (crate scellée) :

  • AirRuntime::errno_location() -> *mut i32 (adresse par-thread de l’errno) ;
  • la méthode support location() dans les trois branches de stockage de l’errno ;
  • thread_control_block::errno_location.

Purement additif : aucune signature publique existante n’est modifiée ; seule la surface grandit. Host-testé (2 tests). Les jalons couche-1-v1.0 sont conservés intégralement.

Gouvernance — délégation des re-sceaux additifs (BDFL, 2026-07-03)

Le BDFL a délégué au superviseur les tags de re-sceau additif-seulement (option B) : tout descellement purement additif révélé par la production des toits est traité par le superviseur (ADR de descellement + tag couche-1-v1.x), sans autorisation au cas par cas. Seuls sont remontés au BDFL : les changements non-additifs (rupture) et les compromis de sécurité. Cet ADR-065 et le tag couche-1-v1.1 s’inscrivent sous cette délégation (l’additif lui-même a néanmoins été approuvé explicitement, étant le premier).

Conséquences

  • Tag git couche-1-v1.1 posé sur le commit de merge M0 (signé).
  • air-runtime gagne une méthode ; les consommateurs de couche-1-v1.0 restent compatibles (additif).
  • Précédent posé : les additifs futurs révélés par la libc → couche-1-v1.2, etc., chacun avec son ADR de descellement, sous la délégation ci-dessus.

Alternatives rejetées

  • Faire la libc lire l’errno en direct de la couche 0. Rejeté : la couche 1 est le seul consommateur de la couche 0 (doctrine) ; la libc passe par la couche 1.
  • Une globale errno dédiée à la libc. Rejeté : zéro globale libc (vision Air) ; canal errno unique partagé libc ⇄ PAL, per-thread.

Suite

  • Tag couche-1-v1.1 après merge M0. Note de re-sceau dans INDEX.md + etat-avancement.md.