Δ ATS FR · EN

Le Système Temporel Apollonien (ATS)

Statut : Pré-release v0.7 Symbole : Δ (U+0394 GREEK CAPITAL LETTER DELTA) Langue source : Anglais. La traduction française (manifesto.fr.md) est fournie pour l'accessibilité ; en cas de divergence, le document anglais (manifesto.en.md) fait foi. Type de document : Spécification normative avec annexes non normatives. Emplacement canonique : https://github.com/s-geffroy/ATS — fichier docs/spec/manifesto.fr.md. Assertion centrale : ATS est le standard temporel computationnel universel d'une civilisation en réseau, multi-site et multi-planétaire. Il remplace le modèle grégorien année/mois/semaine + heure locale par un compteur unique, décimal, linéaire, ancré sur un jalon technologique à l'échelle de l'espèce.


0. Conventions

0.1 Niveaux d'exigence

Les mots clés DOIT, NE DOIT PAS, REQUIS, DEVRA, NE DEVRA PAS, DEVRAIT, NE DEVRAIT PAS, RECOMMANDÉ, NON RECOMMANDÉ, PEUT et OPTIONNEL dans ce document doivent être interprétés comme décrits dans BCP 14 [RFC 2119, RFC 8174] quand, et seulement quand, ils apparaissent en majuscules.

0.2 Notation

0.3 Glossaire (condensé)

Le glossaire complet est au §17. Référence rapide :


1. Périmètre

ATS est un système de coordonnées continu sur l'axe temporel UTC : une application déterministe et bijective qui associe à un instant UTC t une chaîne positionnelle en base 10 ats(t). L'application est :

Les implémentations DOIVENT traiter les valeurs ATS comme des identifiants d'instants UTC. Les implémentations NE DOIVENT PAS attacher de métadonnées de fuseau horaire, de calendrier ou de locale à une valeur ATS stockée. Les interfaces logicielles transportant des valeurs ATS NE DOIVENT PAS porter de champ fuseau horaire.

Les bénéfices qu'ATS apporte, par ordre de priorité :

  1. Échange non ambigu — deux systèmes échangeant des valeurs ATS ne peuvent pas être en désaccord sur l'instant référencé.
  2. Simplicité de calcul — l'arithmétique des durées, la planification, la comparaison statistique se réduisent à de l'arithmétique base-10 ordinaire.
  3. Passage à l'échelle long terme — Kilo est non borné ; le format reste stable à travers les siècles et les corps célestes (cf. annexe multi-planétaire).
  4. Neutralité culturelle — un seul ancrage, un seul ensemble d'unités, identiques pour tout utilisateur.

1.1 Ce qu'ATS n'est pas

Pour prévenir les erreurs de catégorie et désamorcer les disputes évitables, quatre frontières sont rendues explicites :

  1. ATS n'est pas une théorie sur la nature du temps. Les effets relativistes (dilation gravitationnelle, frame dragging, désaccords de simultanéité) s'appliquent à UTC et donc à ATS inchangés. ATS hérite des sémantiques de coordonnée d'UTC ; il n'affirme rien d'additionnel sur la physique. Le mot « linéaire » dans ce document DOIT être lu comme « coordonnées linéaires sur l'axe UTC », et non comme une affirmation métaphysique.

  2. ATS n'est pas un remplacement des calendriers culturels, religieux ou civiques. Les calendriers lunaire (hébraïque, islamique), luni-solaires (chinois, hindou), ecclésiastiques (liturgique), fiscaux, académiques et civiques PEUVENT coexister avec ATS comme présentations indépendantes du même instant UTC. ATS fournit l'interopérabilité entre ces systèmes ; il ne les déplace pas. Cf. §13.

  3. ATS n'est pas un protocole de synchronisation d'horloges. NTP [RFC 5905], PTP [IEEE 1588], GNSS et la dissémination TAI alimentent les implémentations ATS. Ils ne sont pas en concurrence avec ATS. ATS est une représentation, pas une horloge.

  4. ATS n'affirme pas que la base 10 est métaphysiquement privilégiée. La base 10 est choisie parce que sa friction d'adoption est la plus faible de toutes les bases positionnelles : unités SI, monnaies, reporting financier, notation scientifique, informatique numérique. Le choix est d'ingénierie, pas de numérologie.

1.2 Alignement biologique

ATS n'est pas seulement pratique pour le calcul ; son échelle d'unités suit les cycles biologiques empiriques. Cet alignement n'est pas un hasard de la base 10 — il reflète le fait que l'unité naturelle de la vie humaine est le jour solaire, et que la physiologie humaine subdivise ce jour en ratios approximativement base-10. Chaque unité ATS correspond à une granularité mesurée de la cognition ou du comportement humain.

Unités micro (intra-jour) et chronobiologie :

Unité ATS Durée Corrélat biologique
Kin (1 jour) 24 h Cycle circadien — sommeil/veille, cortisol, température corporelle centrale
Bloc (0,1 jour) 2 h 24 min Cycle ultradien repos–activité — durée naturelle de focalisation profonde avant fatigue mesurable, validé en vigilance, EEG, hormonal basal (BRAC, Kleitman)
Centi (0,01 jour) 14 min 24 s Focus micro-tâche — durée d'attention soutenue sur une tâche unique, congruent avec le micro-bloc Pomodoro et les intervalles de méditation « assise »
Milli (0,001 jour) 1 min 26 s Régulation respiratoire lente — 12 respirations à la cadence calme de 6 respirations/min, cadence standard du breathwork et de la méditation
Beat (0,0001 jour) 8,64 s Battement attentionnel — durée d'un tour de parole conversationnel, d'un cycle inhale-exhale au repos actif, ou d'un cycle de couplage cardiaque (HRV bande LF)
Blink (0,00001 jour) 0,864 s Fenêtre de réaction — proche de la borne supérieure du temps de réaction de choix et d'un clignement volontaire lent

Unités macro (multi-jours) et chronosociologie :

Unité ATS Durée Corrélat biologique / social
Kin (1 jour) 24 h Le jour solaire — l'unité de référence de toute mesure chronobiologique
Deka (10 jours) ≈ 1,4 semaine Oscillation travail–repos — durée pratique d'accumulation de fatigue et de récupération significative (périodisation d'entraînement, études sur le travail posté)
Hecto (100 jours) ≈ 3,3 mois Saison / trimestre de planification — limite pratique de la planification humaine à moyen terme avant dérive des priorités (cadence OKR, semestres académiques)
Kilo (1 000 jours) ≈ 2,7 ans Projet pluriannuel — durée typique des projets de recherche focalisés, des mandats électoraux courts, ou de l'acquisition de compétence soutenue (10 000 heures ≈ 1,25 Kilo à 8 h/jour)
Génération (informel, ≈ 10 000 jours) ≈ 27,4 ans Rotation démographique des générations — utile uniquement dans le discours multi-générationnel (cf. note §4.2)

ATS n'est donc pas imposé à la biologie ; l'échelle est lisible sur la biologie. La technique Pomodoro (≈ 25 min, entre Centi et 2×Centi), le rythme ultradien (90–120 min, proche d'un Bloc), le trimestre OKR (≈ Hecto) et l'heuristique des « 10 000 heures de maîtrise » (≈ 1 Kilo de temps professionnel) ont été découverts indépendamment d'ATS. Chacun trouve une place normalisée dans le système de coordonnées ATS.

Cet alignement est non normatif — les implémentations ne peuvent pas le tester, et le standard n'exige d'aucun utilisateur qu'il suive ces correspondances. Mais l'alignement est intégral à la justification : §1.1 affirme qu'ATS ne pose pas la base 10 comme métaphysique ; §1.2 explique pourquoi la base 10 s'aligne néanmoins sur les cycles humains mesurés une fois le jour solaire pris pour ancrage.


2. Époque (Point Zéro)

ATS utilise un jalon technologique vérifiable, à l'échelle de l'espèce, comme instant de référence unique : le jour où un membre de l'espèce humaine a occupé pour la première fois, en personne, la surface d'un corps autre que la Terre.

2.1 Pourquoi le début du jour, pas l'instant de l'alunissage

L'époque DOIT être ancrée sur le minuit UTC de la date d'alunissage. L'alternative (instant exact de l'alunissage) décalerait le compteur de jour d'UTC et placerait Bloc 5 à 08:17:40 UTC au lieu de 12:00 UTC. L'ancrage choisi préserve la propriété :

Bloc 5  ≡  12:00 UTC exactement
Bloc 0  ≡  00:00 UTC exactement

Cette propriété est structurante pour le cadran analogique (analog-clock.md), pour la pédagogie, et pour le snapshot cron /api/now.json. L'instant de l'alunissage est préservé comme point remarquable à l'intérieur de Δ 0 pour que le sens culturel ne soit pas perdu.

2.2 Ancrages alternatifs rejetés

Candidat UTC Motif de rejet
Instant d'alunissage Apollo 11 1969-07-20T20:17:40Z Décale le compteur de jour d'UTC : Bloc 5 tombe à 08:17:40 UTC. Pédagogiquement et computationnellement déroutant.
Lancement Spoutnik 1 1957-10-04T19:28:34Z Robotique ; aucun membre de l'espèce n'a quitté la planète. Marque la capacité humaine, pas la présence humaine ailleurs.
Hiroshima 1945-08-06T08:15:00Z Marque civilisationnellement, mais l'espèce a légitimement intérêt à ne pas se dater à partir d'un préjudice. Rejeté sur bases humanistes.
Premier vol motorisé (Wright) 1903-12-17T15:35:00Z Atmosphérique uniquement ; l'espèce n'a pas quitté son enveloppe.
Lancement Apollo 11 1969-07-16T13:32:00Z Départ, pas arrivée. L'événement célébré est l'arrivée sur un autre corps.
Premier pas (Armstrong EVA) 1969-07-21T02:56:15Z Symbolique, mais l'alunissage précède, et l'EVA tombe le jour UTC suivant (Δ 1).
Année 0 d'un calendrier existant divers Religieux ou arbitraire ; aucun ne fournit de consensus à l'échelle de l'espèce.
Début de l'Holocène (≈ −10 000 BCE) inconnu à la seconde Échoue à la vérifiabilité à la seconde depuis des sources indépendantes.

2.3 L'époque résiste à quatre attaques courantes

Le choix de l'époque est la décision la plus contestée de cette spécification. Quatre attaques reviennent ; elles sont traitées normativement ici pour que le débat sur l'ancrage soit résolu au niveau du standard plutôt que porté dans chaque implémentation.

Attaque A — « Apollo 11 est américain ; le choix est nationaliste. » L'événement est daté ; le standard ne l'est pas. ATS utilise Apollo 11 comme ancrage de datation uniquement — pas comme une revendication de priorité nationale sur le temps. Comparer avec UTC : le temps est défini au méridien d'origine, mais nul ne prétend qu'UTC est « britannique ». Un standard s'identifie par le compteur entier qu'il émet, pas par l'origine culturelle de son ancrage. Les implémentations conformantes et les utilisateurs conformants d'ATS ne font aucune affirmation de priorité nationale.

Attaque B — « Un ancrage en 1969 rend les dates pré-époque incommodes (grands nombres T-). » Tous les calendriers partagent ce problème : le grégorien utilise des années négatives (BC/BCE) ; les calendriers hébraïque, islamique et holocène reculent leur époque pour que les nombres positifs couvrent l'usage moderne au prix de dates pré-époque encore plus reculées. ATS privilégie délibérément les dates post-époque parce que l'ère post-Apollo est celle où débute le calcul en réseau multi-site — c'est-à-dire le moment où un standard temporel universel devient opérationnellement nécessaire. Les dates pré-époque utilisent T- et sont mécaniquement symétriques (§3) ; la conversion est identique dans les deux sens.

Attaque C — « Pourquoi pas un événement abstrait (Big Bang, début de l'Holocène, année zéro d'un calendrier) ? » Un événement-époque ATS valide DOIT satisfaire quatre propriétés :

i. Vérifiable à la seconde depuis des sources indépendantes ; ii. Témoigné à l'échelle de l'espèce (en direct, à des centaines de millions de personnes) ; iii. Sans victime humaine identifiable, pour que le standard ne commémore pas un préjudice ; iv. Marque une discontinuité dans la situation de l'espèce, pas seulement dans sa perception.

Aucune alternative du XXᵉ ou XXIᵉ siècle ne satisfait les quatre. Les événements astronomiques abstraits échouent au (i). Les événements religieux échouent à être consensuels-neutres. Les actes de guerre échouent au (iii). L'alunissage d'Apollo 11 est le candidat consensuel unique.

Attaque D — « Les alunissages Lune et Mars sont aussi arbitraires. Pourquoi ceux-là et pas Curiosity, Voyager, Cassini ? » L'annexe multi-planétaire (multi-planetary.md) traite ce point. Chaque corps céleste qui requiert son propre compteur ATS reçoit son propre ancrage, justifié par les quatre mêmes propriétés appliquées à l'histoire de ce corps. L'ancrage Terre et l'ancrage Mars sont des décisions indépendantes ; les confondre est une erreur de catégorie.


3. Directionnalité : T+ et T-

ATS est symétrique autour de l'époque.

Dans la forme canonique (§4), le marqueur de direction est REQUIS. Les implémentations DOIVENT émettre soit T+ soit T- et NE DOIVENT PAS l'omettre. La forme abrégée « Δ seul » est interdite en forme canonique.

Dans la forme courte (§5), le marqueur de direction est omis ; T+ est implicite. Les implémentations décodant la forme courte DOIVENT supposer T+ et PEUVENT signaler tout usage en direction négative comme non supporté.

T+ Δ 0.0.0.0.00000 et T- Δ 0.0.0.0.00000 dénotent le même instant (l'époque). Les implémentations DOIVENT les traiter comme égaux.


4. Représentation canonique

4.1 Syntaxe canonique (normative)

Syntaxe canonique en ABNF [RFC 5234] :

canonical    = direction SP delta SP days "." frac
direction    = "T" sign
sign         = "+" / "-"
delta        = %xCE.94            ; Δ (U+0394, UTF-8 0xCE 0x94)
days         = kilo "." digit "." digit "." digit
kilo         = 1*DIGIT            ; entier non négatif non borné, pas de zéros initiaux sauf "0"
frac         = 5*DIGIT            ; précision par défaut ; plus de chiffres permis (§4.4)
digit        = %x30-39
SP           = %x20               ; un espace ASCII

Exemple (ère courante, ≈ 57 ans post-époque, 12:00 UTC, 13 juin 2026) :

T+ Δ 20.7.8.2.50000

Les implémentations DOIVENT émettre exactement un espace ASCII entre direction et delta, et exactement un espace ASCII entre delta et days. Les implémentations DOIVENT accepter de l'espace supplémentaire en entrée uniquement si elles documentent explicitement cette tolérance ; le parseur strict DOIT rejeter tout espace excédentaire.

4.2 Unités macro (calendrier)

ATS compte les jours avec des positions base-10 fixes :

Position Nom Valeur Fonction
....X Kin 1 jour Le jour solaire
...X. Deka 10 jours Cycle travail-repos
..X.. Hecto 100 jours Saison / trimestre de planification
X.... Kilo 1 000 jours Mandat / projet pluriannuel

Kilo n'a pas de borne supérieure. Au fil des décennies, le nombre de tête croît librement (20.x.x.x, 100.x.x.x, 1000.x.x.x).

Vocabulaire informel — « Génération ». ~10 000 jours (≈ 27,4 ans) s'appelle familièrement une Génération. Ce N'EST PAS un chiffre positionnel ; il vit seulement dans le discours social et philosophique (cf. annexe Philosophy).

4.3 Unités micro (horloge)

La fraction du jour se décompose en positions nommées :

Position Nom Fraction Durée approx.
.X.... Bloc 0,1 jour 2 h 24 min
..X... Centi 0,01 jour 14 min 24 s
...X.. Milli 0,001 jour 1 min 26,4 s
....X. Beat 0,0001 jour 8,64 s
.....X Blink 0,00001 jour 0,864 s

4.4 Précision (variable)

La précision canonique par défaut est de 5 chiffres fractionnaires (jusqu'au Blink). Les implémentations PEUVENT étendre la précision (par exemple 9 chiffres ≈ 0,0086 ms pour des usages scientifiques ou de synchronisation réseau) en émettant des chiffres supplémentaires après le Blink. Les implémentations DOIVENT déclarer la précision émise, soit hors bande (schéma, en-tête), soit par le nombre de chiffres effectivement présents. Les implémentations PEUVENT raccourcir la précision pour l'affichage ; dans ce cas la politique d'arrondi du §6 s'applique.


5. Forme conversationnelle (UI humaine)

5.1 Syntaxe courte (normative)

Syntaxe courte en ABNF :

short        = delta days "-" bc "." milli
delta        = %xCE.94
days         = kilo "." digit "." digit "." digit
kilo         = 1*DIGIT
bc           = 2DIGIT             ; la paire Bloc+Centi sur 2 chiffres, zero-paddée
milli        = DIGIT              ; un chiffre Milli unique
digit        = %x30-39

Exemple :

Δ20.7.8.2-50.0

Propriétés obligatoires de la forme courte (les implémentations DOIVENT les imposer) :

L'ancienne forme courte ΔK.H.D.Kin/cc (avant v0.7) est refusée. Les implémentations NE DOIVENT PAS l'accepter ; elles PEUVENT émettre un diagnostic suggérant la forme canonique équivalente pour conversion.

5.2 Quand utiliser chaque forme

Encoder les deux formes est REQUIS de toute implémentation user-facing.


6. Politique d'arrondi

ATS utilise une troncature plancher stricte lors de la réduction de précision pour affichage.

6.1 Définition

Soit t la valeur réelle de jours écoulés (un nombre réel) et p une précision entière (nombre de chiffres fractionnaires). La valeur affichée à la précision p, notée display(t, p), est définie par :

display(t, p) = floor(t × 10^p) / 10^p

6.2 Invariants

Pour tout t ≥ 0 et toute précision p ≥ 0 :

Pour t < 0 (côté T-), la même définition s'applique à |t| et le signe est préservé séparément. De façon équivalente, du côté T-, display rapproche la valeur de l'époque (puisque la magnitude se rétrécit sous la troncature plancher).

6.3 Exigences

6.4 Justification (contre half-even)

L'arrondi half-even (« banker's ») est correct pour moyenner des mesures : il élimine le biais statistique long terme. Il est incorrect pour un compteur monotone : un pas half-even peut produire une valeur affichée strictement supérieure au temps réel écoulé, même brièvement. ATS privilégie la monotonicité véridique sur la symétrie de moyennage. Le coût est un biais fixe et déterministe d'au plus une unité de précision affichée vers le passé ; ce biais est exposé comme contrat (§6.2) et acceptable pour tout usage privilégiant le déterminisme sur la symétrie.


7. Fuseaux horaires

ATS n'a aucun fuseau horaire interne.

LST(tz, t) = t + tz_offset_at(tz, t)

tz_offset_at consulte l'IANA Time Zone Database pour l'offset (heure d'été comprise) à l'instant t dans le fuseau tz. La valeur ATS sous-jacente est inchangée. LST est non normatif ; le seul contenu normatif d'une valeur ATS est son instant UTC.


8. Secondes intercalaires

8.1 Longueur du jour

ATS s'aligne sur la sémantique POSIX d'UTC : chaque jour ATS DOIT contenir exactement 86 400 secondes SI.

Les secondes intercalaires UTC — positives (insertions) comme négatives (suppressions, théoriques) — DOIVENT être absorbées dans le jour standard. ATS NE DOIT PAS émettre de 23:59:60 ni d'indicateur analogue de « leap ».

8.2 Politique de lissage

Lorsqu'une seconde intercalaire survient en UTC, les implémentations DOIVENT choisir, documenter et appliquer de façon déterministe l'une des politiques de lissage suivantes pour le jour ATS affecté :

Les implémentations DOIVENT documenter leur choix dans leur documentation publique. Les implémentations échangeant des valeurs ATS NE DOIVENT PAS supposer que le récepteur partage la même politique de lissage ; un échange précis à la sous-seconde autour d'un événement leap REQUIERT une coordination hors bande sur l'offset TAI-UTC.

8.3 Réservé : variante ATS-TAI

Une révision future PEUT définir une variante ATS-TAI dont l'époque est ancrée sur TAI plutôt que sur UTC. ATS-TAI ne requerrait pas de lissage et divergerait d'ATS-UTC de l'offset TAI-UTC courant. Cette variante est réservée ; elle ne fait pas partie de la v0.7.


9. Définition de la conversion

La conversion d'un instant UTC vers ATS, et inversement, DOIT être implémentée selon le pseudo-code ci-dessous. Les implémentations conformantes produisent des résultats bit-à-bit identiques sur les vecteurs de conformance (docs/spec/test-vectors.json).

9.1 UTC → ATS (gregorian_to_ats)

function gregorian_to_ats(utc: UTCInstant) -> ATS:
    # Précision requise : la représentation UTC de l'hôte DOIT résoudre au
    # moins à la microseconde. La résolution sous-microseconde est OPTIONNELLE
    # et n'a de sens qu'en précision étendue (§4.4).
    EPOCH_UTC = "1969-07-20T00:00:00Z"
    US_PER_DAY = 86_400_000_000
    ATS_DECIMALS = 5
    ATS_SCALE = 10 ** ATS_DECIMALS              # = 100_000

    delta_us = microseconds_since(utc, EPOCH_UTC)   # entier signé

    if delta_us >= 0:
        sign = "T+"
        abs_us = delta_us
    else:
        sign = "T-"
        abs_us = -delta_us

    integer_days, remainder_us = divmod(abs_us, US_PER_DAY)
    # frac_int a exactement ATS_DECIMALS = 5 chiffres, dans [0, 100_000).
    frac_int = floor((remainder_us * ATS_SCALE) / US_PER_DAY)

    kilo, rem  = divmod(integer_days, 1000)
    hecto, rem = divmod(rem, 100)
    deka, kin  = divmod(rem, 10)

    return ATS(sign, kilo, hecto, deka, kin, frac_int)

9.2 ATS → UTC (ats_to_gregorian)

function ats_to_gregorian(ats: ATS) -> UTCInstant:
    EPOCH_UTC = "1969-07-20T00:00:00Z"
    US_PER_DAY = 86_400_000_000
    ATS_SCALE = 100_000

    integer_days = ats.kilo * 1000 + ats.hecto * 100 + ats.deka * 10 + ats.kin
    abs_us = integer_days * US_PER_DAY + ats.frac * (US_PER_DAY / ATS_SCALE)
    # Note : US_PER_DAY / ATS_SCALE = 864_000 exactement ; pas d'arrondi.

    if ats.sign == "T+":
        return EPOCH_UTC + abs_us microsecondes
    else:
        return EPOCH_UTC - abs_us microsecondes

9.3 Contrat de conformance

Une implémentation conformante DOIT satisfaire :

pour chaque paire (utc, ats) dans test-vectors.json :
    assert gregorian_to_ats(utc) == ats
    assert ats_to_gregorian(ats) == truncate_to_blink(utc)

truncate_to_blink(utc) tronque utc au multiple de 864 microsecondes (un Blink) le plus proche dans le passé. Les 12 vecteurs de base de test-vectors.json couvrent ATS Terre ; les 10 vecteurs chacun de test-vectors-multi-planetary-mars.json et -moon.json couvrent l'annexe multi-planétaire.

Une implémentation de référence en Python vit dans code/ats.py. Une implémentation de référence en JavaScript vit dans docs/assets/js/ats.js. Les deux DOIVENT produire une sortie bit-à-bit identique sur tous les vecteurs de conformance.


10. Décodage de la forme courte

La forme courte ΔK.H.D.Kin-BC.M est intentionnellement à perte. Les implémentations la décodant DOIVENT appliquer le contrat suivant :

10.1 Contrat de décodage

function decode_short(short_str: str) -> ATS:
    # Parser selon l'ABNF §5.1. Rejeter toute entrée malformée avec une erreur explicite.
    match = strict_short_regex.match(short_str)
    if match is None:
        raise InvalidShortForm(short_str)
    kilo, hecto, deka, kin, bc, milli = parse(match)
    # La forme courte encode Bloc+Centi comme paire 2 chiffres et Milli comme
    # un seul chiffre ; Beat et Blink sont inconnus et DOIVENT défaut à 0.
    frac = bc * 1000 + milli * 100
    return ATS("T+", kilo, hecto, deka, kin, frac)

10.2 Contrat de précision

La valeur ATS décodée correspond à un intervalle UTC semi-ouvert. Soit decoded le résultat du décodage de la chaîne courte s. L'instant UTC vrai qui a produit s se trouve dans :

[ats_to_gregorian(decoded), ats_to_gregorian(decoded) + 86,4 secondes)

C'est-à-dire exactement un Milli d'incertitude. Les implémentations exposant le résultat décodé à d'autres systèmes DOIVENT le labéliser comme approximatif (précision : ±86,4 s).

10.3 Parsing strict

Les implémentations DOIVENT rejeter :


11. Durées (Δd)

Jusqu'au §10, ATS décrit des instants. Une notation distincte est définie pour les durées (différences signées entre instants).

11.1 Syntaxe

duration     = direction SP "Δd" SP days "." frac
direction    = "T" sign
sign         = "+" / "-"
days         = kilo "." digit "." digit "." digit
kilo         = 1*DIGIT
frac         = 5*DIGIT

11.2 Exemples

11.3 Contraintes

Les durées s'écrivent uniquement en forme canonique ; aucune forme courte n'est définie. Leur précision correspond à celle des instants dont elles dérivent — la règle de troncature plancher (§6) s'applique des deux côtés.

11.4 Algèbre (normative)

Les opérations suivantes sont les seules opérations légales sur les types Δ (instant) et Δd (durée signée). Toute autre combinaison est un comportement indéfini ; les implémentations DOIVENT lever une erreur de type.

Signatures.

Opération Types Résultat Description
Δ + Δd (instant, durée) Δ Avancer un instant d'une durée.
Δd + Δ (durée, instant) Δ Forme commutative de la précédente.
Δ − Δd (instant, durée) Δ Reculer d'une durée.
Δ − Δ (instant, instant) Δd Différence signée entre deux instants.
Δd + Δd (durée, durée) Δd Somme de durées.
Δd − Δd (durée, durée) Δd Différence de durées.
Δd × n (durée, scalaire) Δd Mise à l'échelle d'une durée par un rationnel n.
Δd ÷ n (durée, scalaire) Δd Mise à l'échelle inverse.
−Δd (durée) Δd Négation.
` Δd ` (durée)

n est un entier ou un rationnel quelconque. Les implémentations exposant des durées en virgule flottante DOIVENT documenter la précision flottante utilisée et la borne résultante sur l'erreur d'arrondi cumulée.

Comparaisons. < ≤ = ≥ > sont définies :

Sémantique de débordement. Toute opération produisant un instant ou une durée DOIT ré-émettre la forme canonique avec :

Identités.

Vecteurs de conformance. docs/spec/test-vectors-arithmetic.json (12 cas) couvre les sept opérations, les retenues Kin → Deka et Deka → Hecto → Kilo, le franchissement d'époque (T+ → T-) et les comparaisons inter-signes.


12. Encodage binaire

Pour le stockage, l'IoT et l'échange binaire, ATS définit une disposition 64 bits fixe.

┌──────┬────────────────────────────────────────────────┬──────────────────────────────┐
│ bit  │            high 40 bits (jours, signés)        │   low 24 bits (fraction)     │
│      │  complément à deux, big-endian                 │  big-endian non signé         │
│      │  plage : −2^39 .. 2^39 − 1                     │  0 .. 16_777_215             │
└──────┴────────────────────────────────────────────────┴──────────────────────────────┘

12.1 Champs

12.2 Encodage (pseudo-code normatif)

function encode_binary(ats: ATS) -> bytes:
    integer_days = ats.kilo * 1000 + ats.hecto * 100 + ats.deka * 10 + ats.kin
    days_signed = integer_days if ats.sign == "T+" else -integer_days
    day_fraction = ats.frac / 100_000        # exact quand ats.frac < 100_000
    frac24 = floor(day_fraction * 16_777_216) # 0 .. 16_777_215
    # Pack big-endian 64 bits : top 40 bits = days (complément à deux),
    # bottom 24 bits = frac24.
    return pack_big_endian_int40(days_signed) || pack_big_endian_uint24(frac24)

12.3 Propriétés

12.4 Octets de référence (vecteurs de test)

Instant Binaire (hex, big-endian)
Époque (T+ Δ 0.0.0.0.00000) 00 00 00 00 00 00 00 00
Époque + 1 jour 00 00 00 00 01 00 00 00
Époque − 1 jour FF FF FF FF FF 00 00 00
Époque + 0,5 jour 00 00 00 00 00 80 00 00
Époque − 0,5 jour FF FF FF FF FF 80 00 00
T+ Δ 20.7.8.2.50000 00 00 00 51 1F 80 00 00
T- Δ 0.0.0.1.00000 FF FF FF FF FF 00 00 00 (= époque − 1 jour)

12.5 Interopérabilité


13. Hors-périmètre

ATS est un système de coordonnées, pas une culture. Les éléments suivants sont explicitement hors périmètre :

  1. ATS ne préserve pas les mois, les jours de la semaine, ni les cycles religieux. Les calendriers culturels (hébraïque, islamique, chinois, hindou, maya, liturgique, baha'i, etc.) PEUVENT exprimer le même instant UTC dans leurs propres systèmes positionnels. ATS fournit l'interopérabilité entre tels systèmes ; il ne les déplace pas. Les bridges de conformance (code/bridges/*.py) démontrent qu'une implémentation peut exprimer un instant ATS dans n'importe quel calendrier culturel.

  2. ATS n'encode pas directement le midi solaire local. Lever, coucher et midi local sont des fonctions de la position géographique. Ce sont des préoccupations de couche présentation. Cf. §7 sur LST.

  3. ATS ne légifère pas sur un rythme travail-repos. Le Deka (10 jours) est une unité de mesure, pas un mandat social. Toute convention sociale superposée au Deka (par exemple, 7+3 travail-repos, 6+4, 5+5) est une convention (cf. conventions.md), jamais normative.

  4. ATS ne prend pas position sur l'observance religieuse. Le Sabbat, la prière du vendredi, Pâques, l'Aïd al-Fitr, Diwali et autres observances sont des événements sur l'horloge murale ; une implémentation ATS peut les stocker et les rapporter, mais ATS ne les interprète ni ne les hiérarchise.

  5. ATS ne remplace pas UTC. ATS est une représentation d'instants UTC. Migrer d'une représentation basée sur UTC (ISO 8601, epoch Unix) vers ATS laisse la chronologie sous-jacente inchangée. UTC reste la source de vérité ; ATS est la projection canonique d'UTC dans un système de coordonnées décimal.

  6. ATS ne s'impose pas sur les corps qu'il n'adresse pas. L'annexe multi-planétaire définit des ancrages pour Mars et la Lune. Les corps pour lesquels aucune annexe n'existe (Vénus, Europe, exoplanètes) n'ont pas de compteur ATS normatif ; les tiers PEUVENT définir le leur à l'aide du framework générique (multi-planetary.md §6).

  7. ATS ne prétend pas être plus « spirituel » ou plus « naturel » que les alternatives. ATS revendique d'être plus computationnel : précis, non ambigu, base-10, sans fuseau, sans mois. Les vertus computationnelles suffisent comme justification ; aucune revendication esthétique ou métaphysique n'est faite par ce document.


14. Annexes


15. Versionnement et stabilité

15.1 Version courante

Ce document spécifie ATS v0.7 (pré-release).

15.2 Contrat SemVer

15.3 Engagements de stabilité post-v1.0

Les éléments suivants sont gelés post-v1.0. Les modifier requiert un bump de version majeure :

Les éléments suivants PEUVENT évoluer aux versions mineures post-v1.0 de façon additive uniquement :

15.4 Changements de v0.3.x (« RC v1.1 ») à v0.7


16. Processus standards et gouvernance

16.1 Modèle de processus

ATS est développé comme une spécification publique vivante. Les décisions normatives sont prises par les éditeurs du document ; le public participe en soumettant issues et pull requests contre le texte canonique. Les implémentations conformantes sont listées dans le README.md du projet.

16.2 Procédure RFC

Tout changement normatif à ce document DOIT suivre la procédure RFC définie dans versioning.md §6 :

  1. Le proposeur ouvre un document RFC public (issue GitHub ou pull request) décrivant le changement, la justification et le chemin de migration.
  2. La RFC reste ouverte au commentaire public pendant un minimum de 14 jours calendaires.
  3. Les éditeurs du document enregistrent une décision (accepter, modifier, rejeter) avec raisonnement.
  4. Les changements acceptés sont consignés dans CHANGELOG.md et deviennent normatifs au merge.

16.3 Intention IANA / IETF

Les éditeurs ont l'INTENTION de soumettre ATS comme RFC informationnelle à l'IETF après le gel v1.0. Un registre IANA est prévu pour les labels de forme canonique et de forme courte, les identifiants de corps multi-planétaires et les emplacements des vecteurs de conformance. Jusqu'à l'adoption par un organisme de normalisation reconnu, ATS est une spécification développée publiquement, pas un standard international reconnu.

Ce positionnement est intentionnel et n'est pas une faiblesse. Beaucoup de standards largement déployés (TOML, JSON, EditorConfig) ont commencé comme spécifications développées publiquement hors des organismes formels. Le critère qui compte est la reproductibilité de conformance : deux implémentations passant les vecteurs de conformance produisent une sortie identique. ATS satisfait ce critère en v0.7.

16.4 Gouvernance

Jusqu'à v1.0, les décisions normatives appartiennent aux éditeurs d'enregistrement du document. Post-v1.0, la gouvernance est engagée vers un modèle multi-éditeurs avec les propriétés suivantes :

16.5 Conformance

Une implémentation REVENDIQUE LA CONFORMANCE à cette spécification en :

  1. Passant docs/spec/test-vectors.json (Terre) bit-à-bit.
  2. Passant docs/spec/test-vectors-arithmetic.json (algèbre) bit-à-bit.
  3. Implémentant les parseurs stricts pour les formes canonique et courte.
  4. Documentant sa politique de lissage des secondes intercalaires (§8.2).
  5. Documentant sa classe de précision (5 chiffres par défaut, ou étendue).

La conformance est binaire, non graduée : une implémentation est conformante ou ne l'est pas. La conformance partielle aux sections optionnelles (multi-planétaire, encodage binaire) DOIT être documentée explicitement.


17. Glossaire (complet)


Références

Source : manifesto.fr.md