Skip to content

verification.md: format-versioning and verifier-compatibility obligations (evidence outlives verifiers) #116

Description

@lywinged

Spec gap. Compliance evidence is verified years after issuance — the artifact routinely outlives the verifier build — and the profile/enum surface is already evolving pre-1.0 (#114 proposes a new profile URI precisely to avoid breaking existing verifiers). But verification.md currently has no normative statement of what a verifier must do about version skew. Without one, every future revision risks silently orphaning existing evidence — or worse, verifiers "helpfully" accepting artifacts under semantics they don't actually implement.

Production context: in our per-action receipt format the hash-computation order is load-bearing — any change orphans every previously issued artifact. What held up operationally: a mandatory format-version field, plus a verifier obligated to check every version it claims to support and to say which version it verified under in its output.

Proposed obligations for verification.md:

  1. Every record/receipt carries an explicit format/profile version (the profile-URI direction in Widen the per-call decision enum under a new profile version, not in 1.0 #114 already implies this — this makes it a verifier obligation, not just an emitter convention).
  2. A conformant verifier declares the set of versions it supports and MUST refuse versions outside that set — refuse, not best-effort.
  3. The verification statement includes the version under which verification ran.
  4. Any downgrade/fallback behavior MUST be disclosed in the statement; silent fallback is non-conformant.

Conformance vectors for trace-tests:

  • unknown-version artifact → must refuse (fail-open here is the dangerous default)
  • known-version artifact → verified under correct semantics, version echoed in the statement
  • downgrade-with-disclosure → conformant
  • silent downgrade → must fail conformance

Happy to draft the section plus the vectors — this composes with the verifier-obligations ADR discussed in #66 and the offline verification statement discussed in #76.

Metadata

Metadata

Assignees

No one assigned

    Labels

    policy: take-internalIndividual-authored normative spec change; handled internally per policy

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions