AgentBlueprintProtocol.Compatibility (Agent Blueprint Protocol v0.1.1)

Copy Markdown View Source

The compatibility surface : identity-exact or error. A manifest identity — one build_identities member entry — is matched only by an observed identity carrying the EXACT (kind, name, version, digest) tuple. Version ranges deny :compatibility_identity_inexact on BOTH sides (a range is malformed, never silently unmatchable — the manifest side is decode-checked through the registry table; verify/2 re-asserts it for struct-bypassed inputs, the structural-bypass rim lesson, and checks the host-built observed side, which never passes a decoder).

A manifest identity with no exact observed counterpart denies :compatibility_entry_missing. Two observed candidates for one manifest identity — including byte-identical duplicates, a repeated observation is the defect, not a dedup case — deny :compatibility_duplicate_entry; so does a duplicated name in a struct-bypassed manifest (decode denies it through unique_by). Observed identities the manifest does not name are evidence-neutral: the host's wider surface is not this manifest's concern, and no check entry or denial exists for them.

Subjects are schema-derived paths (["build_identities", i] for manifest entries, ["identities", i] for observed ones) — never input values. Compatibility verification reports identity facts; it never authorizes execution.

Summary

Functions

true when the identity's version is an exact spelling — false for any range expression (*, latest, x/X segments, comparator or tilde vocabulary, charset violations). Total over junk input: any non-conforming shape answers false, never raises. This is the public binary-level predicate; the decode-side registry check applies the same rule to manifest entries (their agreement is pinned by test).

Verify every manifest identity against the observed identities: identity-exact matching, one %{surface: :compatibility} check per manifest identity (detail = the matched observed Digest), the seven host-owned atoms in not_verified. Denies per the moduledoc; every malformed input shape denies typed.

Functions

exact?(identity)

@spec exact?(term()) :: boolean()

true when the identity's version is an exact spelling — false for any range expression (*, latest, x/X segments, comparator or tilde vocabulary, charset violations). Total over junk input: any non-conforming shape answers false, never raises. This is the public binary-level predicate; the decode-side registry check applies the same rule to manifest entries (their agreement is pinned by test).

verify(deployment, arg2)

Verify every manifest identity against the observed identities: identity-exact matching, one %{surface: :compatibility} check per manifest identity (detail = the matched observed Digest), the seven host-owned atoms in not_verified. Denies per the moduledoc; every malformed input shape denies typed.