SPEC v1.2 : la mesure nomme ce qu'elle a examiné (relations.confirms)
gardes du contrat / conformite (pull_request) Successful in 28s
gardes du contrat / conformite (pull_request) Successful in 28s
Le sens est la décision entière : c'est la MESURE qui déclare ce qu'elle confirme, jamais l'assertion confirmée qui pointe en retour. Trois raisons suffisantes chacune : l'assertion confirmée existe déjà et ne se réécrit pas ; l'instrument sait ce qu'il a mesuré — le lien est inféré, jamais saisi ; et l'auteur d'une confirmation est la machine, non l'agent dont l'affirmation est confirmée. Le runner refuse confirms sur autre chose qu'une mesure de provenance measured. Mineur et ignorable : un consommateur qui ignore la clé la préserve. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
52706a26a7
commit
f3d7383748
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"reason": "confirms is the measure's word about what it examined; an agent claiming its own assertion is confirmed is self-attestation with a pointer (SPEC §4.2).",
|
||||
"message": {
|
||||
"envelope": "1.2",
|
||||
"id": "temoin/EVI-999",
|
||||
"class": "step_realized",
|
||||
"subject": "x",
|
||||
"statement": "y",
|
||||
"evidence": [],
|
||||
"provenance": "agent:claude-code",
|
||||
"confidence": 0.4,
|
||||
"endorsement": null,
|
||||
"jurisdiction": "temoin",
|
||||
"at": "2026-09-21T08:00:00Z",
|
||||
"lifecycle": "proposed",
|
||||
"relations": { "confirms": ["openathle/MES-INV-011-2"] },
|
||||
"deadline": null,
|
||||
"falsification": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"envelope": "1.2",
|
||||
"id": "openathle/MES-INV-011-2",
|
||||
"class": "measure",
|
||||
"subject": "INV-011",
|
||||
"statement": "INV-011 : vérifié à son étage (domaine) et au-dessus — défense en profondeur.",
|
||||
"evidence": [{ "kind": "epreuve:domaine", "ref": "quarkus-backoffice/src/test/java/org/openathle/LicenceConfig/Domain/ValueObject/RegistryClubRefTest.java:1" }],
|
||||
"provenance": "measured",
|
||||
"confidence": 1.0,
|
||||
"endorsement": null,
|
||||
"jurisdiction": "openathle",
|
||||
"at": "2026-09-10T12:12:20.466Z",
|
||||
"lifecycle": "proposed",
|
||||
"relations": { "confirms": ["openathle/INV-011"] },
|
||||
"deadline": null,
|
||||
"falsification": null
|
||||
}
|
||||
@@ -34,6 +34,11 @@ function crossFieldErrors(msg) {
|
||||
if (prefix !== msg.jurisdiction)
|
||||
errs.push(`jurisdiction "${msg.jurisdiction}" must equal the prefix of id ("${prefix}")`);
|
||||
}
|
||||
// §4.2 (v1.2) : la mesure nomme ce qu'elle a examiné — et elle seule.
|
||||
if (Array.isArray(msg?.relations?.confirms) && msg.relations.confirms.length > 0) {
|
||||
if (msg.class !== 'measure' || msg.provenance !== 'measured')
|
||||
errs.push(`relations.confirms is carried by a measure of provenance measured only (got class "${msg.class}", provenance "${msg.provenance}")`);
|
||||
}
|
||||
return errs;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user