Skip to content

Four surfaces state the rules and nothing says which wins: schema, reference model, normative spec and docs disagree #247

Description

@imran-siddique

TRACE states its rules across four surfaces and nothing says which one wins when they disagree. Four reports in three days found four separate instances, all from producers who did the reasonable thing and validated against one of them.

The four surfaces

Surface Files
Normative spec spec/trace-v0.2.md
JSON Schema schema/trace-claim.json and its byte-identical copy src/agentrust_trace/schema/trace-v0.2.json
Reference model src/agentrust_trace/models.py
Prose docs docs/*.md, plus docs/rfcs/* which disclaim being normative

The four instances

Reported by @chernistry (four of them) and independently in the same window by @mohdibrahimaiml in #241, where the published 0.9.0 schema rejects §3.1.2 references on additionalProperties. Five, if that one is counted, and it is the same shape.

Each has been answered on its own merits. This issue is about the thing underneath them.

Why answering them individually is not enough

Every instance was found by a producer validating their records against one surface and discovering that a different surface disagreed. The schema check passing is not evidence the model will accept the record. The model accepting is not evidence the record is spec-conformant. A reader of the docs gets a fourth answer.

Two consequences worth stating plainly:

  1. Conformance is currently unfalsifiable. "Is this record TRACE-conformant" has no single answer, so a producer cannot be told they are wrong, and a verifier cannot be told it is being too strict.
  2. The failure is asymmetric and silent. The schema is the surface producers vendor and check against, and in three of the four instances it was the loose one. So the checks people actually run are the ones least likely to catch the divergence.

What this issue is for

Deciding the precedence rule and writing it somewhere a producer will find it. Not deciding the four individual answers, which are already ruled.

The obvious candidate: the normative spec wins; the schema and the reference model are derived artifacts and any divergence from the spec is a bug in the derived artifact. That is what the four rulings did in practice, and it is what §3.1.1 versus the schema description implies. But it needs to be true operationally, not just declared:

Not in scope here

The individual rulings, and the release-versus-main gap that #241 sits on. That one is real and separate: a fix on main is not a fix for anyone until it is tagged, which is why #241's reporter hit a schema that is correct in this repository and wrong in the package they installed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions