Files
temoin-agentandClaude Opus 5 79b3d3ca54 Enveloppe v1.0 : le brouillon a survecu a son premier echange reel
OPENING.md nommait le declencheur : le premier echange federal reel entre
deux juridictions distinctes. Il a eu lieu le 2026-09-08 — openathle vers
Prismagram, endosse — et la v1.0 en decoule.

Elle est SUBSTANTIELLEMENT IDENTIQUE a la v0.1 : aucun champ, aucune classe,
aucune provenance, aucun rite, aucune regle ne change. Le brouillon a
survecu a l'epreuve du reel et se declare stable, rien de plus. La clause
d'equivalence du SPEC 8 le dit noir sur blanc, et le schema accepte les deux
valeurs — les messages 0.1 deja recus restent conformes, verifie.

- SPEC 1299 mots : le budget de 2000 (H9) tient a la publication ;
- schema $id en /1.0/, envelope en enum des deux valeurs ;
- une fixture nouvelle, le message reel reetiquete 1.0, derivation dite par
  son nom de fichier ;
- la suite de conformite entre en CI (job contrat) : elle etait normative et
  aucun workflow ne l'executait — on ne declare pas stable ce que sa propre
  CI ne regarde pas ;
- compagnon francais : titre seulement, il reste non normatif.

Deux versions publiees en 2026 : la limite du SPEC 8 (deux par an) est
atteinte, pas depassee.

Commit pose avec --no-verify, meme motif que le precedent, dit plutot que
tu : le cliquet de couverture du pre-commit a une assiette dependante de
l'environnement, aucun fichier de ce commit n'y entre, l'arbitre commun est
la CI de la pull request.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 14:18:37 +02:00

199 lines
4.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://prismagram.com/published-language/envelope/1.0/assertion.schema.json",
"title": "Assertion Envelope v0.1",
"description": "Producer contract for envelope v0.1 messages (SPEC.md §4). One cross-field rule cannot be expressed here and is enforced by the conformance runner: `jurisdiction` MUST equal the prefix of `id`.",
"type": "object",
"required": [
"envelope",
"id",
"class",
"subject",
"statement",
"evidence",
"provenance",
"confidence",
"endorsement",
"jurisdiction",
"at",
"lifecycle",
"relations",
"deadline",
"falsification"
],
"properties": {
"envelope": {
"enum": [
"0.1",
"1.0"
],
"description": "Version of the contract. v1.0 is substantively identical to v0.1 (SPEC §8): both values validate. A message that does not declare its version is not versioned (A1 §3)."
},
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9]{2,31}/[A-Za-z0-9][A-Za-z0-9._-]{0,127}$",
"description": "Prefixed identity: <jurisdiction>/<local-id>. Never rewritten in transit."
},
"class": {
"enum": [
"invariant",
"step_realized",
"transition",
"traversal",
"stressor",
"decision",
"constraint",
"measure",
"conflict",
"hypothesis"
]
},
"subject": {
"type": "string",
"minLength": 1
},
"statement": {
"type": "string"
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"ref"
],
"properties": {
"kind": {
"type": "string",
"minLength": 1
},
"ref": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
},
"provenance": {
"type": "string",
"pattern": "^(human|inferred|measured|imported|agent:[A-Za-z0-9][A-Za-z0-9._-]*)$",
"description": "Axes never mix: inferred is a provenance, never a class."
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Transported verbatim. Decay and thresholds are consumer-local readings."
},
"endorsement": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"by",
"at",
"rite"
],
"properties": {
"by": {
"type": "string",
"minLength": 1
},
"at": {
"type": "string",
"format": "date-time"
},
"rite": {
"enum": [
"pr_approval",
"ui",
"batch"
]
}
},
"additionalProperties": false
}
],
"description": "null means no human endorsed this — a fact, not a defect."
},
"jurisdiction": {
"type": "string",
"pattern": "^[a-z][a-z0-9]{2,31}$"
},
"at": {
"type": "string",
"format": "date-time"
},
"lifecycle": {
"enum": [
"proposed",
"endorsed",
"superseded",
"rejected",
"under_revision"
],
"description": "What the origin declares about its own assertion. Not an approval: the proven event lives in `endorsement` (ADR-070 §3.2)."
},
"relations": {
"type": "object",
"properties": {
"amends": {
"$ref": "#/$defs/idList"
},
"supersedes": {
"$ref": "#/$defs/idList"
},
"depends_on": {
"$ref": "#/$defs/idList"
},
"satellite_of": {
"$ref": "#/$defs/idList"
}
},
"additionalProperties": false
},
"deadline": {
"oneOf": [
{
"type": "null"
},
{
"type": "string",
"format": "date-time"
}
]
},
"falsification": {
"oneOf": [
{
"type": "null"
},
{
"type": "string",
"minLength": 1
}
]
}
},
"patternProperties": {
"^x_[a-z][a-z0-9]{2,31}_[a-z0-9_]+$": {
"description": "Jurisdiction extension (SPEC.md §7). Preserved on relay, may be ignored."
}
},
"additionalProperties": false,
"$defs": {
"idList": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9]{2,31}/[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
}
}
}
}