Skip to content

fix(schema): an external-evidence-source declares no TRACE conformance level - #179

Merged
imran-siddique merged 2 commits into
mainfrom
fix/template-external-evidence-source-declares-no-level
Sep 12, 2026
Merged

fix(schema): an external-evidence-source declares no TRACE conformance level#179
imran-siddique merged 2 commits into
mainfrom
fix/template-external-evidence-source-declares-no-level

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

integrations/_template/integration.yaml presented trace_conformance_level and trace_roles as a pair and listed external-evidence-source among the role options, so a contributor following the template pairs the two. That is how aeoess-aps came to carry trace_conformance_level: 0 for a mapper that issues no Trust Record of its own (#170, corrected by @aeoess in #178).

The schema already required a level of anyone claiming record-producer or record-consumer. It did not forbid one from an integration claiming neither, so nothing caught the pairing. This adds the mirror rule.

Interesting detail: the WCM half of the same template already states the principle correctly, "attestation-source and evidence-consumer verify no manifest and therefore declare no level". The TRACE half was missing the same sentence.

Verified

All 36 integrations already comply, so this turns nothing red: nobulex and computeid-agentpassport-trace carry external-evidence-source with no level, and every producer or consumer carries one. scripts/validate_integrations.py reports 36 integrations, 0 failures.

Checked in both directions against the committed nobulex document:

ACCEPTED  control: external-evidence-source, no level
refused   external-evidence-source + level 1
refused   external-evidence-source + level 0
ACCEPTED  control: record-producer + level 0
refused   control: record-producer, no level (must stay refused)
ACCEPTED  control: both roles + level 0

The last two controls are the ones that matter: the existing required-level rule still fires, and an integration holding both roles keeps its level, because the producer half earns it.

scripts/generate_integration_index.py produces no diff, so the README index is unaffected.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X27MBo6tGVw1UmmchuGFnW

…e level

The template showed `trace_conformance_level` and `trace_roles` as a pair and
listed external-evidence-source as one of the role options, so a contributor
following it pairs the two. That is how aeoess-aps came to carry
`trace_conformance_level: 0` for a mapper that issues no Trust Record of its own
(#170, corrected by #178).

The schema already required a level of anyone claiming record-producer or
record-consumer. It did not forbid one from an integration claiming neither, so
nothing caught the pairing. The mirror rule is now expressed: when trace_roles
is present and contains neither producer nor consumer, trace_conformance_level
must be absent.

The template says the same thing in prose, and now says it the way the WCM half
of the same file already did: roles say what you do, and a role that verifies or
issues nothing of its own declares no level.

Verified against all 36 integrations, which all already comply: nobulex and
computeid-agentpassport-trace carry external-evidence-source with no level, and
every producer or consumer carries one. Checked in both directions, including
that a record-producer with no level is still refused and that an integration
holding both roles keeps its level.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X27MBo6tGVw1UmmchuGFnW
@imran-siddique
imran-siddique merged commit 30fef35 into main Sep 12, 2026
22 checks passed
@imran-siddique
imran-siddique deleted the fix/template-external-evidence-source-declares-no-level branch September 12, 2026 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant