agentrust-trace 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,36 @@
1
+ """agentrust-trace — TRACE v0.1 Trust Record models and validation."""
2
+
3
+ from agentrust_trace.models import (
4
+ Appraisal,
5
+ BuildProvenance,
6
+ ConfirmationKey,
7
+ JWK,
8
+ ModelInfo,
9
+ PolicyInfo,
10
+ RuntimeInfo,
11
+ ToolTranscript,
12
+ TrustRecord,
13
+ )
14
+ from agentrust_trace.validate import (
15
+ iter_errors,
16
+ SCHEMA,
17
+ validate_json,
18
+ )
19
+
20
+ __version__ = "0.1.0"
21
+
22
+ __all__ = [
23
+ "__version__",
24
+ "Appraisal",
25
+ "BuildProvenance",
26
+ "ConfirmationKey",
27
+ "JWK",
28
+ "ModelInfo",
29
+ "PolicyInfo",
30
+ "RuntimeInfo",
31
+ "ToolTranscript",
32
+ "TrustRecord",
33
+ "SCHEMA",
34
+ "iter_errors",
35
+ "validate_json",
36
+ ]
@@ -0,0 +1,109 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Annotated, Literal
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
6
+
7
+ _DIGEST_RE = r"^sha(256|384):[0-9a-f]+"
8
+
9
+ DigestStr = Annotated[str, Field(pattern=_DIGEST_RE)]
10
+
11
+
12
+ class ModelInfo(BaseModel):
13
+ model_config = ConfigDict(extra="forbid")
14
+
15
+ provider: str
16
+ model_id: str
17
+ version: str | None = None
18
+ weights_digest: DigestStr | None = None
19
+ aibom_uri: str | None = None
20
+
21
+
22
+ class RuntimeInfo(BaseModel):
23
+ model_config = ConfigDict(extra="forbid")
24
+
25
+ platform: Literal[
26
+ "intel-tdx",
27
+ "amd-sev-snp",
28
+ "nvidia-h100",
29
+ "nvidia-blackwell",
30
+ "aws-nitro",
31
+ "arm-cca",
32
+ "google-confidential-space",
33
+ "tpm2",
34
+ ]
35
+ measurement: DigestStr
36
+ rim_uri: str | None = None
37
+ nonce: str | None = None
38
+ firmware_version: str | None = None
39
+
40
+
41
+ class PolicyInfo(BaseModel):
42
+ model_config = ConfigDict(extra="forbid")
43
+
44
+ bundle_hash: DigestStr
45
+ enforcement_mode: Literal["enforce", "advisory", "silent"]
46
+ version: str | None = None
47
+ policy_uri: str | None = None
48
+
49
+
50
+ class ToolTranscript(BaseModel):
51
+ model_config = ConfigDict(extra="forbid")
52
+
53
+ hash: DigestStr
54
+ call_count: Annotated[int, Field(ge=0)] | None = None
55
+ transcript_uri: str | None = None
56
+
57
+
58
+ class BuildProvenance(BaseModel):
59
+ model_config = ConfigDict(extra="forbid")
60
+
61
+ slsa_level: Annotated[int, Field(ge=1, le=3)]
62
+ builder: str | None = None
63
+ digest: DigestStr
64
+ provenance_uri: str | None = None
65
+
66
+
67
+ class Appraisal(BaseModel):
68
+ model_config = ConfigDict(extra="forbid")
69
+
70
+ status: Literal["affirming", "warning", "contraindicated", "none"]
71
+ verifier: str
72
+ policy_ref: str | None = None
73
+ timestamp: int | None = None
74
+
75
+
76
+ class JWK(BaseModel):
77
+ # JWK params vary by key type (EC, OKP, RSA) — allow unknown members per RFC 7517
78
+ model_config = ConfigDict(extra="allow")
79
+
80
+ kty: str
81
+ crv: str | None = None
82
+ x: str | None = None
83
+ y: str | None = None
84
+ kid: str | None = None
85
+
86
+
87
+ class ConfirmationKey(BaseModel):
88
+ model_config = ConfigDict(extra="forbid")
89
+
90
+ jwk: JWK
91
+
92
+
93
+ class TrustRecord(BaseModel):
94
+ """TRACE v0.1 Trust Record — hardware-attested governance evidence for an AI agent execution."""
95
+
96
+ model_config = ConfigDict(extra="forbid")
97
+
98
+ eat_profile: Literal["tag:agentrust.io,2026:trace-v0.1"]
99
+ iat: Annotated[int, Field(ge=1700000000)]
100
+ subject: Annotated[str, Field(pattern=r"^spiffe://")]
101
+ model: ModelInfo
102
+ runtime: RuntimeInfo
103
+ policy: PolicyInfo
104
+ data_class: str
105
+ tool_transcript: ToolTranscript | None = None
106
+ build_provenance: BuildProvenance
107
+ appraisal: Appraisal
108
+ transparency: str
109
+ cnf: ConfirmationKey
File without changes
@@ -0,0 +1,243 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentrust.io/schema/trace-v0.1.json",
4
+ "title": "TRACE Trust Record",
5
+ "description": "A TRACE v0.1 Trust Record — hardware-attested governance evidence for an AI agent execution.",
6
+ "type": "object",
7
+ "required": [
8
+ "eat_profile",
9
+ "iat",
10
+ "subject",
11
+ "model",
12
+ "runtime",
13
+ "policy",
14
+ "data_class",
15
+ "build_provenance",
16
+ "appraisal",
17
+ "transparency",
18
+ "cnf"
19
+ ],
20
+ "properties": {
21
+ "eat_profile": {
22
+ "type": "string",
23
+ "const": "tag:agentrust.io,2026:trace-v0.1",
24
+ "description": "EAT profile URI identifying this as a TRACE v0.1 Trust Record."
25
+ },
26
+ "iat": {
27
+ "type": "integer",
28
+ "description": "Issued-at time as Unix epoch seconds.",
29
+ "minimum": 1700000000
30
+ },
31
+ "subject": {
32
+ "type": "string",
33
+ "description": "Workload identity as a SPIFFE SVID URI.",
34
+ "pattern": "^spiffe://"
35
+ },
36
+ "model": {
37
+ "type": "object",
38
+ "description": "Model identity and provenance.",
39
+ "required": ["provider", "model_id"],
40
+ "properties": {
41
+ "provider": {
42
+ "type": "string",
43
+ "description": "Model provider (e.g. 'anthropic', 'openai', 'meta')."
44
+ },
45
+ "model_id": {
46
+ "type": "string",
47
+ "description": "Model identifier as used by the provider."
48
+ },
49
+ "version": {
50
+ "type": "string",
51
+ "description": "Model version or snapshot identifier."
52
+ },
53
+ "weights_digest": {
54
+ "type": "string",
55
+ "description": "SHA-256 or SHA-384 digest of the model weights. Required for local/confidential-inference deployments.",
56
+ "pattern": "^sha(256|384):[0-9a-f]+"
57
+ },
58
+ "aibom_uri": {
59
+ "type": "string",
60
+ "format": "uri",
61
+ "description": "URI to SPDX 3.0 AI Profile or CycloneDX 1.7 ML-BOM for this model."
62
+ }
63
+ },
64
+ "additionalProperties": false
65
+ },
66
+ "runtime": {
67
+ "type": "object",
68
+ "description": "TEE measurement chain binding the workload to hardware.",
69
+ "required": ["platform", "measurement"],
70
+ "properties": {
71
+ "platform": {
72
+ "type": "string",
73
+ "enum": [
74
+ "intel-tdx",
75
+ "amd-sev-snp",
76
+ "nvidia-h100",
77
+ "nvidia-blackwell",
78
+ "aws-nitro",
79
+ "arm-cca",
80
+ "google-confidential-space",
81
+ "tpm2"
82
+ ],
83
+ "description": "Hardware platform providing the root of trust."
84
+ },
85
+ "measurement": {
86
+ "type": "string",
87
+ "description": "Hardware measurement of the workload (e.g. TDX MRTD, SEV measurement, TPM PCR composite).",
88
+ "pattern": "^sha(256|384):[0-9a-f]+"
89
+ },
90
+ "rim_uri": {
91
+ "type": "string",
92
+ "format": "uri",
93
+ "description": "URI to the vendor-published Reference Integrity Manifest for this measurement."
94
+ },
95
+ "nonce": {
96
+ "type": "string",
97
+ "description": "Freshness nonce binding the attestation report to this record (base64url, no padding)."
98
+ },
99
+ "firmware_version": {
100
+ "type": "string",
101
+ "description": "Firmware or microcode version included in the measurement."
102
+ }
103
+ },
104
+ "additionalProperties": false
105
+ },
106
+ "policy": {
107
+ "type": "object",
108
+ "description": "Policy bundle sealed to the TEE measurement.",
109
+ "required": ["bundle_hash", "enforcement_mode"],
110
+ "properties": {
111
+ "bundle_hash": {
112
+ "type": "string",
113
+ "description": "SHA-256 or SHA-384 digest of the policy bundle in force at execution time.",
114
+ "pattern": "^sha(256|384):[0-9a-f]+"
115
+ },
116
+ "enforcement_mode": {
117
+ "type": "string",
118
+ "enum": ["enforce", "advisory", "silent"],
119
+ "description": "How policy decisions were applied: enforce (block on deny), advisory (log only), silent (no logging)."
120
+ },
121
+ "version": {
122
+ "type": "string",
123
+ "description": "Policy bundle version (semantic versioning recommended)."
124
+ },
125
+ "policy_uri": {
126
+ "type": "string",
127
+ "format": "uri",
128
+ "description": "URI to the policy bundle for verification."
129
+ }
130
+ },
131
+ "additionalProperties": false
132
+ },
133
+ "data_class": {
134
+ "type": "string",
135
+ "description": "Highest-sensitivity data classification of inputs and outputs processed during this execution.",
136
+ "examples": ["public", "internal", "confidential", "restricted", "top-secret"]
137
+ },
138
+ "tool_transcript": {
139
+ "type": "object",
140
+ "description": "Bound hash of the MCP/A2A tool-call transcript. OPTIONAL for Phase 1 records; REQUIRED for Phase 2+.",
141
+ "required": ["hash"],
142
+ "properties": {
143
+ "hash": {
144
+ "type": "string",
145
+ "description": "SHA-256 or SHA-384 digest of the full tool-call transcript, bound into the EAT envelope.",
146
+ "pattern": "^sha(256|384):[0-9a-f]+"
147
+ },
148
+ "call_count": {
149
+ "type": "integer",
150
+ "minimum": 0,
151
+ "description": "Total number of tool calls in this session."
152
+ },
153
+ "transcript_uri": {
154
+ "type": "string",
155
+ "format": "uri",
156
+ "description": "URI to the full transcript on the transparency log."
157
+ }
158
+ },
159
+ "additionalProperties": false
160
+ },
161
+ "build_provenance": {
162
+ "type": "object",
163
+ "description": "SLSA provenance for the workload (agent code + container image).",
164
+ "required": ["slsa_level", "digest"],
165
+ "properties": {
166
+ "slsa_level": {
167
+ "type": "integer",
168
+ "minimum": 1,
169
+ "maximum": 3,
170
+ "description": "SLSA Build Level achieved. Level 2 minimum for TRACE conformance; Level 3 for production mark."
171
+ },
172
+ "builder": {
173
+ "type": "string",
174
+ "description": "SLSA builder URI."
175
+ },
176
+ "digest": {
177
+ "type": "string",
178
+ "description": "SHA-256 or SHA-384 digest of the container image or workload binary.",
179
+ "pattern": "^sha(256|384):[0-9a-f]+"
180
+ },
181
+ "provenance_uri": {
182
+ "type": "string",
183
+ "format": "uri",
184
+ "description": "URI to the SLSA provenance attestation on a Sigstore/Rekor or compatible log."
185
+ }
186
+ },
187
+ "additionalProperties": false
188
+ },
189
+ "appraisal": {
190
+ "type": "object",
191
+ "description": "Verifier's EAR appraisal of the evidence (draft-ietf-rats-ar4si).",
192
+ "required": ["status", "verifier"],
193
+ "properties": {
194
+ "status": {
195
+ "type": "string",
196
+ "enum": ["affirming", "warning", "contraindicated", "none"],
197
+ "description": "EAR appraisal status."
198
+ },
199
+ "verifier": {
200
+ "type": "string",
201
+ "format": "uri",
202
+ "description": "URI identifying the verifier that produced this appraisal."
203
+ },
204
+ "policy_ref": {
205
+ "type": "string",
206
+ "format": "uri",
207
+ "description": "URI to the appraisal policy used."
208
+ },
209
+ "timestamp": {
210
+ "type": "integer",
211
+ "description": "Unix epoch seconds when the appraisal was produced."
212
+ }
213
+ },
214
+ "additionalProperties": false
215
+ },
216
+ "transparency": {
217
+ "type": "string",
218
+ "format": "uri",
219
+ "description": "SCITT receipt URI. The Trust Record is the Signed Statement; this URI resolves to the inclusion proof (Receipt) on the transparency log."
220
+ },
221
+ "cnf": {
222
+ "type": "object",
223
+ "description": "Confirmation key (RFC 8747) — binds the Trust Record to the TEE-held signing key.",
224
+ "required": ["jwk"],
225
+ "properties": {
226
+ "jwk": {
227
+ "type": "object",
228
+ "description": "JWK (RFC 7517) representing the TEE-sealed public key.",
229
+ "required": ["kty"],
230
+ "properties": {
231
+ "kty": {"type": "string"},
232
+ "crv": {"type": "string"},
233
+ "x": {"type": "string"},
234
+ "y": {"type": "string"},
235
+ "kid": {"type": "string"}
236
+ }
237
+ }
238
+ },
239
+ "additionalProperties": false
240
+ }
241
+ },
242
+ "additionalProperties": false
243
+ }
@@ -0,0 +1,37 @@
1
+ from __future__ import annotations
2
+
3
+ import importlib.resources
4
+ import json
5
+ from functools import lru_cache
6
+ from typing import Any, cast
7
+
8
+ import jsonschema
9
+
10
+
11
+ @lru_cache(maxsize=1)
12
+ def _schema() -> dict[str, Any]:
13
+ ref = importlib.resources.files("agentrust_trace") / "schema" / "trace-v0.1.json"
14
+ return cast(dict[str, Any], json.loads(ref.read_text(encoding="utf-8")))
15
+
16
+
17
+ @lru_cache(maxsize=1)
18
+ def _validator() -> jsonschema.Draft202012Validator:
19
+ return jsonschema.Draft202012Validator(_schema())
20
+
21
+
22
+ # Canonical schema exposed for downstream tooling that needs the raw dict.
23
+ SCHEMA: dict[str, Any] = _schema()
24
+
25
+
26
+ def validate_json(record: dict[str, Any]) -> None:
27
+ """Validate *record* against the canonical TRACE v0.1 JSON Schema.
28
+
29
+ Raises :class:`jsonschema.ValidationError` on the first violation found.
30
+ Use :func:`iter_errors` for all violations.
31
+ """
32
+ _validator().validate(record)
33
+
34
+
35
+ def iter_errors(record: dict[str, Any]) -> list[jsonschema.exceptions.ValidationError]:
36
+ """Return all JSON Schema violations for *record* (empty list if valid)."""
37
+ return list(_validator().iter_errors(record))
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentrust-trace
3
+ Version: 0.1.0
4
+ Summary: TRACE v0.1 — hardware-attested governance records for AI agents
5
+ Project-URL: Homepage, https://github.com/agentrust-io/trace-spec
6
+ Project-URL: Repository, https://github.com/agentrust-io/trace-spec
7
+ Project-URL: Issues, https://github.com/agentrust-io/trace-spec/issues
8
+ Project-URL: Changelog, https://github.com/agentrust-io/trace-spec/blob/main/CHANGELOG.md
9
+ License: Apache-2.0
10
+ License-File: LICENSE
11
+ Keywords: ai-governance,attestation,confidential-computing,eat,rats,tee,trace
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
+ Classifier: Topic :: Security
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: jsonschema>=4.20
23
+ Requires-Dist: pydantic>=2.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: mypy>=1.10; extra == 'dev'
26
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
27
+ Requires-Dist: pytest>=8.0; extra == 'dev'
28
+ Requires-Dist: ruff>=0.4; extra == 'dev'
29
+ Requires-Dist: types-jsonschema; extra == 'dev'
30
+ Description-Content-Type: text/markdown
31
+
32
+ <p align="center">
33
+ <img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE"/>
34
+ </p>
35
+
36
+ # TRACE — Trust Runtime Attestation and Compliance Evidence
37
+
38
+ An open specification for hardware-attested AI agent governance records. TRACE defines the format, anchoring protocol, and verification rules for cryptographically provable evidence that an AI agent ran under a specific policy, in a verified hardware environment, on classified data, invoking identified tools — bound into a single signed artifact rooted in silicon attestation.
39
+
40
+ ## What a TRACE Trust Record Is
41
+
42
+ ```json
43
+ {
44
+ "eat_profile": "tag:agentrust.io,2026:trace-v0.1",
45
+ "iat": 1750676142,
46
+ "subject": "spiffe://trust.example.org/agent/payments-processor/prod",
47
+ "model": {
48
+ "provider": "anthropic",
49
+ "model_id": "claude-sonnet-4-6",
50
+ "version": "20251001",
51
+ "weights_digest": "sha256:a3f8d2c1..."
52
+ },
53
+ "runtime": {
54
+ "platform": "amd-sev-snp",
55
+ "measurement": "sha384:c9e4b1d2e3f4...",
56
+ "rim_uri": "https://kdsintf.amd.com/vcek/v1/..."
57
+ },
58
+ "policy": {
59
+ "bundle_hash": "sha256:b2c3d4e5...",
60
+ "enforcement_mode": "enforce",
61
+ "version": "1.2.0"
62
+ },
63
+ "data_class": "confidential",
64
+ "tool_transcript": {
65
+ "hash": "sha256:d4e5f6a7...",
66
+ "call_count": 3
67
+ },
68
+ "build_provenance": {
69
+ "slsa_level": 2,
70
+ "builder": "https://github.com/slsa-framework/slsa-github-generator",
71
+ "digest": "sha256:e5f6a7b8..."
72
+ },
73
+ "appraisal": {
74
+ "status": "affirming",
75
+ "verifier": "https://trust-authority.example.org",
76
+ "policy_ref": "https://trust-authority.example.org/policy/agent-v1"
77
+ },
78
+ "transparency": "https://registry.agentrust.io/claim/trace-2026-06-23T09:15:42Z-f2a8d1",
79
+ "cnf": {
80
+ "jwk": {"kty": "EC", "crv": "P-256", "x": "MEkwEw...", "y": "..."}
81
+ }
82
+ }
83
+ ```
84
+
85
+ The record is a single EAT envelope (RFC 9711). Each field is independently verifiable. No callback to the issuer is required.
86
+
87
+ ## Specification
88
+
89
+ - [`spec/trace-v0.1.md`](spec/trace-v0.1.md) — full specification
90
+ - [`schema/trace-claim.json`](schema/trace-claim.json) — JSON Schema
91
+ - [`examples/`](examples/) — example Trust Records for Intel TDX, AMD SEV-SNP, and NVIDIA H100
92
+
93
+ ## Standards composition
94
+
95
+ TRACE profiles existing standards rather than replacing them:
96
+
97
+ | Primitive | Role in TRACE |
98
+ |---|---|
99
+ | RATS / EAT (RFC 9711) | Wire envelope and claim model |
100
+ | SLSA Provenance v1.0 | Build-time provenance (`build_provenance`) |
101
+ | SPIFFE SVID | Workload identity (`subject`) |
102
+ | SCITT | Append-only transparency anchoring (`transparency`) |
103
+ | EAR (draft-ietf-rats-ar4si) | Verifier appraisal output (`appraisal`) |
104
+ | MCP / A2A | Agent tool-call transcript surface (`tool_transcript`) |
105
+ | AIBOM (SPDX 3.0 / CycloneDX 1.7) | Model component inventory (`model`) |
106
+
107
+ ## Reference implementation
108
+
109
+ [agentrust-io/cmcp](https://github.com/agentrust-io/cmcp) — Confidential MCP Gateway. Hardware-attested policy enforcement at the MCP tool-call boundary on Intel TDX, AMD SEV-SNP, and NVIDIA H100/Blackwell.
110
+
111
+ ## Registry
112
+
113
+ A public append-only Merkle registry of TRACE Trust Record anchors: [agentrust-io/trace-registry](https://github.com/agentrust-io/trace-registry).
114
+
115
+ ## Status
116
+
117
+ Draft v0.1 — publishing at Confidential Computing Summit, San Francisco, June 23 2026. Targeting submission to the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) under the Linux Foundation.
118
+
119
+ ## License
120
+
121
+ Creative Commons Attribution 4.0 International (CC BY 4.0)
@@ -0,0 +1,9 @@
1
+ agentrust_trace/__init__.py,sha256=4gC8kls9mXPfas2o_5fGdcGCY1vYyrT3TjyqII04p3o,633
2
+ agentrust_trace/models.py,sha256=aqOey_GnF75vERCHANSGDOq4fvFrXCqcwLodwGOxSVk,2721
3
+ agentrust_trace/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ agentrust_trace/validate.py,sha256=e8HkiiQ0MY8rJ6k8TfJvkjLLELFNd0kFx7xmq6WyekU,1130
5
+ agentrust_trace/schema/trace-v0.1.json,sha256=csfXAh_K-3dCjZwpxAXyiydvfxui2nT8XIgVY2msYhE,8281
6
+ agentrust_trace-0.1.0.dist-info/METADATA,sha256=p3WWLeMVWzbDF5vLuaQxQRxUM_bnqt_uVT-L98mRqa0,4793
7
+ agentrust_trace-0.1.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
8
+ agentrust_trace-0.1.0.dist-info/licenses/LICENSE,sha256=PjaoS-amJGME7ximD1Llf74eQ7IlQ8a-CERUAl0IKxc,1614
9
+ agentrust_trace-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,37 @@
1
+ The TRACE specification and this repository use a dual license:
2
+
3
+ SPECIFICATION TEXT (spec/*.md, README.md, CHANGELOG.md)
4
+ =========================================================
5
+ Creative Commons Attribution 4.0 International (CC BY 4.0)
6
+ https://creativecommons.org/licenses/by/4.0/
7
+
8
+ You are free to share and adapt the specification text for any purpose,
9
+ including commercial, provided you give appropriate credit, link to the
10
+ license, and indicate if changes were made.
11
+
12
+ SCHEMA, EXAMPLES, AND CODE (schema/, examples/, .github/)
13
+ ==========================================================
14
+ Apache License, Version 2.0
15
+ https://www.apache.org/licenses/LICENSE-2.0
16
+
17
+ Copyright 2026 OPAQUE Systems, Inc.
18
+
19
+ Licensed under the Apache License, Version 2.0 (the "License");
20
+ you may not use these files except in compliance with the License.
21
+ You may obtain a copy of the License at
22
+
23
+ http://www.apache.org/licenses/LICENSE-2.0
24
+
25
+ Unless required by applicable law or agreed to in writing, software
26
+ distributed under the License is distributed on an "AS IS" BASIS,
27
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
+ See the License for the specific language governing permissions and
29
+ limitations under the License.
30
+
31
+ PATENT PROMISE
32
+ ==============
33
+ OPAQUE Systems, Inc. grants a royalty-free, worldwide, non-exclusive
34
+ license under any patent claims it controls that are necessarily infringed
35
+ by a conforming implementation of this specification, for the purpose of
36
+ implementing or operating a product that conforms to this specification.
37
+ This promise applies to v0.1 and all subsequent versions of TRACE.