{
  "$schema": "https://inferenslab.org/research-protocol-schema.json",
  "schema_version": "1.1.0",
  "domain": "inferenslab.org",
  "id": "governed-context-runtime-conformance",
  "order": 40,
  "version": "0.1.0",
  "program_id": "governed-context-runtime",
  "protocol_status": "preregistered",
  "execution_status": "not-started",
  "results_status": "none-published",
  "registered_on": "2026-08-23",
  "updated": "2026-08-23",
  "behavioral_results_published": false,
  "routes": {
    "fr": "/fr/protocoles/runtime-contexte-gouverne-v0-1/",
    "en": "/en/protocols/governed-context-runtime-v0-1/"
  },
  "artifact": "/protocols/governed-context-runtime-conformance/0.1.0.json",
  "canonical_sources": {
    "fr": "https://gautierdorval.com/doctrine/runtime-contexte-gouverne/",
    "en": "https://gautierdorval.com/en/doctrine/governed-context-runtime/"
  },
  "dependencies": [
    "/research-programs.json",
    "/semantic-router.json",
    "/output-constraints.json",
    "/source-precedence.json",
    "/q-layer.json",
    "/change-control.json"
  ],
  "study_design": {
    "study_type": "deterministic-runtime-contract-conformance",
    "pilot_scope": "descriptive-pilot-no-population-inference",
    "design_family": "conformance",
    "unit_of_analysis": {
      "fr": "Une trace complète entrée-routage-pack-sortie-refus produite pour une fixture synthétique et un snapshot de contrat versionnés.",
      "en": "One complete input-routing-pack-output-refusal trace produced for a versioned synthetic fixture and contract snapshot."
    },
    "comparison_dimensions": [
      {
        "id": "routing-determinism",
        "fr": "Stabilité de la route, du pack et du statut de refus pour des entrées et contrats byte-identiques.",
        "en": "Stability of route, pack, and refusal status for byte-identical inputs and contracts."
      },
      {
        "id": "boundary-enforcement",
        "fr": "Respect des portées, expirations, absences, conflits et contraintes de sortie déclarés.",
        "en": "Enforcement of declared scope, expiry, absence, conflict, and output constraints."
      },
      {
        "id": "trace-completeness",
        "fr": "Présence des identifiants, versions, sources, règles appliquées et motifs de refus requis par le contrat.",
        "en": "Presence of identifiers, versions, sources, applied rules, and refusal reasons required by the contract."
      }
    ],
    "unit_plan": {
      "selection": {
        "fr": "Fixtures synthétiques couvrant routes valides et invalides, packs présents, absents, expirés ou contradictoires, figées avant toute évaluation d’implémentation.",
        "en": "Synthetic fixtures covering valid and invalid routes and present, absent, expired, or conflicting packs, frozen before evaluating any implementation."
      },
      "factors": [
        {
          "id": "intent-class",
          "count": 8,
          "fr": "Huit classes d’intention déclarées dans un registre figé, incluant les intentions non prises en charge.",
          "en": "Eight intent classes declared in a frozen registry, including unsupported intents."
        },
        {
          "id": "pack-state",
          "count": 4,
          "fr": "Quatre états de pack : valide, absent, expiré ou contradictoire selon les fixtures versionnées.",
          "en": "Four pack states: valid, absent, expired, or conflicting under the versioned fixtures."
        },
        {
          "id": "access-mode",
          "count": 3,
          "fr": "Trois modalités déclarées : lecture locale, interface bornée et injection de défaillance contrôlée.",
          "en": "Three declared modes: local read, bounded interface, and controlled failure injection."
        }
      ],
      "repetitions_per_cell": 3,
      "planned_units": 288,
      "window_days": 5,
      "stopping_rule": {
        "fr": "Aucun arrêt discrétionnaire. Exécuter les 288 unités, sauf corruption de fixture, changement de contrat ou indisponibilité supérieure à 5 % ; publier tout arrêt et chaque dénominateur.",
        "en": "No discretionary stopping. Run all 288 units unless a fixture is corrupted, the contract changes, or more than 5% are unavailable; publish every halt and denominator."
      },
      "reviewer_count": 2,
      "agreement_metric": "cohens-kappa",
      "agreement_threshold": 0.8,
      "disagreement_resolution": {
        "fr": "Deux réviseurs classent indépendamment la conformité de chaque trace. Un troisième réviseur tranche avant agrégation.",
        "en": "Two reviewers independently classify conformance for every trace. A third reviewer adjudicates before aggregation."
      },
      "agreement_failure_rule": {
        "fr": "Si le kappa de Cohen est inférieur à 0.80, ne pas agréger les verdicts de conformité ; publier l’échec et versionner la grille avant reprise.",
        "en": "If Cohen's kappa is below 0.80, do not aggregate conformance verdicts; publish the failure and version the rubric before rerunning."
      },
      "reference_snapshots_required": true,
      "source_access_recorded": true
    },
    "execution_sequence": [
      {
        "id": "freeze-contract-and-fixtures",
        "fr": "Figer le contrat, le registre d’intentions, les packs, les contraintes, les fixtures et leurs condensats.",
        "en": "Freeze the contract, intent registry, packs, constraints, fixtures, and their digests."
      },
      {
        "id": "execute-declared-cells",
        "fr": "Exécuter chaque cellule sans modifier l’entrée, le pack ou la règle après observation d’une sortie.",
        "en": "Execute every cell without changing the input, pack, or rule after observing an output."
      },
      {
        "id": "review-traces-independently",
        "fr": "Comparer indépendamment chaque trace au contrat, puis trancher les désaccords avec le rubric versionné.",
        "en": "Independently compare every trace with the contract, then adjudicate disagreements using the versioned rubric."
      },
      {
        "id": "publish-conformance-matrix",
        "fr": "Publier les verdicts par intention, état de pack et modalité, avec refus, échecs et résultats nuls.",
        "en": "Publish verdicts by intent, pack state, and mode, including refusals, failures, and null outcomes."
      }
    ]
  },
  "freeze_requirements": [
    "unit-manifest",
    "factor-manifest",
    "reference-snapshot-manifest",
    "review-rubric-version",
    "review-panel-and-agreement-rule",
    "review-window",
    "source-access-policy",
    "expected-state-manifest",
    "runtime-contract-version",
    "fixture-bundle-sha256",
    "intent-registry-version",
    "exclusion-policy-version"
  ],
  "metrics": [
    {
      "id": "deterministic-routing-rate",
      "scale": "repeated-cell-ratio",
      "direction": "higher-is-better",
      "fr": "Part des répétitions byte-identiques produisant la même route, le même pack et le même statut de refus.",
      "en": "Share of byte-identical repetitions producing the same route, pack, and refusal status."
    },
    {
      "id": "refusal-fidelity-rate",
      "scale": "eligible-unit-ratio",
      "direction": "higher-is-better",
      "fr": "Part des unités absentes, expirées, contradictoires ou non prises en charge qui échouent fermé selon le contrat.",
      "en": "Share of absent, expired, conflicting, or unsupported units that fail closed under the contract."
    },
    {
      "id": "trace-completeness-rate",
      "scale": "required-field-ratio",
      "direction": "higher-is-better",
      "fr": "Part des champs requis présents dans les traces, incluant source, version, portée, règle et motif de refus.",
      "en": "Share of required trace fields present, including source, version, scope, rule, and refusal reason."
    },
    {
      "id": "unauthorized-generation-rate",
      "scale": "unit-level-ratio",
      "direction": "lower-is-better",
      "fr": "Part des unités où le système génère, recommande ou agit au-delà du service de contexte autorisé.",
      "en": "Share of units in which the system generates, recommends, or acts beyond authorized context serving."
    }
  ],
  "decision_rules": [
    {
      "id": "identical-input-identical-route",
      "fr": "Des entrées, contrats et snapshots identiques doivent produire la même route et le même statut de décision.",
      "en": "Identical inputs, contracts, and snapshots must produce the same route and decision status."
    },
    {
      "id": "invalid-state-fails-closed",
      "fr": "Un pack absent, expiré, contradictoire ou hors portée doit produire un refus explicite, jamais une synthèse plausible.",
      "en": "An absent, expired, conflicting, or out-of-scope pack must produce an explicit refusal, never a plausible synthesis."
    },
    {
      "id": "trace-required-for-conformance",
      "fr": "Aucun verdict conforme n’est admissible si la trace ne relie pas entrée, route, pack, règles et sortie.",
      "en": "No conforming verdict is admissible unless the trace connects input, route, pack, rules, and output."
    },
    {
      "id": "no-public-runtime-inference",
      "fr": "Une préinscription ou une fixture ne prouve pas l’existence, la disponibilité ou la préparation d’un runtime public.",
      "en": "A preregistration or fixture does not prove the existence, availability, or readiness of a public runtime."
    }
  ],
  "validity_threats": [
    {
      "id": "specification-implementation-coupling",
      "fr": "Une implémentation conçue à partir des fixtures peut satisfaire les cas publiés sans respecter le contrat général.",
      "en": "An implementation designed around the fixtures may satisfy published cases without respecting the general contract.",
      "mitigation": {
        "fr": "Séparer auteur des fixtures et implémentation, préserver des cellules holdout et publier leur politique de dérivation.",
        "en": "Separate fixture authorship from implementation, preserve holdout cells, and publish their derivation policy."
      }
    },
    {
      "id": "synthetic-fixture-bias",
      "fr": "Les fixtures synthétiques peuvent omettre des conflits, expirations ou erreurs de forme présents dans un environnement réel.",
      "en": "Synthetic fixtures may omit conflicts, expiries, or malformed states present in a real environment.",
      "mitigation": {
        "fr": "Inclure des injections de défaillance, publier les classes couvertes et interdire toute généralisation opérationnelle.",
        "en": "Include failure injections, publish covered classes, and prohibit operational generalization."
      }
    },
    {
      "id": "hidden-nondeterminism",
      "fr": "Caches, horloges, dépendances ou états externes non figés peuvent masquer une non-détermination du routage.",
      "en": "Unfrozen caches, clocks, dependencies, or external state may hide routing nondeterminism.",
      "mitigation": {
        "fr": "Figer les dépendances observables, répéter chaque cellule et publier toute source d’état non contrôlée.",
        "en": "Freeze observable dependencies, repeat every cell, and publish every uncontrolled state source."
      }
    }
  ],
  "publication_requirements": [
    "protocol-version",
    "unit-manifest",
    "factor-manifest",
    "reference-snapshots",
    "source-access-log",
    "expected-state-manifest",
    "review-rubric-and-disagreements",
    "runtime-contract-version",
    "fixture-bundle-and-sha256",
    "trace-field-completeness",
    "complete-denominators",
    "exclusions-and-halts",
    "limitations",
    "null-and-nonidentifiable-outcomes"
  ],
  "fr": {
    "title": "Runtime de contexte gouverné : conformité pilote 0.1",
    "program_title": "Runtime de contexte gouverné",
    "meta_description": "Protocole préinscrit de conformité pour le routage déterministe, les refus, la traçabilité et les limites d’un runtime de contexte.",
    "summary": "Préinscription d’un plan de conformité synthétique portant sur le routage, les états de pack, les refus explicites et la complétude des traces.",
    "research_question": "Un contrat et des fixtures figés permettent-ils de vérifier le service déterministe d’un contexte sans génération, recommandation ou action non autorisée ?",
    "design_summary": "Le pilote croise huit intentions, quatre états de pack et trois modalités d’accès. Chaque cellule est répétée et comparée au contrat versionné.",
    "evidence_state": "Protocole 0.1 préinscrit ; aucun runtime public, bundle d’exécution, test de conformité ou résultat opérationnel publié.",
    "boundaries": [
      "Cette préinscription ne démontre pas qu’un runtime public existe ou est disponible.",
      "Une fixture conforme ne prouve pas la robustesse d’une implémentation dans un environnement réel.",
      "Le protocole n’autorise aucune génération libre, recommandation, décision ou action agentique.",
      "Aucune performance, disponibilité, sécurité de production ou préparation produit n’est revendiquée."
    ]
  },
  "en": {
    "title": "Governed context runtime: pilot conformance 0.1",
    "program_title": "Governed context runtime",
    "meta_description": "Preregistered conformance protocol for deterministic routing, refusals, traceability, and governed-context runtime boundaries.",
    "summary": "Preregistration of a synthetic conformance plan covering routing, pack states, explicit refusals, and trace completeness.",
    "research_question": "Can a frozen contract and fixture set verify deterministic context serving without unauthorized generation, recommendation, or action?",
    "design_summary": "The pilot crosses eight intents, four pack states, and three access modes. Every cell is repeated and compared with the versioned contract.",
    "evidence_state": "Protocol 0.1 preregistered; no public runtime, execution bundle, conformance test, or operational result published.",
    "boundaries": [
      "This preregistration does not demonstrate that a public runtime exists or is available.",
      "A conforming fixture does not prove implementation robustness in a real environment.",
      "The protocol authorizes no free generation, recommendation, decision, or agentic action.",
      "No production performance, availability, security, or product readiness is claimed."
    ]
  }
}
