Aller au contenu
login
arrow_backRetour aux issues
Jstn-1g/dsh-guarded-hcl #5

Define EvaluationEvidence v0.2 runner binding and portable JSON digests

ecoDébutant enhancement help wanted integration

descriptionDescription

## Context The ASM selection fixture in [YE-YI7/asm-spec#13](https://github.com/YE-YI7/asm-spec/pull/13) correctly keeps exact-artifact binding outside its current narrow Selection Facts / Selection Receipt scope. The follow-up interoperability seam needs to bind an exact candidate artifact and its selection receipt into evidence without adding ASM-specific fields to the gate. EvaluationEvidence v0.1 already carries generic `baselineDigest` and `candidateDigest`, but it has no typed receipt-to-artifact binding or declared digest profile. Its closed schema rejects unknown properties, so v0.1 must remain unchanged. ## Proposed contract direction Define a small, versioned, implementation-neutral `RunnerBinding` document containing at least: - candidate/service identifier - exact Bundle or artifact digest - artifact digest profile - Selection Receipt schema URI and digest Define EvaluationEvidence v0.2 with a **required** `runnerBindingRef` object: ```json { "schemaUri": "https://…/runner-binding-v0.1.schema.json", "digest": "sha256:…" } ``` The object is preferable to a bare digest because the referenced schema and digest construction must be explicit and mandatory. The gate should reject unresolved, schema-invalid, or digest-mismatched bindings before producing a CommitDecision. This is provenance/audit binding, not authorization or a signature. ## Portable digest profile Select and name one cross-runtime canonicalization profile. The leading candidate is RFC 8785 JCS with SHA-256 over its UTF-8 canonical bytes. Add shared Python/Node conformance vectors containing: - raw JSON input - expected accept/reject result - expected canonical bytes - expected SHA-256 digest - integer and number-form cases including `3.0`, `3`, `-0`, and exponent boundaries - Unicode and non-BMP key ordering - nested objects, arrays, numeric-looking keys, and escaped controls - rejection cases for duplicate keys, NaN/Infinity, and lone surrogates ## Mutation properties Before evidence reaches CommitDecision, conformance tests must reject independent changes to: - Bundle/artifact bytes or digest - candidate/service identifier - Selection Receipt bytes or digest - runner-binding schema URI or digest - canonicalization/digest profile ## Definition of done - [ ] Freeze a versioned RunnerBinding schema. - [ ] Add EvaluationEvidence v0.2 without changing v0.1 reads. - [ ] Require the schema URI + digest reference in all v0.2 evidence. - [ ] Publish cross-language canonicalization vectors. - [ ] Exercise the same vectors in Python and Node. - [ ] Add the mutation/fail-closed tests above. - [ ] Document that the binding is audit/provenance, not execution authorization. - [ ] Validate the seam against the ASM fixture without making ASM a gate dependency. ## Non-goals - changing PR #13's narrow fixture scope - claiming an accepted DeepSeek package field - adding execution authorization or signatures - implementing a live Cordis adapter
codeOuvre sur GitHub