TENIR / REG

Architecture globale, explicative et visuelle : théorie, standard, runtime, signaux structurels, chaîne de transformation, preuve, audit et catalogue de configurations.

Runtime : TENIR-Gov Standard : REG Core + REG+ Preuve : EvidenceRecord Audit : v5.6.0 → v5.7.0 Catalogue : 144 configurations

1. Les trois piliers de l’écosystème

TENIR / REG repose sur une séparation stricte entre la théorie, le standard et le runtime. Cette séparation est essentielle : elle évite de confondre ce qui est conçu, ce qui est exigé, et ce qui est exécuté.

📚 Théorie

Les papiers posent le diagnostic, la séparation conceptuelle et la formalisation. Ils expliquent pourquoi la gouvernance runtime ne peut pas être réduite à un simple policy engine.

Paper 1 — diagnostic Paper 2 — séparation Paper 3 — formalisation

📜 Standard REG

Le standard définit ce que le système doit garantir. Il est séparé en REG Core pour les invariants, et REG+ pour les profils, hypothèses et règles de compatibilité structurelle.

REG Core — invariants REG+ — profils σ catalogue v1.0.0

⚙️ Runtime TENIR-Gov

TENIR-Gov est l’implémentation de référence. Il exécute le standard : il évalue, commit, enregistre la preuve, et intègre les signaux d’infrastructure.

Evaluate() Commit() Record() Assure()

2. Architecture à 5 niveaux

Le modèle de résolution descend de la règle métier jusqu’à l’exécution machine. Aucune étape ne doit être sautée : une intention métier ne devient exécutable qu’après traduction, résolution en profil, puis projection en invariants runtime.

Niveau 0 — Règle métier

Exprimée par l’équipe fonctionnelle ou le régulateur. Exemple : « Ne pas double-exécuter un paiement. » Elle est complète dans son registre, mais pas encore exécutable.

Niveau 1 — Contrainte réglementaire

Exemple : EU AI Act Art. 12, DORA Art. 9. La compliance traduit l’exigation réglementaire en obligation de traçabilité, de supervision ou de contrôle.

Niveau 2 — Acte de médiation

L’architecte de gouvernance traduit :

Intention métier + Hypothèses d’infrastructure = Règle substantive

C’est l’étape où la règle devient dépendante du contexte de déploiement.

Niveau 3 — Standard REG Core & REG+

La règle substantive est résolue en profil σ, puis décomposée en invariants I*. Le profil est le contrat ; les invariants sont les primitives exécutables.

Resolve(i, h, R, V) → Profile(σ, I*) σ = contrat I* = invariants

Niveau 4 — Runtime TENIR-Gov

La membrane exécute : Evaluate() produit un verdict, Commit() applique la mutation, Record() produit la preuve reconstructible.

Evaluate(σ, I*, s, τ) → verdict Commit(σ, s, τ, v) → s′ Record(...) → EvidenceRecord

3. Runtime TENIR-Gov — fonctions fondamentales

Le runtime sépare strictement l’adjudication, la mutation, la preuve et l’assurance. Cette séparation est au cœur de la robustesse de l’architecture.

Evaluate()

Fonction pure. Elle lit le profil, les invariants, l’état s et la transition proposée τ. Elle retourne un verdict. Elle ne modifie rien.

PASS FLAG HOLD HARD_VETO

Commit()

Fonction mutative. Elle tente d’appliquer les effets de bord si le verdict l’autorise. Si le commit échoue, le verdict effectif n’est pas PASS.

COMMITTED FAILED_RACE FAILED_CONSTRAINT SKIPPED

Record()

Produit l’EvidenceRecord : contexte, entrées, résultats, trace de commit, hash canonique et signature. La preuve doit être reconstructible par un tiers.

SHA-256 Ed25519 JCS

Assure()

Service externe qui observe l’infrastructure et injecte des signaux attestés dans l’état. Le moteur ne détecte pas lui-même les violations d’hypothèses.

HYPOTHESIS_VERIFIED HYPOTHESIS_WEAKENED HYPOTHESIS_VIOLATED
Règle centrale : l’adjudication est séparée de la mutation. Evaluate() juge, Commit() agit, Record() prouve.

4. Taxonomie des signaux structurels

Les signaux sont les faits bruts lus par le moteur. Ils proviennent de quatre familles distinctes, chacune ayant une origine, une nature et un niveau de confiance différents.

Famille Origine Nature Exemples Lecture critique
S1 — Signaux de transition Passage τ proposé Déclaratifs agent_id, action_type, amount, idempotency_key Peuvent être faux ou mal formés : ils doivent être validés.
S2 — Signaux d’état métier MembraneState s Observés resource.available, quarantine_active, authority_score Lus dans l’état ; ils doivent être frais et cohérents.
S3 — Signaux d’infrastructure Service Assure() Attestés HYPOTHESIS_VERIFIED, HYPOTHESIS_WEAKENED, HYPOTHESIS_VIOLATED Signés Ed25519 ; leur fraîcheur doit être vérifiée.
S4 — Signaux historiques DurableOperationRegistry Persistés state = DISPATCHING, budget_committed = true Trace d’exécution ; base de l’idempotence et de la reconstruction.
Règle de provenance : un signal S1 est déclaratif, un signal S2 est observé, un signal S3 est attesté, un signal S4 est historique. Le moteur ne doit jamais traiter ces niveaux de confiance comme équivalents.

5. Chaîne de transformation — du signal brut à l’évaluation

Huit niveaux conceptuels, sept étapes de transformation. Chaque étape est distincte, testable, et produit un artefact traçable.

Niveau 0

Observation brute : S1 + S2 + S3 + S4.

signaux bruts

Étape 1 — Normalisation

Transformation des signaux en coordonnées de géométrie de contrainte. Une coordonnée absente devient unmeasured, jamais une valeur favorable.

coordinates + unmeasured_axes

Étape 2 — Scoring

Calcul continu du score de stabilité. Le score n’est pas le verdict.

scoring_result

Étape 3 — Invariants

Évaluation discrète et indépendante des invariants I1..I9 selon le profil.

membrane_result

Étape 4 — Composition

Lattice + signal reactions du profil σ + fraîcheur des signaux.

composed_decision

Étape 5 — Commit

Mutation réelle si autorisée. Atomique, tracée, réversible ou explicitement échouée.

commit_trace

Étape 6 — Record

Sérialisation canonique de la preuve : contexte, entrées, résultats, commit, intégrité.

EvidenceRecord

Étape 7 — Assessment post-hoc

Une fois l’opération terminée, deux évaluations indépendantes sont produites : la classification de réversibilité τ⁻¹ et la mesure de valeur préservée EVP.

PRE_COMMIT EXACT_INVERSE COMPENSATION IRREVERSIBLE INDETERMINATE

Point critique

Le score est continu, le verdict est discret, l’assessment est rétrospectif. Il ne faut jamais les confondre. Un score élevé ne garantit pas PASS ; un invariant peut imposer HARD_VETO à lui seul.

6. Double kernel — continu × discret

Le double kernel ne signifie pas “structurel vs substantif”. Il sépare un kernel de scoring continu et une membrane discrète d’invariants. La composition des deux produit le verdict final.

Scoring Kernel — continu

S = K / (P · V + ε)

K = capacité, P = pression, V = volatilité, ε = plancher de stabilité. Le score est ensuite comparé à des seuils.

S > τ_pass → PASS τ_block < S ≤ τ_pass → FLAG S ≤ τ_block → HARD_VETO

Transition Membrane — discret

Chaque invariant est évalué indépendamment. Aucun invariant ne lit le score. Chaque résultat est traçable : invariant_id, result, reason.

Invariant Lecture
I1 single-use-permitpermis non consommé
I2 commit-bindingliaison autorisation / tentative
I6 no-admission-under-quarantineabsence de quarantaine
I8 aggregate-budgetcapacité disponible suffisante
I9 trajectory-temporal-consistencycohérence temporelle

Composition du verdict

IF either HARD_VETO → HARD_VETO
ELSE IF either HOLD → HOLD
ELSE IF either FLAG → FLAG
ELSE → PASS

Ensuite, les signal reactions du profil σ peuvent modifier la décision composée. Exemple : si HYPOTHESIS_VIOLATED est présent et frais, alors HARD_VETO. Sans règle explicite dans σ, le signal est ignoré.

Lattice signal_reactions fraîcheur des signaux

7. Verdicts, états et machine à états

Les verdicts d’admissibilité ne doivent pas être confondus avec les états opérationnels. Le verdict autorise, suspend ou refuse ; l’état opérationnel décrit la vie réelle de l’opération.

Verdicts d’admissibilité

Verdict Signification
PASS Autorisé sans réserve.
FLAG Autorisé avec alerte ou surveillance renforcée.
HOLD Suspendu : ni autorisé ni refusé, en attente d’évidence ou de résolution.
HARD_VETO Refus catégorique.

États opérationnels

CREATED → RESERVED → DISPATCHING → CONFIRMED | FAILED
UNKNOWN HOLD ESCALATED

Les états d’incertitude sont essentiels : un provider silencieux ne doit jamais être interprété comme un succès.

8. EvidenceRecord — la preuve reconstructible

L’EvidenceRecord est l’artefact produit après évaluation et commit. Il doit permettre à un auditeur indépendant de reconstruire le verdict.

Section Contenu Usage d’audit
evaluation_context profile_id, profile_version, evaluator_version, catalog_version, hypothèses Reproductibilité : quel profil a produit le verdict ?
inputs state_snapshot, transition_proposal, signaux Reconstruction : avec quelles entrées ?
results verdict, invariant_details[] Traçabilité : pourquoi ce verdict ?
commit_trace commit_result, hashes pré/post commit Intégrité de la mutation : a-t-elle réellement eu lieu ?
integrity current_hash, signature, previous_hash Intégrité et authenticité de la preuve.
Point décisif : invariant_details n’est pas un booléen global. C’est une liste de résultats individuels. Un auditeur doit pouvoir lire, par exemple : I8: HARD_VETO (requested 80000, available 70000).

9. Assessment post-hoc — τ⁻¹ et EVP

Après coup, on évalue séparément la réversibilité et la valeur préservée. Ces deux dimensions ne s’impliquent pas mutuellement.

τ⁻¹ — classification de réversibilité

Classe Signification
PRE_COMMITAnnulée avant effet.
EXACT_INVERSEEffet réversible sans perte.
COMPENSATIONEffet réversible avec perte mesurée.
IRREVERSIBLEAucun retour valide.
INDETERMINATEInformation insuffisante.
Règle : INDETERMINATE n’est pas IRREVERSIBLE. Un échec de vérification prouve l’ignorance, pas l’irréversibilité.

EVP — Intended Value Preservation

EVP Gross = intended_value × confidence
EVP Net = realized_value − execution_loss
EVP Ratio = EVP Net / EVP Gross

Les coûts de friction sont rapportés séparément, pas soustraits de EVP Net. Cela préserve la traçabilité des pertes.

valeur visée perte d’exécution friction séparée

10. Catalogue REG+ — configurations structurelles

Le catalogue valid-configurations-v1.json et les règles compatibility-rules-v1.yaml définissent l’espace des configurations structurellement admissibles.

144
configurations totales
42
admissibles structurellement
102
rejetées
1.0.0
catalog & rules version
42 admissibles 102 rejetées

mono-process

9 configurations admissibles.

thread-lock uniquement

mono-host

18 configurations admissibles.

file-lock distributed-transaction

multi-host

15 configurations admissibles.

distributed-transaction distributed-consensus

Règles de compatibilité structurelle

Règle Clause Exigence
R1_HOST_CONCURRENCY R1a HOST_SCOPE=mono-process exige CONCURRENCY=thread-lock.
R1_HOST_CONCURRENCY R1b HOST_SCOPE=mono-host exige file-lock ou distributed-transaction.
R1_HOST_CONCURRENCY R1c HOST_SCOPE=multi-host exige distributed-transaction ou distributed-consensus.
R2_CONSENSUS_SCOPE R2a CONCURRENCY=distributed-consensus exige HOST_SCOPE=multi-host.
R2_CONSENSUS_DEDUP R2b DEDUP_LAYER=distributed-consensus-registry exige HOST_SCOPE=multi-host.
R2_CONSENSUS_DEDUP R2c DEDUP_LAYER=distributed-consensus-registry exige CONCURRENCY=distributed-consensus.
R3_LOCAL_DEDUP R3a DEDUP_LAYER=local-registry exige mono-process ou mono-host.
Distinction essentielle : admissible_structural = true ne signifie pas effective_guarantee_demonstrated = true. Une configuration peut être structurellement cohérente sans que l’implémentation ait effectivement démontré la capacité correspondante.

11. Audit & intégrité du pipeline

L’audit montre que la chaîne de transformation est conceptuellement saine, mais que certains points d’entrée/sortie sont compromis dans la v5.6.0.

Étape État Défaut identifié Impact
1. Normalisation F-02 register_resource() réinitialise l’état existant. Les signaux S2, notamment resource.available, peuvent devenir faux après crash/reload.
2. Scoring OK Déterministe. Le score est reconstructible si les coordonnées sont correctes.
3. Invariants OK Évaluation discrète testable. Chaque invariant peut être audité individuellement.
4. Composition OK Lattice déterministe. La composition reste prévisible si les entrées sont saines.
5. Commit F-01 reconcile_commit() peut forcer une mutation sans re-vérifier la capacité. Un état RELEASED peut devenir COMMITTED, violant I8.
6. Record OK Schéma JSON valide. L’EvidenceRecord est conforme structurellement.
7. Assessment F-03 LinearizabilityChecker invalide. Les preuves LIN peuvent contenir des faux positifs.

Objectif v5.7.0

La release durcie doit corriger les points critiques : réconciliation sécurisée, persistance non destructive, validateur de linéarisation fiable, et durcissement du transport consensus.

fix reconcile_commit fix register_resource fix linearizability harden transport

Conclusion d’audit

La chaîne est saine sauf aux points où l’intégrité des entrées, de la mutation ou de la validation post-hoc est compromise. Le standard est bon ; l’implémentation doit être durcie.

12. Pièges à éviter

Ces confusions reviennent souvent dans les discussions techniques ou les revues. Les éviter est indispensable pour parler correctement de TENIR / REG.

❌ Double kernel ≠ structurel vs substantif

Le double kernel sépare le continu (scoring) du discret (invariants). Ce n’est pas une opposition entre structurel et substantif.

❌ Catalogue ≠ Assure

Le catalogue décrit les axes et règles structurelles. Assure() est le service dynamique qui observe l’infrastructure et produit des signaux attestés.

❌ Raft 5.6.0 ≠ preuve de consensus

L’interface ConsensusBackend est spécifiée par REG, mais l’implémentation 5.6.0 doit être durcie. Elle ne constitue pas encore une preuve de consensus fiable en environnement hostile.

❌ Score ≠ verdict

Un score élevé ne garantit pas PASS. Un invariant peut imposer HARD_VETO. Inversement, un score bas peut produire FLAG si les invariants passent.

13. Dépôts et état de release

Cartographie des dépôts et état actuel de la release.

skiredj-prog/tenir_governance

Runtime : membrane, gouverneur, ledger, implémentation consensus. C’est le code qui exécute le standard.

runtime membrane ledger

skiredj-prog/reg-conformance

Standard : RFC REG Core, schémas JSON, catalogue, règles de compatibilité, profils.

standard EvidenceRecord catalogue

skiredj-prog/tenir-conformance-s1-g1

Harnais de test : scénarios, tests de robustesse, preuves d’exécution, campagnes de conformance.

tests scénarios preuves

État de la release actuelle

✅ Acquis
Architecture globale, standard REG+, Evidence Contract, interface ConsensusBackend, invariants, lifecycle HOLD.
⚠️ En cours
Correction de réconciliation, persistance sûre, validateur de linéarisation, sécurisation du transport.
🛑 Gelé
Communication publique et artifacts marketing conditionnés à la sortie de la v5.7.0 durcie.