Skip to content

trace-tests rejects software-only runtime platform despite trace-spec allowing it #16

@SomeshZanwar

Description

@SomeshZanwar

Summary

trace-spec now includes software-only as a valid runtime.platform value, but trace-tests still rejects it in both the bundled schema and the TR-RTE runtime checker.

This appears to create drift between the TRACE spec/schema and the conformance test suite.

Evidence

After pulling the latest trace-spec main branch, software-only appears in the TRACE schema/model:

src/agentrust_trace/models.py includes "software-only"
src/agentrust_trace/schema/trace-v0.1.json includes "software-only"

The schema description says:

software-only marks development-mode records with no hardware backing; they must never be treated as attested evidence.

In trace-tests, software-only is currently absent from:

schemas/trace-claim.json
src/trace_tests/modules/tr_rte.py

Current trace-tests schema enum:

["intel-tdx", "amd-sev-snp", "nvidia-h100", "nvidia-blackwell", "aws-nitro", "arm-cca", "google-confidential-space", "tpm2"]

Current TR-RTE platform set:

_VALID_PLATFORMS = frozenset({
    "intel-tdx",
    "amd-sev-snp",
    "nvidia-h100",
    "nvidia-blackwell",
    "aws-nitro",
    "arm-cca",
    "google-confidential-space",
    "tpm2",
})

Local reproduction

I created a temporary copy of tests/vectors/valid_level0.json and changed only:

"runtime": {
  "platform": "software-only"
}

Direct schema validation reports:

schema errors: 1
- 'software-only' is not one of ['intel-tdx', 'amd-sev-snp', 'nvidia-h100', 'nvidia-blackwell', 'aws-nitro', 'arm-cca', 'google-confidential-space', 'tpm2']

Running the Level 1 CLI with freshness relaxed:

python -m trace_tests.cli verify --record tests\vectors\tmp_software_only_level0.json --level 1 --max-age 999999999

returns:

TR-RTE  FAIL  TR-RTE-001: runtime.platform 'software-only' is not in the registered set; valid: ['amd-sev-snp', 'arm-cca', 'aws-nitro', 'google-confidential-space', 'intel-tdx', 'nvidia-blackwell', 'nvidia-h100', 'tpm2']

Expected behavior / question

Since software-only is now a registered platform in trace-spec, should trace-tests also recognize it as a valid platform value?

There is an important conformance nuance:

  • software-only should not be treated as hardware-attested evidence.
  • Level 1/2 may still need to fail or downgrade records using software-only, because those levels require stronger attestation.
  • But the failure should probably not be “unknown platform” if the spec now registers software-only.

Possible approaches:

  1. Add software-only to the bundled schemas/trace-claim.json enum and _VALID_PLATFORMS.
  2. Add explicit conformance logic that permits software-only at Level 0 but fails it at Level 1/2 with a clearer message such as “software-only is development-mode and not acceptable for TEE-attested levels.”
  3. Add a negative/level-specific test vector to lock this behavior.

Environment

OS: Windows
Python: 3.12.4
trace-tests main: up to date at time of testing
trace-spec main: pulled latest before comparison

Full trace-tests suite result before reproduction:

105 passed, 5 xpassed in 2.58s

Temporary test file was deleted afterward, and the working tree is clean.

Related

This appears related to recent trace-spec changes that added/clarified software-only as a development-mode, non-attested runtime platform.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions