agentrust-telemetry 0.1.0a3__tar.gz

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.
Files changed (116) hide show
  1. agentrust_telemetry-0.1.0a3/CHANGELOG.md +57 -0
  2. agentrust_telemetry-0.1.0a3/CODE_OF_CONDUCT.md +7 -0
  3. agentrust_telemetry-0.1.0a3/CONTRIBUTING.md +12 -0
  4. agentrust_telemetry-0.1.0a3/GOVERNANCE.md +17 -0
  5. agentrust_telemetry-0.1.0a3/LICENSE +21 -0
  6. agentrust_telemetry-0.1.0a3/LIMITATIONS.md +25 -0
  7. agentrust_telemetry-0.1.0a3/MAINTAINERS.md +7 -0
  8. agentrust_telemetry-0.1.0a3/MANIFEST.in +20 -0
  9. agentrust_telemetry-0.1.0a3/NOTICE +4 -0
  10. agentrust_telemetry-0.1.0a3/PKG-INFO +180 -0
  11. agentrust_telemetry-0.1.0a3/PRIVACY.md +17 -0
  12. agentrust_telemetry-0.1.0a3/README.md +146 -0
  13. agentrust_telemetry-0.1.0a3/RELEASING.md +59 -0
  14. agentrust_telemetry-0.1.0a3/REPOSITORY-SETUP.md +42 -0
  15. agentrust_telemetry-0.1.0a3/ROADMAP.md +24 -0
  16. agentrust_telemetry-0.1.0a3/SECURITY.md +35 -0
  17. agentrust_telemetry-0.1.0a3/SUPPORT.md +9 -0
  18. agentrust_telemetry-0.1.0a3/VERSIONING.md +17 -0
  19. agentrust_telemetry-0.1.0a3/compatibility/golden/event-factory.json +1 -0
  20. agentrust_telemetry-0.1.0a3/compatibility/golden/evidence-chain.json +18 -0
  21. agentrust_telemetry-0.1.0a3/compatibility/golden/usage-rollup.json +13 -0
  22. agentrust_telemetry-0.1.0a3/compatibility/otel-genai.json +58 -0
  23. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/action-without-digest.json +16 -0
  24. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/aggregate-cost-without-rollup.json +1 -0
  25. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/model-call-with-rollup.json +1 -0
  26. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/numeric-timestamp.json +1 -0
  27. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/raw-content.json +1 -0
  28. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/usage-without-measurement.json +1 -0
  29. agentrust_telemetry-0.1.0a3/conformance/fixtures/invalid/zero-trace-id.json +1 -0
  30. agentrust_telemetry-0.1.0a3/conformance/fixtures/valid/action.json +28 -0
  31. agentrust_telemetry-0.1.0a3/conformance/fixtures/valid/approval.json +1 -0
  32. agentrust_telemetry-0.1.0a3/conformance/fixtures/valid/data-flow.json +1 -0
  33. agentrust_telemetry-0.1.0a3/conformance/fixtures/valid/evidence.json +1 -0
  34. agentrust_telemetry-0.1.0a3/conformance/fixtures/valid/policy-decision.json +1 -0
  35. agentrust_telemetry-0.1.0a3/conformance/fixtures/valid/usage.json +1 -0
  36. agentrust_telemetry-0.1.0a3/conformance/requirements.txt +1 -0
  37. agentrust_telemetry-0.1.0a3/conformance/runner/validate.py +144 -0
  38. agentrust_telemetry-0.1.0a3/docs/action-events.md +19 -0
  39. agentrust_telemetry-0.1.0a3/docs/adapters.md +70 -0
  40. agentrust_telemetry-0.1.0a3/docs/architecture.md +91 -0
  41. agentrust_telemetry-0.1.0a3/docs/data-flow-classification.md +22 -0
  42. agentrust_telemetry-0.1.0a3/docs/evidence-chain.md +29 -0
  43. agentrust_telemetry-0.1.0a3/docs/otel-genai-compatibility.md +48 -0
  44. agentrust_telemetry-0.1.0a3/docs/otel-projection.md +79 -0
  45. agentrust_telemetry-0.1.0a3/docs/trace-finalization.md +32 -0
  46. agentrust_telemetry-0.1.0a3/docs/usage-attribution.md +17 -0
  47. agentrust_telemetry-0.1.0a3/examples/governed_workflow.py +287 -0
  48. agentrust_telemetry-0.1.0a3/examples/manual_governance.py +33 -0
  49. agentrust_telemetry-0.1.0a3/pyproject.toml +47 -0
  50. agentrust_telemetry-0.1.0a3/setup.cfg +4 -0
  51. agentrust_telemetry-0.1.0a3/spec/VERSION +1 -0
  52. agentrust_telemetry-0.1.0a3/spec/schema/action.schema.json +39 -0
  53. agentrust_telemetry-0.1.0a3/spec/schema/approval.schema.json +27 -0
  54. agentrust_telemetry-0.1.0a3/spec/schema/common.schema.json +36 -0
  55. agentrust_telemetry-0.1.0a3/spec/schema/data-flow.schema.json +46 -0
  56. agentrust_telemetry-0.1.0a3/spec/schema/envelope.schema.json +21 -0
  57. agentrust_telemetry-0.1.0a3/spec/schema/evidence.schema.json +20 -0
  58. agentrust_telemetry-0.1.0a3/spec/schema/policy-decision.schema.json +33 -0
  59. agentrust_telemetry-0.1.0a3/spec/schema/usage.schema.json +80 -0
  60. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/__init__.py +80 -0
  61. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/__init__.py +28 -0
  62. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/agt.py +207 -0
  63. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/agt_approval.py +235 -0
  64. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/agt_audit.py +177 -0
  65. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/agt_data.py +105 -0
  66. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/base.py +90 -0
  67. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/cedar.py +66 -0
  68. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/adapters/opa.py +102 -0
  69. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/client.py +113 -0
  70. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/context.py +30 -0
  71. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/data_flow.py +112 -0
  72. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/errors.py +26 -0
  73. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/evidence.py +204 -0
  74. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/otel.py +135 -0
  75. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/projection.py +49 -0
  76. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/propagation.py +102 -0
  77. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/py.typed +1 -0
  78. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/action.schema.json +39 -0
  79. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/approval.schema.json +27 -0
  80. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/common.schema.json +36 -0
  81. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/data-flow.schema.json +46 -0
  82. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/envelope.schema.json +21 -0
  83. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/evidence.schema.json +20 -0
  84. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/policy-decision.schema.json +33 -0
  85. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/schemas/usage.schema.json +80 -0
  86. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/trace_adapter.py +263 -0
  87. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/usage.py +190 -0
  88. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry/validation.py +102 -0
  89. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry.egg-info/PKG-INFO +180 -0
  90. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry.egg-info/SOURCES.txt +114 -0
  91. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry.egg-info/dependency_links.txt +1 -0
  92. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry.egg-info/requires.txt +20 -0
  93. agentrust_telemetry-0.1.0a3/src/agentrust_telemetry.egg-info/top_level.txt +1 -0
  94. agentrust_telemetry-0.1.0a3/tests/test_adapters.py +213 -0
  95. agentrust_telemetry-0.1.0a3/tests/test_agt_adapter.py +145 -0
  96. agentrust_telemetry-0.1.0a3/tests/test_agt_approval.py +203 -0
  97. agentrust_telemetry-0.1.0a3/tests/test_agt_audit.py +126 -0
  98. agentrust_telemetry-0.1.0a3/tests/test_conformance.py +61 -0
  99. agentrust_telemetry-0.1.0a3/tests/test_data_flow.py +146 -0
  100. agentrust_telemetry-0.1.0a3/tests/test_evidence.py +255 -0
  101. agentrust_telemetry-0.1.0a3/tests/test_otel_projectors.py +164 -0
  102. agentrust_telemetry-0.1.0a3/tests/test_propagation.py +86 -0
  103. agentrust_telemetry-0.1.0a3/tests/test_reference_scenario.py +32 -0
  104. agentrust_telemetry-0.1.0a3/tests/test_repository_gates.py +169 -0
  105. agentrust_telemetry-0.1.0a3/tests/test_sdk.py +174 -0
  106. agentrust_telemetry-0.1.0a3/tests/test_trace_adapter.py +244 -0
  107. agentrust_telemetry-0.1.0a3/tests/test_trace_adapter_refusals.py +215 -0
  108. agentrust_telemetry-0.1.0a3/tests/test_usage.py +122 -0
  109. agentrust_telemetry-0.1.0a3/tools/check_otel_compatibility.py +101 -0
  110. agentrust_telemetry-0.1.0a3/tools/check_release_tag.py +40 -0
  111. agentrust_telemetry-0.1.0a3/tools/check_schemas.py +31 -0
  112. agentrust_telemetry-0.1.0a3/tools/check_typescript_schemas.py +31 -0
  113. agentrust_telemetry-0.1.0a3/tools/check_versions.py +76 -0
  114. agentrust_telemetry-0.1.0a3/tools/npm_dist_tag.py +51 -0
  115. agentrust_telemetry-0.1.0a3/tools/smoke_wheel.py +35 -0
  116. agentrust_telemetry-0.1.0a3/tools/sync_schemas.py +24 -0
@@ -0,0 +1,57 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ## 0.1.0-alpha.3 - 2026-09-07
6
+
7
+ ### Fixed
8
+
9
+ - The Python `EvidenceAccumulator` deadlocked forever if `append` or `seal` was
10
+ called reentrantly on the same thread, for example from inside a
11
+ `durable_append` callback. Both now raise `EvidenceError`, matching the
12
+ TypeScript SDK's existing protection. `snapshot` remains safely callable
13
+ reentrantly.
14
+ - Patch four `fast-uri` advisories in the TypeScript lockfile and stop tag
15
+ interpolation in `release.yml`.
16
+ - `test_trace_adapter_refusals` used a duck-typed signer double, which
17
+ `agentrust-trace` 0.10.0 rejects. It now builds a real `Ed25519PrivateKey`, so
18
+ a clean install of this release runs the full suite against either 0.9 or
19
+ 0.10.
20
+
21
+ ### Changed
22
+
23
+ - Install CI dependencies from hash-pinned lock files, and add `actionlint`
24
+ plus a test-environment guard to the workflow gates.
25
+
26
+ ## 0.1.0-alpha.2 - 2026-09-02
27
+
28
+ - Align the wire `spec_version` with `spec/VERSION`; the schema previously
29
+ pinned a const that appeared nowhere in the packaging.
30
+ - Move the schema `$id` off `agentrust.io`, a domain we do not own, to
31
+ `agentrust-io.com`.
32
+ - Derive the npm dist-tag from `spec/VERSION` so a prerelease can never publish
33
+ under `latest`.
34
+
35
+ ## 0.1.0-alpha.1 - 2026-08-19
36
+
37
+ - Add TypeScript TRACE finalization through a caller-supplied official codec and
38
+ standardize tool-transcript hashing on RFC 8785 JCS across both SDKs.
39
+ - Add TypeScript metadata-only data-flow primitives plus AGT data-access,
40
+ audit-policy, and completed-action adapters.
41
+ - Enforce the documented no-URL metadata identifier boundary in both SDKs.
42
+ - Add TypeScript action-bound AGT policy, approval-request, and terminal
43
+ approval-resolution adapters with deterministic cross-language linkage.
44
+ - Require every AGT approval binding field to be present before comparing it,
45
+ preventing two absent values from being treated as a valid binding.
46
+ - Add TypeScript OPA, Cedar, and generic AGT policy-decision adapters plus an
47
+ AGT-compatible fail-closed batch sink.
48
+ - Add TypeScript usage/cost construction, coverage-labelled rollups, and
49
+ bounded-cardinality OpenTelemetry metric projection.
50
+ - Add a TypeScript evidence accumulator and adopt RFC 8785 JCS for reproducible
51
+ evidence digests across Python and TypeScript.
52
+ - Encode nanosecond Unix timestamps as canonical decimal strings for exact
53
+ cross-language JSON behavior.
54
+ - Add the pre-alpha TypeScript reference SDK and shared conformance gates.
55
+
56
+ - Initial `0.1.0-alpha.1` event contract and conformance fixtures.
57
+ - Initial Python reference SDK with schema/privacy validation and OTel span-event projection.
@@ -0,0 +1,7 @@
1
+ # Code of Conduct
2
+
3
+ This project follows the AgentTrust organization Code of Conduct:
4
+
5
+ https://github.com/agentrust-io/.github/blob/main/CODE_OF_CONDUCT.md
6
+
7
+ Report conduct concerns through the private contact described there.
@@ -0,0 +1,12 @@
1
+ # Contributing
2
+
3
+ Contract changes require:
4
+
5
+ 1. a documented semantic reason;
6
+ 2. a schema update;
7
+ 3. at least one valid fixture;
8
+ 4. an invalid or boundary fixture that would catch a plausible defect;
9
+ 5. conformance tests;
10
+ 6. migration notes for wire-incompatible changes.
11
+
12
+ No attribute may be added without identifying the signal that carries it and how an instrumentor obtains it at runtime. New content-bearing fields require security and privacy review.
@@ -0,0 +1,17 @@
1
+ # Governance
2
+
3
+ AgentTrust Telemetry is governed under the AgentTrust organization. Maintainers approve releases, normative contract changes, security-sensitive changes, and compatibility claims.
4
+
5
+ ## Decision process
6
+
7
+ - Routine fixes require maintainer review and passing required checks.
8
+ - Contract changes require an ADR or equivalent design record, valid and invalid fixtures, and conformance coverage.
9
+ - Breaking changes require migration notes and a major contract version change, including during pre-1.0 development when practical.
10
+ - Security and privacy defaults require explicit maintainer approval.
11
+ - Widely applicable telemetry conventions should be proposed upstream to OpenTelemetry rather than permanently duplicated here.
12
+
13
+ Consensus is preferred. If consensus cannot be reached, maintainers record the decision and dissent in the relevant issue or ADR.
14
+
15
+ ## Releases
16
+
17
+ Releases are cut from protected `main`, use signed tags where available, and publish provenance and an SBOM. Publishing credentials must use GitHub trusted publishing or another short-lived identity mechanism; long-lived package tokens are prohibited.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AgentTrust contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,25 @@
1
+ # Limitations
2
+
3
+ Current `0.1.0-alpha.3` limitations:
4
+
5
+ - The contract and SDK are experimental and may change incompatibly.
6
+ - A Python reference SDK and a TypeScript reference SDK (`packages/typescript/`)
7
+ exist, with shared-schema and golden-event parity; no other language binding
8
+ exists yet.
9
+ - OTel span events, Logs, and basic metrics are implemented against caller-owned
10
+ providers; collector/backend interoperability is not yet exercised.
11
+ - No factory helper emits `approval.cancelled`, the `approval.execution_*`
12
+ outcomes, or the `evidence.*` lifecycle events; these event types exist in
13
+ the schema but nothing in either SDK produces them yet.
14
+ - TRACE finalization is software-only and requires explicitly complete evidence
15
+ plus trusted caller configuration.
16
+ - Action telemetry records resolved attempts only; it does not expose in-flight
17
+ lifecycle transitions.
18
+ - Evidence memory mode is not durable. Callback mode defines acknowledgement and
19
+ retry behavior but the adopter owns storage, idempotency, and recovery.
20
+ - Propagation currently supports mutable string mappings; framework-specific HTTP,
21
+ RPC, and messaging carrier adapters are not yet included.
22
+ - The SDK validates declared metadata but cannot prove a producer's policy decision, identity, classification, token count, or cost is truthful.
23
+ - Operational OTel delivery may be sampled or dropped and is not durable audit evidence.
24
+ - The current schemas do not provide a general content-capture profile.
25
+ - Interoperability has been exercised locally with OpenTelemetry Python, not across collectors, backends, or languages.
@@ -0,0 +1,7 @@
1
+ # Maintainers
2
+
3
+ Initial maintainer:
4
+
5
+ - Imran Siddique — GitHub: `imran-siddique`
6
+
7
+ Maintainers are responsible for contract integrity, privacy and security review, releases, and contributor conduct. Changes to this list require an approved pull request.
@@ -0,0 +1,20 @@
1
+ include CHANGELOG.md
2
+ include CODE_OF_CONDUCT.md
3
+ include CONTRIBUTING.md
4
+ include GOVERNANCE.md
5
+ include LIMITATIONS.md
6
+ include MAINTAINERS.md
7
+ include NOTICE
8
+ include PRIVACY.md
9
+ include RELEASING.md
10
+ include REPOSITORY-SETUP.md
11
+ include ROADMAP.md
12
+ include SECURITY.md
13
+ include SUPPORT.md
14
+ include VERSIONING.md
15
+ recursive-include compatibility *.json
16
+ recursive-include conformance *.json *.py *.txt
17
+ recursive-include docs *.md
18
+ recursive-include examples *.py
19
+ recursive-include spec VERSION *.json
20
+ recursive-include tools *.py
@@ -0,0 +1,4 @@
1
+ AgentTrust Telemetry
2
+ Copyright 2026 AgentTrust contributors
3
+
4
+ This product includes concepts and terminology derived from OpenTelemetry semantic conventions. OpenTelemetry is a project of the Cloud Native Computing Foundation.
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentrust-telemetry
3
+ Version: 0.1.0a3
4
+ Summary: Backend-neutral governance telemetry for AI-agent runtimes
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/agentrust-io/agentrust-telemetry
7
+ Project-URL: Repository, https://github.com/agentrust-io/agentrust-telemetry
8
+ Project-URL: Issues, https://github.com/agentrust-io/agentrust-telemetry/issues
9
+ Project-URL: Security, https://github.com/agentrust-io/agentrust-telemetry/security/policy
10
+ Keywords: ai-agents,governance,opentelemetry,observability,telemetry
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Typing :: Typed
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ License-File: NOTICE
22
+ Requires-Dist: jsonschema[format]<5,>=4.23
23
+ Requires-Dist: referencing<1,>=0.35
24
+ Requires-Dist: rfc8785<1,>=0.1.4
25
+ Provides-Extra: otel
26
+ Requires-Dist: opentelemetry-api<2,>=1.30; extra == "otel"
27
+ Provides-Extra: trace
28
+ Requires-Dist: agentrust-trace<1,>=0.9; python_version >= "3.11" and extra == "trace"
29
+ Provides-Extra: test
30
+ Requires-Dist: opentelemetry-sdk<2,>=1.30; extra == "test"
31
+ Requires-Dist: agentrust-trace<1,>=0.9; python_version >= "3.11" and extra == "test"
32
+ Requires-Dist: tomli<3,>=2; python_version < "3.11" and extra == "test"
33
+ Dynamic: license-file
34
+
35
+ # AgentTrust Telemetry
36
+
37
+ Portable governance telemetry and verifiable evidence for AI-agent runtimes.
38
+
39
+ This repository defines a backend-neutral contract for policy decisions, approval lifecycles, usage, classified data flows, and evidence lifecycle events. It composes with OpenTelemetry; it is not a tracing backend, policy engine, agent framework, or dashboard.
40
+
41
+ > **Status:** alpha contract `0.1.0-alpha.3`. No stable SDK API or compatibility guarantee exists yet.
42
+
43
+ ## Why
44
+
45
+ Agent applications can already emit model and tool traces, but governance facts are often trapped in policy-engine logs, approval databases, cost modules, and proprietary dashboards. AgentTrust Telemetry gives those facts one privacy-conscious contract and correlates them with the OpenTelemetry trace already produced by the application.
46
+
47
+ The application keeps its collector, backend, policy engine, workflow framework, and UI.
48
+
49
+ ## Event families
50
+
51
+ | Family | Purpose |
52
+ |---|---|
53
+ | Policy decision | Allow, deny, challenge, error, enforcement mode, policy identity and timing |
54
+ | Approval lifecycle | Requested through terminal decision and execution outcome, bound to an action digest |
55
+ | Usage | Per-call/run token and cost facts with explicit cost provenance |
56
+ | Data flow | Classified source-to-destination metadata without payload capture |
57
+ | Action execution | Resolved tool, MCP, A2A, file, HTTP, and database attempts |
58
+ | Evidence lifecycle | Run checkpoints, completeness, and optional TRACE finalization status |
59
+
60
+ ## Current contents
61
+
62
+ - JSON Schema 2020-12 event contracts in `spec/schema/`.
63
+ - Valid and invalid conformance fixtures in `conformance/fixtures/`.
64
+ - An independent Python conformance runner in `conformance/runner/`.
65
+ - Contract tests in `tests/`.
66
+
67
+ ## Validate fixtures
68
+
69
+ ```shell
70
+ python -m pip install -r conformance/requirements.txt
71
+ python conformance/runner/validate.py
72
+ python -m unittest discover -s tests -v
73
+ ```
74
+
75
+ The validator checks schema conformance and the metadata-only privacy invariant. It does not yet validate OTLP projection or TRACE mapping.
76
+
77
+ ## Python reference SDK
78
+
79
+ Install from a checkout while the project is pre-release:
80
+
81
+ ```shell
82
+ python -m pip install -e ".[otel]"
83
+ ```
84
+
85
+ ```python
86
+ from agentrust_telemetry import SchemaValidator, TelemetryClient
87
+
88
+ client = TelemetryClient(SchemaValidator.bundled())
89
+ result = client.emit(normalized_event)
90
+ ```
91
+
92
+ The SDK uses the caller's current OpenTelemetry span when `opentelemetry-api` is installed. It never installs a provider or exporter. A caller may additionally supply a structured-log emitter.
93
+
94
+ For synchronous cross-process agent calls, propagate the caller's W3C context and
95
+ durable AgenTrust identifiers, then use the extracted context as the receiving
96
+ span's remote parent:
97
+
98
+ ```python
99
+ from agentrust_telemetry import extract_context, inject_context
100
+
101
+ carrier = {}
102
+ inject_context(carrier, run_id="run-123", agent_id="planner")
103
+
104
+ remote = extract_context(carrier)
105
+ with tracer.start_as_current_span("worker", context=remote.otel_context):
106
+ event.update(remote.event_fields(agent_id="worker"))
107
+ ```
108
+
109
+ For asynchronous queue handoffs, start a new trace with
110
+ `links=[remote.link()]`. This preserves causality without representing queued
111
+ work as a synchronous child span. Propagated metadata is untrusted input and
112
+ does not establish agent identity or authorization.
113
+
114
+ Run the synthetic example:
115
+
116
+ ```shell
117
+ python examples/manual_governance.py
118
+ ```
119
+
120
+ ## TypeScript reference SDK
121
+
122
+ The pre-alpha Node package lives in `packages/typescript`:
123
+
124
+ ```shell
125
+ cd packages/typescript
126
+ npm ci
127
+ npm run check
128
+ ```
129
+
130
+ It validates the same fixtures and privacy profile as Python and preserves
131
+ nanosecond wire timestamps as decimal strings. It does not install an OTel
132
+ provider, exporter, or global propagator.
133
+
134
+ Run the complete AGT-compatible governance, OTel, durable-evidence, and TRACE
135
+ reference workflow (Python 3.11+ with test extras installed):
136
+
137
+ ```shell
138
+ python -m pip install -e ".[test]"
139
+ python examples/governed_workflow.py
140
+ ```
141
+
142
+ ## Contract principles
143
+
144
+ - `run_id` is durable execution correlation; `trace_id` is an optional W3C operational trace context.
145
+ - Standard OpenTelemetry fields take precedence over AgentTrust extensions.
146
+ - Raw prompts, output, source code, tool arguments/results, credentials, and authorization tokens are prohibited in the metadata-only profile.
147
+ - Operational telemetry can be lossy; evidence completeness must never be overstated.
148
+ - An event reports a fact observed elsewhere. This project does not make authorization decisions.
149
+
150
+ ## Architecture and project policy
151
+
152
+ - [Architecture](docs/architecture.md)
153
+ - [OpenTelemetry projection](docs/otel-projection.md)
154
+ - [OpenTelemetry GenAI compatibility](docs/otel-genai-compatibility.md)
155
+ - [Action execution events](docs/action-events.md)
156
+ - [Data-flow classification](docs/data-flow-classification.md)
157
+ - [Usage and cost attribution](docs/usage-attribution.md)
158
+ - [Event factories and policy adapters](docs/adapters.md)
159
+ - [Evidence chain profile](docs/evidence-chain.md)
160
+ - [TRACE finalization](docs/trace-finalization.md)
161
+ - [Privacy](PRIVACY.md)
162
+ - [Limitations](LIMITATIONS.md)
163
+ - [Roadmap](ROADMAP.md)
164
+ - [Security](SECURITY.md)
165
+ - [Governance](GOVERNANCE.md)
166
+ - [Sponsors](SPONSORS.md)
167
+ - [Releasing](RELEASING.md)
168
+ - [Contributing](CONTRIBUTING.md)
169
+
170
+ ## What this project does not provide
171
+
172
+ - A telemetry collector, storage service, dashboard, or SaaS backend.
173
+ - Agent/model auto-instrumentation that duplicates OpenTelemetry GenAI or OpenInference.
174
+ - Policy evaluation or human-approval workflow execution.
175
+ - A model pricing catalog.
176
+ - A claim that sampled operational telemetry is durable audit evidence.
177
+
178
+ ## License
179
+
180
+ MIT. See `LICENSE`.
@@ -0,0 +1,17 @@
1
+ # Privacy
2
+
3
+ ## Default profile
4
+
5
+ `metadata_only` is the mandatory default. The SDK rejects known content-bearing fields and rejects extension attributes unless the application explicitly allowlists each key.
6
+
7
+ The default prohibits prompts, completions, source code, tool arguments/results, credentials, secrets, and authorization tokens. Content digests are identifiers and may still be sensitive; operators must treat them according to their threat model.
8
+
9
+ ## Responsibilities
10
+
11
+ Instrumentation authors must supply pseudonymous identities, accurate classification labels, and minimal metadata. Operators remain responsible for collector transport security, access control, retention, deletion, residency, and compliance obligations.
12
+
13
+ The SDK records classification supplied by another component. It does not establish that the classification is correct.
14
+
15
+ ## Opt-in extensions
16
+
17
+ Extension attributes require an explicit allowlist in `SchemaValidator`. Allowlisting a key is a deployment decision, not proof that every value under that key is safe. Broad wildcards are intentionally unsupported.
@@ -0,0 +1,146 @@
1
+ # AgentTrust Telemetry
2
+
3
+ Portable governance telemetry and verifiable evidence for AI-agent runtimes.
4
+
5
+ This repository defines a backend-neutral contract for policy decisions, approval lifecycles, usage, classified data flows, and evidence lifecycle events. It composes with OpenTelemetry; it is not a tracing backend, policy engine, agent framework, or dashboard.
6
+
7
+ > **Status:** alpha contract `0.1.0-alpha.3`. No stable SDK API or compatibility guarantee exists yet.
8
+
9
+ ## Why
10
+
11
+ Agent applications can already emit model and tool traces, but governance facts are often trapped in policy-engine logs, approval databases, cost modules, and proprietary dashboards. AgentTrust Telemetry gives those facts one privacy-conscious contract and correlates them with the OpenTelemetry trace already produced by the application.
12
+
13
+ The application keeps its collector, backend, policy engine, workflow framework, and UI.
14
+
15
+ ## Event families
16
+
17
+ | Family | Purpose |
18
+ |---|---|
19
+ | Policy decision | Allow, deny, challenge, error, enforcement mode, policy identity and timing |
20
+ | Approval lifecycle | Requested through terminal decision and execution outcome, bound to an action digest |
21
+ | Usage | Per-call/run token and cost facts with explicit cost provenance |
22
+ | Data flow | Classified source-to-destination metadata without payload capture |
23
+ | Action execution | Resolved tool, MCP, A2A, file, HTTP, and database attempts |
24
+ | Evidence lifecycle | Run checkpoints, completeness, and optional TRACE finalization status |
25
+
26
+ ## Current contents
27
+
28
+ - JSON Schema 2020-12 event contracts in `spec/schema/`.
29
+ - Valid and invalid conformance fixtures in `conformance/fixtures/`.
30
+ - An independent Python conformance runner in `conformance/runner/`.
31
+ - Contract tests in `tests/`.
32
+
33
+ ## Validate fixtures
34
+
35
+ ```shell
36
+ python -m pip install -r conformance/requirements.txt
37
+ python conformance/runner/validate.py
38
+ python -m unittest discover -s tests -v
39
+ ```
40
+
41
+ The validator checks schema conformance and the metadata-only privacy invariant. It does not yet validate OTLP projection or TRACE mapping.
42
+
43
+ ## Python reference SDK
44
+
45
+ Install from a checkout while the project is pre-release:
46
+
47
+ ```shell
48
+ python -m pip install -e ".[otel]"
49
+ ```
50
+
51
+ ```python
52
+ from agentrust_telemetry import SchemaValidator, TelemetryClient
53
+
54
+ client = TelemetryClient(SchemaValidator.bundled())
55
+ result = client.emit(normalized_event)
56
+ ```
57
+
58
+ The SDK uses the caller's current OpenTelemetry span when `opentelemetry-api` is installed. It never installs a provider or exporter. A caller may additionally supply a structured-log emitter.
59
+
60
+ For synchronous cross-process agent calls, propagate the caller's W3C context and
61
+ durable AgenTrust identifiers, then use the extracted context as the receiving
62
+ span's remote parent:
63
+
64
+ ```python
65
+ from agentrust_telemetry import extract_context, inject_context
66
+
67
+ carrier = {}
68
+ inject_context(carrier, run_id="run-123", agent_id="planner")
69
+
70
+ remote = extract_context(carrier)
71
+ with tracer.start_as_current_span("worker", context=remote.otel_context):
72
+ event.update(remote.event_fields(agent_id="worker"))
73
+ ```
74
+
75
+ For asynchronous queue handoffs, start a new trace with
76
+ `links=[remote.link()]`. This preserves causality without representing queued
77
+ work as a synchronous child span. Propagated metadata is untrusted input and
78
+ does not establish agent identity or authorization.
79
+
80
+ Run the synthetic example:
81
+
82
+ ```shell
83
+ python examples/manual_governance.py
84
+ ```
85
+
86
+ ## TypeScript reference SDK
87
+
88
+ The pre-alpha Node package lives in `packages/typescript`:
89
+
90
+ ```shell
91
+ cd packages/typescript
92
+ npm ci
93
+ npm run check
94
+ ```
95
+
96
+ It validates the same fixtures and privacy profile as Python and preserves
97
+ nanosecond wire timestamps as decimal strings. It does not install an OTel
98
+ provider, exporter, or global propagator.
99
+
100
+ Run the complete AGT-compatible governance, OTel, durable-evidence, and TRACE
101
+ reference workflow (Python 3.11+ with test extras installed):
102
+
103
+ ```shell
104
+ python -m pip install -e ".[test]"
105
+ python examples/governed_workflow.py
106
+ ```
107
+
108
+ ## Contract principles
109
+
110
+ - `run_id` is durable execution correlation; `trace_id` is an optional W3C operational trace context.
111
+ - Standard OpenTelemetry fields take precedence over AgentTrust extensions.
112
+ - Raw prompts, output, source code, tool arguments/results, credentials, and authorization tokens are prohibited in the metadata-only profile.
113
+ - Operational telemetry can be lossy; evidence completeness must never be overstated.
114
+ - An event reports a fact observed elsewhere. This project does not make authorization decisions.
115
+
116
+ ## Architecture and project policy
117
+
118
+ - [Architecture](docs/architecture.md)
119
+ - [OpenTelemetry projection](docs/otel-projection.md)
120
+ - [OpenTelemetry GenAI compatibility](docs/otel-genai-compatibility.md)
121
+ - [Action execution events](docs/action-events.md)
122
+ - [Data-flow classification](docs/data-flow-classification.md)
123
+ - [Usage and cost attribution](docs/usage-attribution.md)
124
+ - [Event factories and policy adapters](docs/adapters.md)
125
+ - [Evidence chain profile](docs/evidence-chain.md)
126
+ - [TRACE finalization](docs/trace-finalization.md)
127
+ - [Privacy](PRIVACY.md)
128
+ - [Limitations](LIMITATIONS.md)
129
+ - [Roadmap](ROADMAP.md)
130
+ - [Security](SECURITY.md)
131
+ - [Governance](GOVERNANCE.md)
132
+ - [Sponsors](SPONSORS.md)
133
+ - [Releasing](RELEASING.md)
134
+ - [Contributing](CONTRIBUTING.md)
135
+
136
+ ## What this project does not provide
137
+
138
+ - A telemetry collector, storage service, dashboard, or SaaS backend.
139
+ - Agent/model auto-instrumentation that duplicates OpenTelemetry GenAI or OpenInference.
140
+ - Policy evaluation or human-approval workflow execution.
141
+ - A model pricing catalog.
142
+ - A claim that sampled operational telemetry is durable audit evidence.
143
+
144
+ ## License
145
+
146
+ MIT. See `LICENSE`.
@@ -0,0 +1,59 @@
1
+ # Releasing
2
+
3
+ Releases publish the Python and TypeScript SDKs from one GitHub release event.
4
+ Do not build or upload either package from a maintainer workstation.
5
+
6
+ ## One-time registry setup
7
+
8
+ Create protected GitHub environments named `pypi` and `npm`, each with a
9
+ required maintainer review and deployment restricted to protected tags.
10
+
11
+ Configure PyPI pending trusted publishing with:
12
+
13
+ - project: `agentrust-telemetry`
14
+ - owner/repository: `agentrust-io/agentrust-telemetry`
15
+ - workflow: `release.yml`
16
+ - environment: `pypi`
17
+
18
+ Configure the npm trusted publisher for `@agentrust-io/telemetry` with:
19
+
20
+ - organization/repository: `agentrust-io/agentrust-telemetry`
21
+ - workflow: `release.yml`
22
+ - environment: `npm`
23
+ - allowed action: `npm publish`
24
+
25
+ The npm package must be owned by the `agentrust-io` npm organization before its
26
+ trusted publisher can be configured. If npm does not expose publisher settings
27
+ until the first version exists, bootstrap only that first package ownership
28
+ using npm's interactive 2FA flow, then configure trusted publishing before any
29
+ subsequent release. Never store an npm publish token in GitHub.
30
+
31
+ ## Release procedure
32
+
33
+ 1. Move the changelog entries from `Unreleased` into the new dated version.
34
+ 2. Update `spec/VERSION`; the Python and npm spellings are checked by
35
+ `tools/check_versions.py`.
36
+ 3. Run the complete CI and artifact smoke tests through a pull request.
37
+ 4. Merge the release-preparation pull request to `main`.
38
+ 5. Create a GitHub prerelease or release targeting `main`, with tag
39
+ `v<contract-version>`.
40
+ 6. Approve the `pypi` and `npm` deployment jobs after inspecting their exact
41
+ source commit and built artifacts.
42
+ 7. Confirm both registry versions, GitHub release assets, and provenance before
43
+ announcing the release.
44
+
45
+ The workflow fails closed if the tag differs from the contract version. It
46
+ builds each distribution once, sends the same artifacts to the registries, and
47
+ attaches them to the GitHub release.
48
+
49
+ The npm dist-tag is derived from `spec/VERSION` by `tools/npm_dist_tag.py`, so a
50
+ prerelease publishes under `alpha`, `beta`, `rc` or `dev` and only a stable
51
+ version publishes under `latest`. npm refuses an untagged prerelease publish
52
+ outright, and an untagged stable publish would move `latest`, so nothing here is
53
+ left to the person running the release. If you ever must publish by hand, pass
54
+ the same tag: `npm publish --tag "$(python tools/npm_dist_tag.py)"`.
55
+
56
+ Note that npm sets `latest` on a package's very first published version whatever
57
+ `--tag` says. That is expected on a bootstrap publish and corrects itself when
58
+ the first stable version ships. PyPI and npm create registry provenance
59
+ through trusted publishing; GitHub also attests the downloadable release assets.
@@ -0,0 +1,42 @@
1
+ # GitHub repository creation checklist
2
+
3
+ Verified on 2026-08-18: `agentrust-io/agentrust-telemetry` does not exist and the name is available.
4
+
5
+ PyPI also returned no matching distribution for `agentrust-telemetry` on 2026-08-18. Availability is not reservation; re-check immediately before the first publish.
6
+
7
+ ## Creation parameters
8
+
9
+ - Owner: `agentrust-io`
10
+ - Name: `agentrust-telemetry`
11
+ - Visibility: public
12
+ - Default branch: `main`
13
+ - Description: `Backend-neutral governance telemetry and verifiable evidence for AI-agent runtimes.`
14
+ - Topics: `ai-agents`, `governance`, `opentelemetry`, `observability`, `telemetry`, `trace`
15
+ - Initialize remotely: no README, license, or gitignore; this repository already supplies them.
16
+
17
+ ## Settings immediately after first push
18
+
19
+ - Enable private vulnerability reporting.
20
+ - Enable secret scanning and push protection where available.
21
+ - Enable Dependabot security updates.
22
+ - Enable automatic branch deletion after merge.
23
+ - Disable merge commits; allow squash merge with PR title as the default message.
24
+ - Protect `main` with pull requests, one approving review, CODEOWNER review, dismissal of stale approvals, conversation resolution, and required status checks.
25
+ - Required checks after their first run: all CI matrix jobs, CodeQL, and OpenSSF Scorecard where GitHub permits it.
26
+ - Prevent force pushes and branch deletion.
27
+ - Require signed commits if that matches organization-wide practice; do not enable until maintainers can comply.
28
+ - Configure the `pypi` environment and trusted publishing only when the package name and first release are approved.
29
+
30
+ ## First push sequence
31
+
32
+ 1. Review the complete staged diff and generated schema copies.
33
+ 2. Run `python tools/check_versions.py`.
34
+ 3. Run `python tools/check_schemas.py`.
35
+ 4. Run `python conformance/runner/validate.py`.
36
+ 5. Run `python -m unittest discover -s tests -v`.
37
+ 6. Run `python -m build` and `python tools/smoke_wheel.py <wheel>`.
38
+ 7. Create one DCO-signed initial commit.
39
+ 8. Create the empty GitHub repository with the parameters above.
40
+ 9. Add `origin`, push `main`, then apply the settings above.
41
+
42
+ Repository creation, initial commit, push, package-name reservation, and publishing are intentionally not performed by readiness work.
@@ -0,0 +1,24 @@
1
+ # Roadmap
2
+
3
+ ## v0.1 contract and Python reference
4
+
5
+ - Normalized event schemas and conformance fixtures.
6
+ - Metadata-only privacy enforcement.
7
+ - Caller-owned OTel span-event projection.
8
+ - Structured-log projection contract.
9
+ - Reproducible package and CI gates.
10
+ - Per-call usage facts and coverage-labelled per-agent/workflow cost rollups.
11
+ - Executable OpenTelemetry GenAI compatibility matrix pinned to upstream source.
12
+ - TypeScript reference primitives with shared-schema and golden-event parity.
13
+
14
+ ## Next
15
+
16
+ - Additional metric views and collector interoperability fixtures.
17
+ - Additional end-to-end scenarios for failure, asynchronous handoff, and incomplete evidence.
18
+ - Additional classifier adapters and organization taxonomy profiles.
19
+ - Additional W3C propagation carrier adapters beyond mutable string mappings.
20
+ - Action lifecycle expansion if adopters need in-flight attempt telemetry.
21
+ - Framework integrations and future consolidated-core native event surfaces.
22
+ - Additional TypeScript adapters and .NET, Rust, and Go reference primitives.
23
+
24
+ Roadmap items are intentions, not shipped behavior or compatibility commitments.