____14DS — Événements sous forme de Flags-Enum et events_result

Déclencheur S6, constat AP7

La chaîne d'événements de DS03 (machine à états avec prev_event_sha256) est restée, lors de la première utilisation, sous forme de fichiers individuels — le constat (Repo-Bloat) et la correction ont conduit à la représentation par Flags dans le conteneur : les étapes sont des bits, le résultat est un masque de bits.

La définition de l'Enum

Ancrée normativement dans le schéma (non répétée pour chaque conteneur) :

Étape Bit Signification
offered 1 Signature demandée (document présenté pour signature)
accepted 2 Le destinataire en a pris connaissance (§ 126b Abs. 1 BGB : accès)
denied 4 Le destinataire refuse (exclut sign)
sign 8 Signature apposée (référence Facsimile/clé)
withdraw 16 Signature retirée (exclut sign)

Le Flags-Set

"events": {
  "enum_definition": {
    "offered": 1, "accepted": 2, "denied": 4, "sign": 8, "withdraw": 16
  },
  "flags_set": {
    "offered":  { "set": true,  "timestamp_utc": "2026-09-13T17:31:00Z", "uuidV7": "…", "sha256": "f1358236…" },
    "accepted": { "set": true,  "timestamp_utc": "2026-09-13T17:33:00Z", "uuidV7": "01a09bd4…", "sha256": "71905eea…" },
    "denied":   { "set": false, "timestamp_utc": null, "uuidV7": null, "sha256": null },
    "sign":     { "set": true,  "timestamp_utc": "2026-09-13T17:35:00Z", "uuidV7": "01a09bd6…", "sha256": "dab7ddfe…" },
    "withdraw": { "set": false, "timestamp_utc": null, "uuidV7": null, "sha256": null }
  },
  "events_result": 11,
  "chain_valid": true
}

Le résultat : events_result = 11

offered(1) + accepted(2) + sign(8) = 11
Résultat Interprétation
1 offered uniquement — en attente
2 accepted uniquement — sans offered (irrégulier, à vérifier)
3 offered + accepted — prêt pour la signature
11 offered + accepted + sign — entièrement signé
4 denied — refusé (pas de sign)
16 withdrawn — retiré
7 offered + accepted + denied — contradiction (chain_valid=false)

Le masque de bits est vérifiable de manière déterministe — un vérificateur refait le calcul :

jq -r '.events.events_result' container.gcpn.md
jq -r '[.events.flags_set[] | select(.set == true)] | length' container.gcpn.md
# → Anzahl der gesetzten Bits muss mit Popcount(events_result) übereinstimmen

Aucune contradiction possible

La machine à états (DS03) et la sémantique des bits empêchent ensemble les déroulements irréguliers :

Protocole des acquis de la recherche (AP7)

AP Constat Mise en œuvre
AP7 Événements sous forme de fichiers individuels → Bloat ; séquence d'états sous forme de texte Flags-Enum avec masque de bits events_result + chain_valid

Le chaînage prev_event_sha256 reste en place (résumé sous forme de confirmation chain_valid) — les bits remplacent la répétition de la machine à états, pas la vérification d'intégrité.


Créé : 260913 | Partie III, article ____14DS | Série : digital-signage