Skip to content

fix(ramen-ai-cmcp): emit the TRACE v0.2 profile - #85

Merged
imran-siddique merged 2 commits into
mainfrom
fix/ramen-ai-trace-v02-profile
Aug 3, 2026
Merged

fix(ramen-ai-cmcp): emit the TRACE v0.2 profile#85
imran-siddique merged 2 commits into
mainfrom
fix/ramen-ai-trace-v02-profile

Conversation

@imran-siddique

@imran-siddique imran-siddique commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Why

The ramen-ai-cmcp conformance job has been failing on main since 2026-07-28. The adapter hardcodes the v0.1 EAT profile, and the conformance suite cut over to v0.2 rather than dual-accepting, so trace-tests >= 0.4 rejects it:

TR-ENV  FAIL  eat_profile must be 'tag:agentrust-io.com,2026:trace-v0.2',
              got 'tag:agentrust.io,2026:trace-v0.1'

Two things kept this hidden:

  1. The workflow is path-filtered to integrations/ramen-ai-cmcp/** and its own workflow file, so ordinary main pushes never run it.
  2. It only resurfaced because three dependabot action bumps (build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 #82 checkout, build(deps): bump actions/setup-python from 5.6.0 to 7.0.0 #83 setup-python, build(deps): bump actions/checkout from 4.3.1 to 7.0.1 #84 upload-artifact) edited the workflow file and tripped the filter. Those three PRs are red through no fault of their own and this unblocks all of them.

The workflow installs the released packages unpinned, and that is correct: the weekly cron exists precisely to catch drift against latest. It did its job. The fix belongs in the committed constant, not in a CI pin.

Worth noting the stale value also named agentrust.io in its authority component, a domain this project has never controlled. Same defect class as trace-spec#107 and agent-manifest#263, so this is one more surface of it.

Changes

  • ramen_ai_trace.py: EAT_PROFILE plus the two docstring references.
  • tests/test_mapping.py: the assertion pinned the stale string, so the test suite was actively defending the bug.
  • pyproject.toml: floor agentrust-trace>=0.5. A consumer installing this adapter needs a version whose profile matches what the adapter emits; leaving it unbounded is how this drifted silently. CI stays unpinned by design.
  • README.md: the profile reference, and a stale "released packages 0.3.0" note.

Test plan

Verified locally against agentrust-trace 0.5.1 and agentrust-trace-tests 0.4.0, following the same sequence CI runs:

  • pytest integrations/ramen-ai-cmcp/tests -q -> 14 passed
  • python examples/emit_record.py --out trust-record.jwt -> emits both the unsigned and signed forms
  • trace-tests verify --record trust-record.jwt --level 0 -> PASS, 8 checks, exit 0

The TR-SIG-005 UNVERIFIED finding is unchanged and expected: the loader rejects a plain record carrying a top-level signature (anti-downgrade), so the gradable artifact is the unsigned payload. That is already documented under "What it does NOT claim".

Scope

Profile string and the pin that let it drift. No change to the field mapping, the signing path, or what the integration claims.

🤖 Generated with Claude Code

The adapter hardcoded `tag:agentrust.io,2026:trace-v0.1`. The conformance
suite cut over to v0.2 rather than dual-accepting, so `trace-tests` >= 0.4
rejects that value outright:

    TR-ENV  FAIL  eat_profile must be 'tag:agentrust-io.com,2026:trace-v0.2',
                  got 'tag:agentrust.io,2026:trace-v0.1'

The conformance workflow installs the released packages unpinned, which is
deliberate (the weekly cron exists to catch drift against latest). The drift
it caught is real: this job has been failing on main since 2026-07-28, and
because the workflow is path-filtered to this integration, ordinary main
pushes never run it. The breakage stayed invisible until three dependabot
action bumps edited the workflow file and tripped the filter.

The old value also named `agentrust.io` in its authority component, a domain
this project has never controlled. Same defect class as trace-spec#107 and
agent-manifest#263; this is one more surface of it.

Changes:
- `ramen_ai_trace.py`: `EAT_PROFILE` and the two docstring references.
- `tests/test_mapping.py`: the assertion pinned the stale value, so the test
  suite was defending the bug.
- `pyproject.toml`: floor `agentrust-trace>=0.5`. A consumer installing this
  adapter needs a version whose profile matches what the adapter emits;
  leaving it unbounded is how this drifted silently. CI stays unpinned by
  design.
- `README.md`: the profile reference, and a stale "0.3.0" pin note.

Verified locally against `agentrust-trace` 0.5.1 and
`agentrust-trace-tests` 0.4.0:
- `pytest integrations/ramen-ai-cmcp/tests -q` -> 14 passed
- `trace-tests verify --record trust-record.jwt --level 0` -> PASS,
  8 checks, exit 0

The TR-SIG-005 UNVERIFIED finding is unchanged and expected: the loader
rejects a plain record carrying a top-level `signature`, so the gradable
artifact is the unsigned payload. Already documented in the README.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`tested_against.agentrust-trace` still read 0.3.0, which is the same
staleness as the profile constant. Set to 0.5.1, the version the mapping
tests and the level 0 conformance run were actually verified against here.

`cmcp-runtime` is left at 0.3.0 deliberately: this change did not exercise
it, and the field records what the integration was last tested against
rather than what is current.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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