From 30cb7d2bf5f818ac5f19e84574c5933aca4bfda2 Mon Sep 17 00:00:00 2001 From: Imran Siddique <45405841+imran-siddique@users.noreply.github.com> Date: Fri, 16 Oct 2026 10:57:35 -0700 Subject: [PATCH] docs(papers): add the published report sources Co-Authored-By: Claude Opus 5.5 --- papers/.gitattributes | 3 + papers/README.md | 16 ++ papers/agentrust-telemetry/README.md | 20 +++ .../experiments/results/rerun-2026-09-27.txt | 80 +++++++++ .../results/rerun-2026-10-01/RERUN.txt | 65 ++++++++ .../approval-binding-output.txt | 6 + .../approval_binding_probe.py | 26 +++ .../dependencies-current-main.txt | 32 ++++ .../rerun-2026-10-01/dependencies-pinned.txt | 33 ++++ .../rerun-2026-10-01/probes-output.txt | 33 ++++ .../python-unittest-current-main.txt | 152 ++++++++++++++++++ .../python-unittest-pinned.txt | 133 +++++++++++++++ .../regression-test-at-pin-typescript.txt | 34 ++++ .../regression-tests-at-pin-python.txt | 65 ++++++++ .../rerun-2026-10-01/telemetry_probes.py | 47 ++++++ .../typescript-check-current-main.txt | 151 +++++++++++++++++ .../typescript-check-pinned.txt | 146 +++++++++++++++++ .../rerun-2026-10-01/validation_probes.py | 43 +++++ papers/agentrust-telemetry/paper.tex | 134 +++++++++++++++ papers/agentrust-telemetry/refs.bib | 13 ++ .../telemetry-evidence-acceptance/README.md | 22 +++ .../_paper-assets/fonts/Montserrat-OFL.txt | 93 +++++++++++ .../fonts/Montserrat-SemiBold.ttf | Bin 0 -> 374624 bytes .../_paper-assets/fonts/README.md | 1 + .../_paper-assets/fonts/Roboto-Bold.ttf | Bin 0 -> 158316 bytes .../_paper-assets/fonts/Roboto-OFL.txt | 93 +++++++++++ .../_paper-assets/fonts/Roboto-Regular.ttf | Bin 0 -> 157584 bytes .../telemetry-evidence-acceptance/Makefile | 5 + .../experiments/README.md | 22 +++ .../experiments/boundary_probes.py | 108 +++++++++++++ .../experiments/reproduce.py | 139 ++++++++++++++++ .../results/rerun-2026-09-27/README.md | 16 ++ .../later-revision/COMMITS.txt | 3 + .../later-revision/boundary-probes.json | 61 +++++++ .../pinned/approval-tests.txt | 91 +++++++++++ .../pinned/boundary-probes.json | 61 +++++++ .../rerun-2026-09-27/pinned/memory-tests.txt | 45 ++++++ .../rerun-2026-09-27/pinned/results.json | 107 ++++++++++++ .../pinned/telemetry-conformance.txt | 15 ++ .../pinned/telemetry-tests.txt | 135 ++++++++++++++++ .../results/rerun-2026-10-01/README.md | 24 +++ .../current-main/boundary-probes.json | 61 +++++++ .../later-revision/boundary-probes.json | 61 +++++++ .../pinned/approval-tests.txt | 91 +++++++++++ .../pinned/boundary-probes.json | 61 +++++++ .../rerun-2026-10-01/pinned/memory-tests.txt | 45 ++++++ .../rerun-2026-10-01/pinned/results.json | 107 ++++++++++++ .../pinned/telemetry-conformance.txt | 15 ++ .../pinned/telemetry-tests.txt | 135 ++++++++++++++++ .../telemetry-evidence-acceptance/paper.tex | 110 +++++++++++++ .../telemetry-evidence-acceptance/refs.bib | 44 +++++ 51 files changed, 3003 insertions(+) create mode 100644 papers/.gitattributes create mode 100644 papers/README.md create mode 100644 papers/agentrust-telemetry/README.md create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-09-27.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/RERUN.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval-binding-output.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval_binding_probe.py create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-current-main.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-pinned.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/probes-output.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-current-main.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-pinned.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-test-at-pin-typescript.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-tests-at-pin-python.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/telemetry_probes.py create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-current-main.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-pinned.txt create mode 100644 papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/validation_probes.py create mode 100644 papers/agentrust-telemetry/paper.tex create mode 100644 papers/agentrust-telemetry/refs.bib create mode 100644 papers/telemetry-evidence-acceptance/README.md create mode 100644 papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-OFL.txt create mode 100644 papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-SemiBold.ttf create mode 100644 papers/telemetry-evidence-acceptance/_paper-assets/fonts/README.md create mode 100644 papers/telemetry-evidence-acceptance/_paper-assets/fonts/Roboto-Bold.ttf create mode 100644 papers/telemetry-evidence-acceptance/_paper-assets/fonts/Roboto-OFL.txt create mode 100644 papers/telemetry-evidence-acceptance/_paper-assets/fonts/Roboto-Regular.ttf create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/Makefile create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/README.md create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/boundary_probes.py create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/reproduce.py create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/README.md create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/COMMITS.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/boundary-probes.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/approval-tests.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/boundary-probes.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/memory-tests.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/results.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-conformance.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-tests.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/README.md create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/current-main/boundary-probes.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/later-revision/boundary-probes.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/approval-tests.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/boundary-probes.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/memory-tests.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/results.json create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-conformance.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-tests.txt create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/paper.tex create mode 100644 papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/refs.bib diff --git a/papers/.gitattributes b/papers/.gitattributes new file mode 100644 index 0000000..8237688 --- /dev/null +++ b/papers/.gitattributes @@ -0,0 +1,3 @@ +# Published source packages: keep their bytes exactly as released, so each +# package manifest and SHA256SUMS still verifies after checkout. +* -text diff --git a/papers/README.md b/papers/README.md new file mode 100644 index 0000000..53ec585 --- /dev/null +++ b/papers/README.md @@ -0,0 +1,16 @@ +# Papers + +LaTeX or Markdown source for the technical reports about this project. Each folder holds the +published `source.zip` of the version listed, unpacked and unchanged, so the build and the +reproduction steps in its own README work from here. The report page carries the built PDF, +citation files and every earlier version. + +Paper text is licensed CC BY 4.0. Code inside a paper folder states its own license in that +folder; the rest of this repository keeps its existing license. + +| Report | Version and date | Page | DOI | +|---|---|---|---| +| [From Agent Observability to Governance Evidence: A Privacy-Constrained Telemetry Contract](agentrust-telemetry/) | 2, 2026-10-01 | [page](https://agentrust-io.com/research/agentrust-telemetry/v2/) | [10.5281/zenodo.23091282](https://doi.org/10.5281/zenodo.23091282) | +| [Acceptance Before Export: A Bounded Evidence Contract for Governance Telemetry](telemetry-evidence-acceptance/) | 3, 2026-10-01 | [page](https://agentrust-io.com/research/telemetry-evidence-acceptance/v3/) | [10.5281/zenodo.23091285](https://doi.org/10.5281/zenodo.23091285) | + +These sources previously lived in a private papers repository, which has been retired. diff --git a/papers/agentrust-telemetry/README.md b/papers/agentrust-telemetry/README.md new file mode 100644 index 0000000..0f16723 --- /dev/null +++ b/papers/agentrust-telemetry/README.md @@ -0,0 +1,20 @@ +# From Agent Observability to Governance Evidence: A Privacy-Constrained Telemetry Contract + +Technical report, version 2, October 1, 2026. Not peer reviewed. Patent Pending. +Version 2 corrects the statement that approval digests prevent an approval from being attached to +another action, which the reference finalizer does not check, and restores the bold type that +the version 1 build dropped. Results are unchanged. + +Build: `tectonic paper.tex` (prepared with Tectonic 0.16.9; set SOURCE_DATE_EPOCH=1790812800 +to reproduce the published PDF byte for byte). + +Paper text is licensed CC BY 4.0: https://creativecommons.org/licenses/by/4.0/ +Project code retains its existing project license; see https://github.com/agentrust-io/agentrust-telemetry. + +This package contains the manuscript source and the rerun records. The evaluated code is +agentrust-telemetry 0.1.0-alpha.2, commit 29c13cfa4047a0f5784a90df63b22a3568453158. +`experiments/results/rerun-2026-09-27.txt` records the September 27 rerun and +`experiments/results/rerun-2026-10-01/` the October 1 audit rerun at that commit, a later +revision and main, with the probe scripts it used. It is not an independently replicated +reproduction package. +Current implementation guidance: https://agentrust-io.com/telemetry/ diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-09-27.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-09-27.txt new file mode 100644 index 0000000..7132a5a --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-09-27.txt @@ -0,0 +1,80 @@ +AgenTrust Telemetry software rerun, 2026-09-27 +Repository: https://github.com/agentrust-io/agentrust-telemetry +Evaluated commit: 29c13cfa4047a0f5784a90df63b22a3568453158 + (release 0.1.0-alpha.2, tag v0.1.0-alpha.2; main as of 2026-09-03; next main commit is dated 2026-09-05) +Source obtained with: git archive (no working-tree state) +Python: 3.12.10 on Windows 11 +Install: pip install -e ".[test,otel]" resolved on 2026-09-27, then the TRACE + dependency pinned to the release current on 2026-09-03 and PyYAML added so + the two YAML repository gates run instead of skipping: + agentrust-trace==0.9.0 jsonschema==4.26.0 referencing==0.37.0 rfc8785==0.1.4 + opentelemetry-api==1.45.0 opentelemetry-sdk==1.45.0 PyYAML==6.0.3 cbor2==5.9.0 + +## python -m unittest discover -s tests -v +Ran 111 tests +OK (111 passed, 0 skipped, 0 failed) +Per module: adapters 10, agt_adapter 4, agt_approval 6, agt_audit 4, + conformance 6, data_flow 4, evidence 11, otel_projectors 6, propagation 5, + reference_scenario 1, repository_gates 16, sdk 10, trace_adapter 9, + trace_adapter_refusals 10, usage 9 + +Same command with the dependency resolution of 2026-09-27 (agentrust-trace 0.11.0, no PyYAML): +Ran 111 tests: 108 passed, 2 skipped (PyYAML not installed), 1 failed + FAIL test_trace_adapter_refusals.test_a_failure_inside_official_signing_is_reported_as_one + cause: agentrust-trace 0.10.0 (published 2026-09-06) rejects a non-Ed25519 + stand-in key ("key must be an Ed25519PrivateKey, got FailsWhenUsed"); + the repository replaced the stand-in in commit 5d963d3 (2026-09-06). + +## python conformance/runner/validate.py +PASS valid/action.json +PASS valid/approval.json +PASS valid/data-flow.json +PASS valid/evidence.json +PASS valid/policy-decision.json +PASS valid/usage.json +PASS invalid/action-without-digest.json +PASS invalid/aggregate-cost-without-rollup.json +PASS invalid/model-call-with-rollup.json +PASS invalid/numeric-timestamp.json +PASS invalid/raw-content.json +PASS invalid/usage-without-measurement.json +PASS invalid/zero-trace-id.json +13/13 expected verdicts (6 valid accepted, 7 invalid rejected); exit 0 + +## Repository contract checks +python tools/check_otel_compatibility.py + PASS OTel GenAI matrix covers 16 span attributes, 8 metrics, and 6 event families + (profile agentrust-otel-genai-compatibility-v1, captured 2026-08-18, upstream + open-telemetry/semantic-conventions-genai @ a685613a, status development) +python tools/check_typescript_schemas.py + PASS TypeScript schemas match normative bytes +python tools/check_schemas.py + PASS 8 bundled schemas match normative bytes +python tools/check_versions.py + PASS contract=0.1.0-alpha.2 python=0.1.0a2 npm_name=@agentrust-io/telemetry npm=0.1.0-alpha.2 + +## Boundary probes (scripted, against the evaluated source; probe script not part of the repository) +P1 durable callback returns False: EvidencePersistenceError raised; log projection calls=0; accepted entries=0 +P2 log exporter raises after acceptance: accepted=True; entries=1; + projection_errors=['log projection failed: RuntimeError: exporter down'] +P3 empty accumulator sealed: entries=0 completeness=complete +P4 callback commits externally then raises once, caller retries: external writes=2, local entries=1 + +## Post-evaluation regression tests run against the evaluated source +tests/test_trace_adapter_refusals.py copied from main c3515681 (fix merged 2026-09-25, PR #65) +Ran 14 tests: 3 failures, 1 error + FAIL test_an_event_edited_after_sealing_is_refused + FAIL test_a_dropped_entry_is_refused + FAIL test_a_substituted_chain_digest_is_refused + ERROR test_a_consistent_chain_over_a_malformed_event_is_refused +The evaluated finalizer signs snapshots whose entries no longer match the chain digest. + +## Comparison: current main +Commit c3515681261fd0ab6e6aa38e20eb2f071aee7a20 (release 0.1.0-alpha.5), same Python, +dependencies resolved 2026-09-27 (agentrust-trace 0.11.0, PyYAML installed) +python -m unittest discover -s tests: Ran 128 tests, OK +conformance runner: 13/13 expected verdicts (same 13 fixtures) +check_otel_compatibility: 16 span attributes, 8 metrics, 6 event families + +NOT RERUN: TypeScript test suite (npm run check); collector or backend interoperability; +performance. No hardware is involved in this evaluation. diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/RERUN.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/RERUN.txt new file mode 100644 index 0000000..b961cb5 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/RERUN.txt @@ -0,0 +1,65 @@ +AgenTrust Telemetry software rerun, 2026-10-01 (audit of technical report v1) +Repository: https://github.com/agentrust-io/agentrust-telemetry +Evaluated commit: 29c13cfa4047a0f5784a90df63b22a3568453158 (tag v0.1.0-alpha.2) +Later revision: c3515681261fd0ab6e6aa38e20eb2f071aee7a20 (release 0.1.0-alpha.5, 2026-09-26) +Current main: c86753cad6bbe9f00c5080489a12e0f94df34899 (2026-09-30; no src/ or + packages/typescript/src change since c351568) +Source obtained with: git archive ; tar commit id checked (git get-tar-commit-id) +Python 3.12.10, Node v24.18.1, npm 11.16.0, Windows 11. Fresh virtual environments. + +## Pinned commit, Python +Install: pip install -e ".[test,otel]" (resolved 2026-10-01: agentrust-trace 0.11.0, + opentelemetry 1.45.0), then agentrust-trace==0.9.0 PyYAML==6.0.3 cbor2==5.9.0 + (dependencies-pinned.txt) +python -m unittest discover -s tests -v: Ran 111 tests, OK, 0 skipped (python-unittest-pinned.txt) +Same command before the TRACE pin and PyYAML (agentrust-trace 0.11.0): + Ran 111 tests, FAILED (failures=1, skipped=2) + FAIL test_trace_adapter_refusals.test_a_failure_inside_official_signing_is_reported_as_one +python conformance/runner/validate.py: 13 PASS (6 valid accepted, 7 invalid rejected), exit 0 +python tools/check_otel_compatibility.py: PASS 16 span attributes, 8 metrics, 6 event families +python tools/check_typescript_schemas.py: PASS TypeScript schemas match normative bytes +python tools/check_schemas.py: PASS 8 bundled schemas match normative bytes +python tools/check_versions.py: PASS contract=0.1.0-alpha.2 python=0.1.0a2 npm=0.1.0-alpha.2 + +## Pinned commit, TypeScript (not rerun in the v1 report) +packages/typescript: npm ci (lockfile), npm run check (tsc build, tsx --test, npm pack --dry-run) + tests 41, pass 41, fail 0, skipped 0; pack dry run produced + agentrust-io-telemetry-0.1.0-alpha.2.tgz (typescript-check-pinned.txt) + +## Boundary probes P1 to P4 (telemetry_probes.py, reconstructed from Section 6) +pin, later revision and current main give identical results (probes-output.txt): +P1 refused ack: EvidencePersistenceError raised; log projection calls=0; entries=0 +P2 failing exporter: entries=1; projection_errors=['log projection failed: RuntimeError: exporter down'] +P3 empty seal: entries=0 completeness=complete +P4 lost ack then retry: external writes=2; local entries=1 + +## Section 7 findings, rechecked (validation_probes.py and regression tests) +At the pin: 5000-deep nesting raises RecursionError; a non-string key raises + AttributeError; NaN and Infinity attributes pass validate() and are refused only + by the accumulator (EvidenceError); a durable callback that calls snapshot() + on the same thread deadlocks (no return in 5 s). +At c351568 and current main: all four cases return EventValidationError or succeed. +tests/test_trace_adapter_refusals.py from c351568 run against the pinned source: + Ran 14 tests, FAILED (failures=3, errors=1) (regression-tests-at-pin-python.txt) +The TypeScript regression test added by the same fix, appended to the pinned + test/trace-finalizer.test.ts: pass 5, fail 1, "Missing expected exception" + (regression-test-at-pin-typescript.txt). The TypeScript finalizer at the pin + also signs an edited, truncated or digest-substituted snapshot. + +## Current main (c86753c), dependencies resolved 2026-10-01 plus PyYAML +python -m unittest discover -s tests: Ran 129 tests, OK (python-unittest-current-main.txt) + (128 at c351568; one repository-gate test added in #70) +conformance runner: 13/13; OTel matrix: 16 / 8 / 6; check_versions: 0.1.0-alpha.5 +TypeScript npm run check: tests 42, pass 42 (typescript-check-current-main.txt) + +## Not run +Collector or backend interoperability; performance; durable store; crash and restart. + +## Approval to executed-action binding (approval_binding_probe.py, added by this audit) +Challenge decision, approval.requested and approval.approved bound to action digest b*64, +then action.executed carrying the same approval_id with digest b*64 or c*64, sealed +complete and finalized with agentrust-trace 0.11.0 (approval-binding-output.txt): + pin: same digest -> affirming; different digest -> affirming + main: same digest -> affirming; different digest -> affirming +The finalizer checks request-to-approval binding (including action_digest) but does not +compare the approved digest with the executed action's digest. diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval-binding-output.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval-binding-output.txt new file mode 100644 index 0000000..f344bf3 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval-binding-output.txt @@ -0,0 +1,6 @@ +== pin +executed action with same digest as approved: appraisal=affirming +executed action with different digest: appraisal=affirming +== main +executed action with same digest as approved: appraisal=affirming +executed action with different digest: appraisal=affirming diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval_binding_probe.py b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval_binding_probe.py new file mode 100644 index 0000000..4b49de2 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/approval_binding_probe.py @@ -0,0 +1,26 @@ +"""Does TRACE finalization notice an executed action whose digest differs from the approved one? + +Usage: python approval_binding_probe.py SOURCE_DIR (an agentrust-telemetry tree) +""" +import json, sys +from pathlib import Path +ROOT = Path(sys.argv[1]); sys.path.insert(0, str(ROOT / 'src')) +from agentrust_telemetry import EvidenceAccumulator, SchemaValidator, TraceConfiguration, finalize_trace +from agentrust_trace import generate_key +fx = lambda n: json.loads((ROOT / 'conformance/fixtures/valid' / n).read_text()) +v = SchemaValidator(ROOT / 'spec/schema') +config = TraceConfiguration(subject='spiffe://example.test/agent/workflow', model_provider='example', model_id='m', model_version='1', + build_digest='sha256:' + 'b' * 64, build_slsa_level=1, origin_kind='self', origin_producer='example-runtime', + appraisal_verifier='https://example.test/verifier', classification_taxonomy='example.enterprise.v1', + classification_order=('public', 'internal', 'confidential', 'restricted')) +policy = fx('policy-decision.json'); policy['decision'] = 'challenge' +request = fx('approval.json'); request.update(event_type='approval.requested', event_id='018f0f7d-7a13-7cc2-8000-000000000010', + policy_event_id=policy['event_id'], chain_id='operators', chain_version='3', expires_at_unix_nano='1787080100000000000', time_unix_nano='1787079500000000000') +approval = fx('approval.json'); approval.update(event_type='approval.approved', policy_event_id=policy['event_id'], chain_id='operators', + chain_version='3', expires_at_unix_nano=request['expires_at_unix_nano']) +for label, digest in (('same digest as approved', 'b' * 64), ('different digest', 'c' * 64)): + action = fx('action.json'); action['action_digest'] = {'algorithm': 'sha256', 'value': digest} + acc = EvidenceAccumulator(policy['run_id'], v) + for e in (policy, request, approval, fx('data-flow.json'), action): acc.append(e) + rec = finalize_trace(acc.seal(completeness='complete'), config, signing_key=generate_key()) + print(f'executed action with {label}: appraisal={rec["appraisal"]["status"]}') diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-current-main.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-current-main.txt new file mode 100644 index 0000000..e48f4f6 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-current-main.txt @@ -0,0 +1,32 @@ +agentrust-trace==0.11.0 +annotated-types==0.8.0 +arrow==1.4.0 +attrs==26.1.0 +cffi==2.1.1 +cryptography==50.0.2 +fqdn==1.6.0 +idna==3.20 +isoduration==20.11.0 +jsonpointer==3.1.1 +jsonschema==4.26.0 +jsonschema-specifications==2025.9.1 +opentelemetry-api==1.45.0 +opentelemetry-sdk==1.45.0 +opentelemetry-semantic-conventions==0.66b0 +pycparser==3.0 +pydantic==2.13.5 +pydantic_core==2.46.5 +python-dateutil==2.9.0.post0 +PyYAML==6.0.3 +referencing==0.37.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rfc3987==1.3.8 +rfc8785==0.1.4 +rpds-py==2026.6.3 +six==1.17.0 +typing-inspection==0.4.4 +typing_extensions==4.16.0 +tzdata==2026.4 +uri-template==1.3.0 +webcolors==25.10.0 diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-pinned.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-pinned.txt new file mode 100644 index 0000000..50c9df4 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/dependencies-pinned.txt @@ -0,0 +1,33 @@ +agentrust-trace==0.9.0 +annotated-types==0.8.0 +arrow==1.4.0 +attrs==26.1.0 +cbor2==5.9.0 +cffi==2.1.1 +cryptography==50.0.2 +fqdn==1.6.0 +idna==3.20 +isoduration==20.11.0 +jsonpointer==3.1.1 +jsonschema==4.26.0 +jsonschema-specifications==2025.9.1 +opentelemetry-api==1.45.0 +opentelemetry-sdk==1.45.0 +opentelemetry-semantic-conventions==0.66b0 +pycparser==3.0 +pydantic==2.13.5 +pydantic_core==2.46.5 +python-dateutil==2.9.0.post0 +PyYAML==6.0.3 +referencing==0.37.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rfc3987==1.3.8 +rfc8785==0.1.4 +rpds-py==2026.6.3 +six==1.17.0 +typing-inspection==0.4.4 +typing_extensions==4.16.0 +tzdata==2026.4 +uri-template==1.3.0 +webcolors==25.10.0 diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/probes-output.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/probes-output.txt new file mode 100644 index 0000000..5250685 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/probes-output.txt @@ -0,0 +1,33 @@ +== pin +P1 refused ack: EvidencePersistenceError raised=True; log projection calls=0; accepted entries=0 +P2 failing exporter: entries=1; projection_errors=['log projection failed: RuntimeError: exporter down'] +P3 empty seal: entries=0 completeness=complete +P4 lost ack then retry: external writes=2; local entries=1 +deep nesting (5000): RecursionError +non-string key: AttributeError +NaN attribute, validate: accepted +Infinity attribute, validate: accepted +NaN attribute, accumulator append: EvidenceError +callback re-entering snapshot(): deadlocked (no return in 5 s) +== later +P1 refused ack: EvidencePersistenceError raised=True; log projection calls=0; accepted entries=0 +P2 failing exporter: entries=1; projection_errors=['log projection failed: RuntimeError: exporter down'] +P3 empty seal: entries=0 completeness=complete +P4 lost ack then retry: external writes=2; local entries=1 +deep nesting (5000): EventValidationError +non-string key: EventValidationError +NaN attribute, validate: EventValidationError +Infinity attribute, validate: EventValidationError +NaN attribute, accumulator append: EventValidationError +callback re-entering snapshot(): accepted +== main +P1 refused ack: EvidencePersistenceError raised=True; log projection calls=0; accepted entries=0 +P2 failing exporter: entries=1; projection_errors=['log projection failed: RuntimeError: exporter down'] +P3 empty seal: entries=0 completeness=complete +P4 lost ack then retry: external writes=2; local entries=1 +deep nesting (5000): EventValidationError +non-string key: EventValidationError +NaN attribute, validate: EventValidationError +Infinity attribute, validate: EventValidationError +NaN attribute, accumulator append: EventValidationError +callback re-entering snapshot(): accepted diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-current-main.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-current-main.txt new file mode 100644 index 0000000..4c874e1 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-current-main.txt @@ -0,0 +1,152 @@ +test_cedar_preserves_final_decision_and_reports_skipped_errors (test_adapters.AdapterTests.test_cedar_preserves_final_decision_and_reports_skipped_errors) ... ok +test_cedar_rejects_error_messages_as_codes (test_adapters.AdapterTests.test_cedar_rejects_error_messages_as_codes) ... ok +test_cedar_rejects_string_as_identifier_collection (test_adapters.AdapterTests.test_cedar_rejects_string_as_identifier_collection) ... ok +test_factory_builds_and_validates_any_supported_family (test_adapters.AdapterTests.test_factory_builds_and_validates_any_supported_family) ... ok +test_factory_matches_cross_language_golden_event (test_adapters.AdapterTests.test_factory_matches_cross_language_golden_event) ... ok +test_factory_prevents_envelope_override (test_adapters.AdapterTests.test_factory_prevents_envelope_override) ... ok +test_factory_serializes_nanoseconds_without_precision_loss (test_adapters.AdapterTests.test_factory_serializes_nanoseconds_without_precision_loss) ... ok +test_opa_boolean_log_maps_without_copying_input_or_result (test_adapters.AdapterTests.test_opa_boolean_log_maps_without_copying_input_or_result) ... ok +test_opa_complex_result_requires_explicit_mapper (test_adapters.AdapterTests.test_opa_complex_result_requires_explicit_mapper) ... ok +test_opa_rejects_malformed_source_collections (test_adapters.AdapterTests.test_opa_rejects_malformed_source_collections) ... ok +test_latency_that_overflows_nanoseconds_is_a_value_error (test_agt_adapter.AgtAdapterTests.test_latency_that_overflows_nanoseconds_is_a_value_error) ... ok +test_policy_event_maps_challenge_and_excludes_free_form_content (test_agt_adapter.AgtAdapterTests.test_policy_event_maps_challenge_and_excludes_free_form_content) ... ok +test_policy_mapper_rejects_ambiguous_decision_and_reason_message (test_agt_adapter.AgtAdapterTests.test_policy_mapper_rejects_ambiguous_decision_and_reason_message) ... ok +test_sink_prevalidates_whole_batch_before_emission (test_agt_adapter.AgtAdapterTests.test_sink_prevalidates_whole_batch_before_emission) ... ok +test_sink_uses_source_result_sentinels_and_reports_projection_failure (test_agt_adapter.AgtAdapterTests.test_sink_uses_source_result_sentinels_and_reports_projection_failure) ... ok +test_structured_kind_or_decision_is_a_value_error (test_agt_adapter.AgtAdapterTests.test_structured_kind_or_decision_is_a_value_error) ... ok +test_bindings_reject_fields_that_are_absent_on_both_records (test_agt_approval.AgtApprovalAdapterTests.test_bindings_reject_fields_that_are_absent_on_both_records) ... ok +test_protocol_chain_preserves_policy_request_and_resolution_links (test_agt_approval.AgtApprovalAdapterTests.test_protocol_chain_preserves_policy_request_and_resolution_links) ... ok +test_request_rejects_wrong_policy_action_and_chain (test_agt_approval.AgtApprovalAdapterTests.test_request_rejects_wrong_policy_action_and_chain) ... ok +test_resolution_rejects_pre_request_time_and_malformed_chain_digest (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_pre_request_time_and_malformed_chain_digest) ... ok +test_resolution_rejects_wrong_request_and_wrong_action (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_wrong_request_and_wrong_action) ... ok +test_structured_outcome_or_verdict_is_a_value_error (test_agt_approval.AgtApprovalAdapterTests.test_structured_outcome_or_verdict_is_a_value_error) ... ok +test_terminal_outcomes_map_without_treating_votes_as_resolutions (test_agt_approval.AgtApprovalAdapterTests.test_terminal_outcomes_map_without_treating_votes_as_resolutions) ... ok +test_action_audit_requires_full_action_digest_and_computes_duration (test_agt_audit.AgtAuditAdapterTests.test_action_audit_requires_full_action_digest_and_computes_duration) ... ok +test_action_rejects_missing_or_reversed_timing (test_agt_audit.AgtAuditAdapterTests.test_action_rejects_missing_or_reversed_timing) ... ok +test_blocked_action_is_denied_even_if_source_outcome_is_success (test_agt_audit.AgtAuditAdapterTests.test_blocked_action_is_denied_even_if_source_outcome_is_success) ... ok +test_policy_audit_maps_without_free_form_data_or_resource (test_agt_audit.AgtAuditAdapterTests.test_policy_audit_maps_without_free_form_data_or_resource) ... ok +test_structured_decision_or_outcome_is_a_value_error (test_agt_audit.AgtAuditAdapterTests.test_structured_decision_or_outcome_is_a_value_error) ... ok +test_action_payload_field_is_rejected_by_schema_and_privacy_gate (test_conformance.ConformanceTests.test_action_payload_field_is_rejected_by_schema_and_privacy_gate) ... ok +test_all_schemas_are_valid_draft_2020_12 (test_conformance.ConformanceTests.test_all_schemas_are_valid_draft_2020_12) ... ok +test_committed_suite_has_expected_verdicts (test_conformance.ConformanceTests.test_committed_suite_has_expected_verdicts) ... ok +test_nested_prohibited_key_is_rejected_independently (test_conformance.ConformanceTests.test_nested_prohibited_key_is_rejected_independently) ... ok +test_unknown_event_type_is_rejected (test_conformance.ConformanceTests.test_unknown_event_type_is_rejected) ... ok +test_uppercase_trace_id_is_rejected (test_conformance.ConformanceTests.test_uppercase_trace_id_is_rejected) ... ok +test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason (test_data_flow.DataFlowTests.test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason) ... ok +test_classifier_cannot_return_arbitrary_metadata (test_data_flow.DataFlowTests.test_classifier_cannot_return_arbitrary_metadata) ... ok +test_classifier_sees_content_but_event_contains_only_closed_metadata (test_data_flow.DataFlowTests.test_classifier_sees_content_but_event_contains_only_closed_metadata) ... ok +test_metadata_identifiers_reject_prose_paths_and_query_values (test_data_flow.DataFlowTests.test_metadata_identifiers_reject_prose_paths_and_query_values) ... ok +test_structured_agt_classification_is_a_value_error (test_data_flow.DataFlowTests.test_structured_agt_classification_is_a_value_error) ... ok +test_callback_and_returned_entry_cannot_mutate_retained_evidence (test_evidence.EvidenceTests.test_callback_and_returned_entry_cannot_mutate_retained_evidence) ... ok +test_chain_is_ordered_and_has_stable_golden_digest (test_evidence.EvidenceTests.test_chain_is_ordered_and_has_stable_golden_digest) ... ok +test_client_does_not_project_when_evidence_fails (test_evidence.EvidenceTests.test_client_does_not_project_when_evidence_fails) ... ok +test_client_isolates_operational_event_from_evidence_sink (test_evidence.EvidenceTests.test_client_isolates_operational_event_from_evidence_sink) ... ok +test_client_reports_evidence_persistence (test_evidence.EvidenceTests.test_client_reports_evidence_persistence) ... ok +test_context_mismatch_never_enters_evidence (test_evidence.EvidenceTests.test_context_mismatch_never_enters_evidence) ... ok +test_durable_callback_acknowledges_before_local_acceptance (test_evidence.EvidenceTests.test_durable_callback_acknowledges_before_local_acceptance) ... ok +test_failed_durable_ack_is_fail_closed_and_retryable (test_evidence.EvidenceTests.test_failed_durable_ack_is_fail_closed_and_retryable) ... ok +test_non_finite_number_cannot_enter_digest_chain (test_evidence.EvidenceTests.test_non_finite_number_cannot_enter_digest_chain) ... ok +test_reentrant_durable_append_call_is_refused_not_deadlocked (test_evidence.EvidenceTests.test_reentrant_durable_append_call_is_refused_not_deadlocked) ... ok +test_reentrant_seal_call_is_refused_not_deadlocked (test_evidence.EvidenceTests.test_reentrant_seal_call_is_refused_not_deadlocked) ... ok +test_reentrant_snapshot_call_is_safe_and_reflects_committed_state (test_evidence.EvidenceTests.test_reentrant_snapshot_call_is_safe_and_reflects_committed_state) ... ok +test_rejects_cross_run_duplicate_overflow_and_append_after_seal (test_evidence.EvidenceTests.test_rejects_cross_run_duplicate_overflow_and_append_after_seal) ... ok +test_snapshot_is_defensive_and_unsealed_never_claims_complete (test_evidence.EvidenceTests.test_snapshot_is_defensive_and_unsealed_never_claims_complete) ... ok +test_action_metrics_exclude_action_and_agent_identifiers (test_otel_projectors.OTelProjectorTests.test_action_metrics_exclude_action_and_agent_identifiers) ... ok +test_classification_allowlist_is_bounded (test_otel_projectors.OTelProjectorTests.test_classification_allowlist_is_bounded) ... ok +test_classification_metric_is_allowlisted_or_collapsed (test_otel_projectors.OTelProjectorTests.test_classification_metric_is_allowlisted_or_collapsed) ... ok +test_metric_failure_is_reported_independently (test_otel_projectors.OTelProjectorTests.test_metric_failure_is_reported_independently) ... ok +test_real_metrics_record_usage_without_high_cardinality_ids (test_otel_projectors.OTelProjectorTests.test_real_metrics_record_usage_without_high_cardinality_ids) ... ok +test_real_otel_log_preserves_event_and_active_trace_context (test_otel_projectors.OTelProjectorTests.test_real_otel_log_preserves_event_and_active_trace_context) ... ok +test_async_handoff_creates_link_without_forcing_parentage (test_propagation.PropagationTests.test_async_handoff_creates_link_without_forcing_parentage) ... ok +test_header_lookup_is_case_insensitive (test_propagation.PropagationTests.test_header_lookup_is_case_insensitive) ... ok +test_injection_rejects_header_injection (test_propagation.PropagationTests.test_injection_rejects_header_injection) ... ok +test_link_requires_valid_w3c_context (test_propagation.PropagationTests.test_link_requires_valid_w3c_context) ... ok +test_sync_handoff_preserves_trace_and_agent_parent (test_propagation.PropagationTests.test_sync_handoff_preserves_trace_and_agent_parent) ... ok +test_complete_governed_workflow (test_reference_scenario.ReferenceScenarioTests.test_complete_governed_workflow) ... ok +test_contract_version_rejects_unsupported_spellings (test_repository_gates.RepositoryGateTests.test_contract_version_rejects_unsupported_spellings) ... ok +test_contract_versions_map_to_ecosystem_spellings (test_repository_gates.RepositoryGateTests.test_contract_versions_map_to_ecosystem_spellings) ... ok +test_declared_versions_are_consistent (test_repository_gates.RepositoryGateTests.test_declared_versions_are_consistent) ... ok +test_every_lock_keeps_every_input (test_repository_gates.RepositoryGateTests.test_every_lock_keeps_every_input) ... ok +test_fuzz_seeds_match_the_conformance_fixtures (test_repository_gates.RepositoryGateTests.test_fuzz_seeds_match_the_conformance_fixtures) ... ok +test_issue_templates_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_issue_templates_are_valid_yaml_when_parser_available) ... ok +test_npm_dist_tag_matches_the_declared_contract (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_matches_the_declared_contract) ... ok +test_npm_dist_tag_never_moves_latest_for_a_prerelease (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_never_moves_latest_for_a_prerelease) ... ok +test_npm_dist_tag_rejects_an_unsupported_version (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_rejects_an_unsupported_version) ... ok +test_otel_matrix_gate_detects_attribute_metric_and_family_drift (test_repository_gates.RepositoryGateTests.test_otel_matrix_gate_detects_attribute_metric_and_family_drift) ... ok +test_otel_matrix_matches_shipped_projection (test_repository_gates.RepositoryGateTests.test_otel_matrix_matches_shipped_projection) ... ok +test_release_tag_must_match_contract (test_repository_gates.RepositoryGateTests.test_release_tag_must_match_contract) ... ok +test_schema_gate_detects_changed_bytes (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_changed_bytes) ... ok +test_schema_gate_detects_missing_and_extra_files (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_missing_and_extra_files) ... ok +test_source_manifest_includes_otel_matrix (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_otel_matrix) ... ok +test_source_manifest_includes_release_policy (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_release_policy) ... ok +test_typescript_schemas_match_normative_bytes (test_repository_gates.RepositoryGateTests.test_typescript_schemas_match_normative_bytes) ... ok +test_workflows_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_workflows_are_valid_yaml_when_parser_available) ... ok +test_bundled_schemas_match_normative_schemas (test_sdk.SdkTests.test_bundled_schemas_match_normative_schemas) ... ok +test_context_mismatch_rejects_before_projection (test_sdk.SdkTests.test_context_mismatch_rejects_before_projection) ... ok +test_deeply_nested_input_is_a_validation_error (test_sdk.SdkTests.test_deeply_nested_input_is_a_validation_error) ... ok +test_emits_correlated_span_event_and_log (test_sdk.SdkTests.test_emits_correlated_span_event_and_log) ... ok +test_explicit_attribute_allowlist_is_narrow (test_sdk.SdkTests.test_explicit_attribute_allowlist_is_narrow) ... ok +test_extension_attributes_are_deny_by_default (test_sdk.SdkTests.test_extension_attributes_are_deny_by_default) ... ok +test_log_body_is_a_deep_copy (test_sdk.SdkTests.test_log_body_is_a_deep_copy) ... ok +test_no_span_still_emits_run_correlated_log (test_sdk.SdkTests.test_no_span_still_emits_run_correlated_log) ... ok +test_non_finite_numbers_are_a_validation_error (test_sdk.SdkTests.test_non_finite_numbers_are_a_validation_error) ... ok +test_non_string_keys_are_a_validation_error (test_sdk.SdkTests.test_non_string_keys_are_a_validation_error) ... ok +test_privacy_violation_rejects_before_projection (test_sdk.SdkTests.test_privacy_violation_rejects_before_projection) ... ok +test_projection_failures_are_reported_independently (test_sdk.SdkTests.test_projection_failures_are_reported_independently) ... ok +test_real_otel_span_receives_event (test_sdk.SdkTests.test_real_otel_span_receives_event) ... ok +test_self_referencing_input_is_a_validation_error (test_sdk.SdkTests.test_self_referencing_input_is_a_validation_error) ... ok +test_action_events_create_truthful_tool_transcript (test_trace_adapter.TraceAdapterTests.test_action_events_create_truthful_tool_transcript) ... ok +test_finalizes_signs_and_validates_official_trace_record (test_trace_adapter.TraceAdapterTests.test_finalizes_signs_and_validates_official_trace_record) ... ok +test_linked_terminal_approval_resolves_policy_challenge (test_trace_adapter.TraceAdapterTests.test_linked_terminal_approval_resolves_policy_challenge) ... ok +test_refuses_conflicting_policy_bundles (test_trace_adapter.TraceAdapterTests.test_refuses_conflicting_policy_bundles) ... ok +test_refuses_missing_signer (test_trace_adapter.TraceAdapterTests.test_refuses_missing_signer) ... ok +test_refuses_policy_digest_algorithm_trace_cannot_represent (test_trace_adapter.TraceAdapterTests.test_refuses_policy_digest_algorithm_trace_cannot_represent) ... ok +test_refuses_unranked_classification (test_trace_adapter.TraceAdapterTests.test_refuses_unranked_classification) ... ok +test_refuses_unsealed_or_incomplete_evidence (test_trace_adapter.TraceAdapterTests.test_refuses_unsealed_or_incomplete_evidence) ... ok +test_unbound_or_expired_approval_cannot_resolve_policy_challenge (test_trace_adapter.TraceAdapterTests.test_unbound_or_expired_approval_cannot_resolve_policy_challenge) ... ok +test_a_consistent_chain_over_a_malformed_event_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_consistent_chain_over_a_malformed_event_is_refused) +Digests recomputed over an event the schema never accepted. ... ok +test_a_dropped_entry_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_dropped_entry_is_refused) ... ok +test_a_failure_inside_official_signing_is_reported_as_one (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_failure_inside_official_signing_is_reported_as_one) +A key that satisfies the type check and then fails when used. ... ok +test_a_policy_decision_without_a_bundle_digest_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_policy_decision_without_a_bundle_digest_is_refused) ... ok +test_a_repeated_classification_cannot_rank_anything (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_repeated_classification_cannot_rank_anything) ... ok +test_a_run_with_no_data_flow_has_nothing_to_classify (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_data_flow_has_nothing_to_classify) ... ok +test_a_run_with_no_policy_decision_has_no_policy_to_bind (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_policy_decision_has_no_policy_to_bind) ... ok +test_a_substituted_chain_digest_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_substituted_chain_digest_is_refused) ... ok +test_a_taxonomy_the_configuration_does_not_name_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_taxonomy_the_configuration_does_not_name_is_refused) ... ok +test_an_empty_run_carries_no_chained_evidence (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_empty_run_carries_no_chained_evidence) ... ok +test_an_event_edited_after_sealing_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_event_edited_after_sealing_is_refused) ... ok +test_every_required_configuration_field_is_named_when_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_every_required_configuration_field_is_named_when_absent) ... ok +test_the_optional_dependency_is_named_when_it_is_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_the_optional_dependency_is_named_when_it_is_absent) ... ok +test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode) ... ok +test_accumulator_rejects_non_finite_external_cost (test_usage.UsageTests.test_accumulator_rejects_non_finite_external_cost) ... ok +test_bool_is_not_accepted_as_token_integer (test_usage.UsageTests.test_bool_is_not_accepted_as_token_integer) ... ok +test_cost_requires_finite_amount_and_explicit_provenance (test_usage.UsageTests.test_cost_requires_finite_amount_and_explicit_provenance) ... ok +test_reused_event_id_with_changed_data_is_rejected (test_usage.UsageTests.test_reused_event_id_with_changed_data_is_rejected) ... ok +test_rollup_deduplicates_and_reports_partial_coverage (test_usage.UsageTests.test_rollup_deduplicates_and_reports_partial_coverage) ... ok +test_rollup_rejects_non_leaf_and_mixed_currency (test_usage.UsageTests.test_rollup_rejects_non_leaf_and_mixed_currency) ... ok +test_rollups_match_shared_cross_language_vector (test_usage.UsageTests.test_rollups_match_shared_cross_language_vector) ... ok +test_schema_rejects_aggregate_cost_without_run_rollup (test_usage.UsageTests.test_schema_rejects_aggregate_cost_without_run_rollup) ... ok +test_unknown_price_is_absent_not_zero (test_usage.UsageTests.test_unknown_price_is_absent_not_zero) ... ok + +---------------------------------------------------------------------- +Ran 129 tests in 7.992s + +OK +PASS conformance\fixtures\valid\action.json +PASS conformance\fixtures\valid\approval.json +PASS conformance\fixtures\valid\data-flow.json +PASS conformance\fixtures\valid\evidence.json +PASS conformance\fixtures\valid\policy-decision.json +PASS conformance\fixtures\valid\usage.json +PASS conformance\fixtures\invalid\action-without-digest.json +PASS conformance\fixtures\invalid\aggregate-cost-without-rollup.json +PASS conformance\fixtures\invalid\model-call-with-rollup.json +PASS conformance\fixtures\invalid\numeric-timestamp.json +PASS conformance\fixtures\invalid\raw-content.json +PASS conformance\fixtures\invalid\usage-without-measurement.json +PASS conformance\fixtures\invalid\zero-trace-id.json +PASS contract=0.1.0-alpha.5 python=0.1.0a5 npm_name=@agentrust-io/telemetry npm=0.1.0-alpha.5 +PASS OTel GenAI matrix covers 16 span attributes, 8 metrics, and 6 event families +PASS TypeScript schemas match normative bytes diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-pinned.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-pinned.txt new file mode 100644 index 0000000..e2daa06 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/python-unittest-pinned.txt @@ -0,0 +1,133 @@ +test_cedar_preserves_final_decision_and_reports_skipped_errors (test_adapters.AdapterTests.test_cedar_preserves_final_decision_and_reports_skipped_errors) ... ok +test_cedar_rejects_error_messages_as_codes (test_adapters.AdapterTests.test_cedar_rejects_error_messages_as_codes) ... ok +test_cedar_rejects_string_as_identifier_collection (test_adapters.AdapterTests.test_cedar_rejects_string_as_identifier_collection) ... ok +test_factory_builds_and_validates_any_supported_family (test_adapters.AdapterTests.test_factory_builds_and_validates_any_supported_family) ... ok +test_factory_matches_cross_language_golden_event (test_adapters.AdapterTests.test_factory_matches_cross_language_golden_event) ... ok +test_factory_prevents_envelope_override (test_adapters.AdapterTests.test_factory_prevents_envelope_override) ... ok +test_factory_serializes_nanoseconds_without_precision_loss (test_adapters.AdapterTests.test_factory_serializes_nanoseconds_without_precision_loss) ... ok +test_opa_boolean_log_maps_without_copying_input_or_result (test_adapters.AdapterTests.test_opa_boolean_log_maps_without_copying_input_or_result) ... ok +test_opa_complex_result_requires_explicit_mapper (test_adapters.AdapterTests.test_opa_complex_result_requires_explicit_mapper) ... ok +test_opa_rejects_malformed_source_collections (test_adapters.AdapterTests.test_opa_rejects_malformed_source_collections) ... ok +test_policy_event_maps_challenge_and_excludes_free_form_content (test_agt_adapter.AgtAdapterTests.test_policy_event_maps_challenge_and_excludes_free_form_content) ... ok +test_policy_mapper_rejects_ambiguous_decision_and_reason_message (test_agt_adapter.AgtAdapterTests.test_policy_mapper_rejects_ambiguous_decision_and_reason_message) ... ok +test_sink_prevalidates_whole_batch_before_emission (test_agt_adapter.AgtAdapterTests.test_sink_prevalidates_whole_batch_before_emission) ... ok +test_sink_uses_source_result_sentinels_and_reports_projection_failure (test_agt_adapter.AgtAdapterTests.test_sink_uses_source_result_sentinels_and_reports_projection_failure) ... ok +test_bindings_reject_fields_that_are_absent_on_both_records (test_agt_approval.AgtApprovalAdapterTests.test_bindings_reject_fields_that_are_absent_on_both_records) ... ok +test_protocol_chain_preserves_policy_request_and_resolution_links (test_agt_approval.AgtApprovalAdapterTests.test_protocol_chain_preserves_policy_request_and_resolution_links) ... ok +test_request_rejects_wrong_policy_action_and_chain (test_agt_approval.AgtApprovalAdapterTests.test_request_rejects_wrong_policy_action_and_chain) ... ok +test_resolution_rejects_pre_request_time_and_malformed_chain_digest (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_pre_request_time_and_malformed_chain_digest) ... ok +test_resolution_rejects_wrong_request_and_wrong_action (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_wrong_request_and_wrong_action) ... ok +test_terminal_outcomes_map_without_treating_votes_as_resolutions (test_agt_approval.AgtApprovalAdapterTests.test_terminal_outcomes_map_without_treating_votes_as_resolutions) ... ok +test_action_audit_requires_full_action_digest_and_computes_duration (test_agt_audit.AgtAuditAdapterTests.test_action_audit_requires_full_action_digest_and_computes_duration) ... ok +test_action_rejects_missing_or_reversed_timing (test_agt_audit.AgtAuditAdapterTests.test_action_rejects_missing_or_reversed_timing) ... ok +test_blocked_action_is_denied_even_if_source_outcome_is_success (test_agt_audit.AgtAuditAdapterTests.test_blocked_action_is_denied_even_if_source_outcome_is_success) ... ok +test_policy_audit_maps_without_free_form_data_or_resource (test_agt_audit.AgtAuditAdapterTests.test_policy_audit_maps_without_free_form_data_or_resource) ... ok +test_action_payload_field_is_rejected_by_schema_and_privacy_gate (test_conformance.ConformanceTests.test_action_payload_field_is_rejected_by_schema_and_privacy_gate) ... ok +test_all_schemas_are_valid_draft_2020_12 (test_conformance.ConformanceTests.test_all_schemas_are_valid_draft_2020_12) ... ok +test_committed_suite_has_expected_verdicts (test_conformance.ConformanceTests.test_committed_suite_has_expected_verdicts) ... ok +test_nested_prohibited_key_is_rejected_independently (test_conformance.ConformanceTests.test_nested_prohibited_key_is_rejected_independently) ... ok +test_unknown_event_type_is_rejected (test_conformance.ConformanceTests.test_unknown_event_type_is_rejected) ... ok +test_uppercase_trace_id_is_rejected (test_conformance.ConformanceTests.test_uppercase_trace_id_is_rejected) ... ok +test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason (test_data_flow.DataFlowTests.test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason) ... ok +test_classifier_cannot_return_arbitrary_metadata (test_data_flow.DataFlowTests.test_classifier_cannot_return_arbitrary_metadata) ... ok +test_classifier_sees_content_but_event_contains_only_closed_metadata (test_data_flow.DataFlowTests.test_classifier_sees_content_but_event_contains_only_closed_metadata) ... ok +test_metadata_identifiers_reject_prose_paths_and_query_values (test_data_flow.DataFlowTests.test_metadata_identifiers_reject_prose_paths_and_query_values) ... ok +test_callback_and_returned_entry_cannot_mutate_retained_evidence (test_evidence.EvidenceTests.test_callback_and_returned_entry_cannot_mutate_retained_evidence) ... ok +test_chain_is_ordered_and_has_stable_golden_digest (test_evidence.EvidenceTests.test_chain_is_ordered_and_has_stable_golden_digest) ... ok +test_client_does_not_project_when_evidence_fails (test_evidence.EvidenceTests.test_client_does_not_project_when_evidence_fails) ... ok +test_client_isolates_operational_event_from_evidence_sink (test_evidence.EvidenceTests.test_client_isolates_operational_event_from_evidence_sink) ... ok +test_client_reports_evidence_persistence (test_evidence.EvidenceTests.test_client_reports_evidence_persistence) ... ok +test_context_mismatch_never_enters_evidence (test_evidence.EvidenceTests.test_context_mismatch_never_enters_evidence) ... ok +test_durable_callback_acknowledges_before_local_acceptance (test_evidence.EvidenceTests.test_durable_callback_acknowledges_before_local_acceptance) ... ok +test_failed_durable_ack_is_fail_closed_and_retryable (test_evidence.EvidenceTests.test_failed_durable_ack_is_fail_closed_and_retryable) ... ok +test_non_finite_number_cannot_enter_digest_chain (test_evidence.EvidenceTests.test_non_finite_number_cannot_enter_digest_chain) ... ok +test_rejects_cross_run_duplicate_overflow_and_append_after_seal (test_evidence.EvidenceTests.test_rejects_cross_run_duplicate_overflow_and_append_after_seal) ... ok +test_snapshot_is_defensive_and_unsealed_never_claims_complete (test_evidence.EvidenceTests.test_snapshot_is_defensive_and_unsealed_never_claims_complete) ... ok +test_action_metrics_exclude_action_and_agent_identifiers (test_otel_projectors.OTelProjectorTests.test_action_metrics_exclude_action_and_agent_identifiers) ... ok +test_classification_allowlist_is_bounded (test_otel_projectors.OTelProjectorTests.test_classification_allowlist_is_bounded) ... ok +test_classification_metric_is_allowlisted_or_collapsed (test_otel_projectors.OTelProjectorTests.test_classification_metric_is_allowlisted_or_collapsed) ... ok +test_metric_failure_is_reported_independently (test_otel_projectors.OTelProjectorTests.test_metric_failure_is_reported_independently) ... ok +test_real_metrics_record_usage_without_high_cardinality_ids (test_otel_projectors.OTelProjectorTests.test_real_metrics_record_usage_without_high_cardinality_ids) ... ok +test_real_otel_log_preserves_event_and_active_trace_context (test_otel_projectors.OTelProjectorTests.test_real_otel_log_preserves_event_and_active_trace_context) ... ok +test_async_handoff_creates_link_without_forcing_parentage (test_propagation.PropagationTests.test_async_handoff_creates_link_without_forcing_parentage) ... ok +test_header_lookup_is_case_insensitive (test_propagation.PropagationTests.test_header_lookup_is_case_insensitive) ... ok +test_injection_rejects_header_injection (test_propagation.PropagationTests.test_injection_rejects_header_injection) ... ok +test_link_requires_valid_w3c_context (test_propagation.PropagationTests.test_link_requires_valid_w3c_context) ... ok +test_sync_handoff_preserves_trace_and_agent_parent (test_propagation.PropagationTests.test_sync_handoff_preserves_trace_and_agent_parent) ... ok +test_complete_governed_workflow (test_reference_scenario.ReferenceScenarioTests.test_complete_governed_workflow) ... ok +test_contract_version_rejects_unsupported_spellings (test_repository_gates.RepositoryGateTests.test_contract_version_rejects_unsupported_spellings) ... ok +test_contract_versions_map_to_ecosystem_spellings (test_repository_gates.RepositoryGateTests.test_contract_versions_map_to_ecosystem_spellings) ... ok +test_declared_versions_are_consistent (test_repository_gates.RepositoryGateTests.test_declared_versions_are_consistent) ... ok +test_issue_templates_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_issue_templates_are_valid_yaml_when_parser_available) ... ok +test_npm_dist_tag_matches_the_declared_contract (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_matches_the_declared_contract) ... ok +test_npm_dist_tag_never_moves_latest_for_a_prerelease (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_never_moves_latest_for_a_prerelease) ... ok +test_npm_dist_tag_rejects_an_unsupported_version (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_rejects_an_unsupported_version) ... ok +test_otel_matrix_gate_detects_attribute_metric_and_family_drift (test_repository_gates.RepositoryGateTests.test_otel_matrix_gate_detects_attribute_metric_and_family_drift) ... ok +test_otel_matrix_matches_shipped_projection (test_repository_gates.RepositoryGateTests.test_otel_matrix_matches_shipped_projection) ... ok +test_release_tag_must_match_contract (test_repository_gates.RepositoryGateTests.test_release_tag_must_match_contract) ... ok +test_schema_gate_detects_changed_bytes (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_changed_bytes) ... ok +test_schema_gate_detects_missing_and_extra_files (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_missing_and_extra_files) ... ok +test_source_manifest_includes_otel_matrix (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_otel_matrix) ... ok +test_source_manifest_includes_release_policy (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_release_policy) ... ok +test_typescript_schemas_match_normative_bytes (test_repository_gates.RepositoryGateTests.test_typescript_schemas_match_normative_bytes) ... ok +test_workflows_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_workflows_are_valid_yaml_when_parser_available) ... ok +test_bundled_schemas_match_normative_schemas (test_sdk.SdkTests.test_bundled_schemas_match_normative_schemas) ... ok +test_context_mismatch_rejects_before_projection (test_sdk.SdkTests.test_context_mismatch_rejects_before_projection) ... ok +test_emits_correlated_span_event_and_log (test_sdk.SdkTests.test_emits_correlated_span_event_and_log) ... ok +test_explicit_attribute_allowlist_is_narrow (test_sdk.SdkTests.test_explicit_attribute_allowlist_is_narrow) ... ok +test_extension_attributes_are_deny_by_default (test_sdk.SdkTests.test_extension_attributes_are_deny_by_default) ... ok +test_log_body_is_a_deep_copy (test_sdk.SdkTests.test_log_body_is_a_deep_copy) ... ok +test_no_span_still_emits_run_correlated_log (test_sdk.SdkTests.test_no_span_still_emits_run_correlated_log) ... ok +test_privacy_violation_rejects_before_projection (test_sdk.SdkTests.test_privacy_violation_rejects_before_projection) ... ok +test_projection_failures_are_reported_independently (test_sdk.SdkTests.test_projection_failures_are_reported_independently) ... ok +test_real_otel_span_receives_event (test_sdk.SdkTests.test_real_otel_span_receives_event) ... ok +test_action_events_create_truthful_tool_transcript (test_trace_adapter.TraceAdapterTests.test_action_events_create_truthful_tool_transcript) ... ok +test_finalizes_signs_and_validates_official_trace_record (test_trace_adapter.TraceAdapterTests.test_finalizes_signs_and_validates_official_trace_record) ... ok +test_linked_terminal_approval_resolves_policy_challenge (test_trace_adapter.TraceAdapterTests.test_linked_terminal_approval_resolves_policy_challenge) ... ok +test_refuses_conflicting_policy_bundles (test_trace_adapter.TraceAdapterTests.test_refuses_conflicting_policy_bundles) ... ok +test_refuses_missing_signer (test_trace_adapter.TraceAdapterTests.test_refuses_missing_signer) ... ok +test_refuses_policy_digest_algorithm_trace_cannot_represent (test_trace_adapter.TraceAdapterTests.test_refuses_policy_digest_algorithm_trace_cannot_represent) ... ok +test_refuses_unranked_classification (test_trace_adapter.TraceAdapterTests.test_refuses_unranked_classification) ... ok +test_refuses_unsealed_or_incomplete_evidence (test_trace_adapter.TraceAdapterTests.test_refuses_unsealed_or_incomplete_evidence) ... ok +test_unbound_or_expired_approval_cannot_resolve_policy_challenge (test_trace_adapter.TraceAdapterTests.test_unbound_or_expired_approval_cannot_resolve_policy_challenge) ... ok +test_a_failure_inside_official_signing_is_reported_as_one (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_failure_inside_official_signing_is_reported_as_one) +A key that satisfies the shape check and then fails when used. ... ok +test_a_policy_decision_without_a_bundle_digest_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_policy_decision_without_a_bundle_digest_is_refused) ... ok +test_a_repeated_classification_cannot_rank_anything (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_repeated_classification_cannot_rank_anything) ... ok +test_a_run_with_no_data_flow_has_nothing_to_classify (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_data_flow_has_nothing_to_classify) ... ok +test_a_run_with_no_policy_decision_has_no_policy_to_bind (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_policy_decision_has_no_policy_to_bind) ... ok +test_a_taxonomy_the_configuration_does_not_name_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_taxonomy_the_configuration_does_not_name_is_refused) ... ok +test_an_empty_run_carries_no_chained_evidence (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_empty_run_carries_no_chained_evidence) ... ok +test_every_required_configuration_field_is_named_when_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_every_required_configuration_field_is_named_when_absent) ... ok +test_the_optional_dependency_is_named_when_it_is_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_the_optional_dependency_is_named_when_it_is_absent) ... ok +test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode) ... ok +test_accumulator_rejects_non_finite_external_cost (test_usage.UsageTests.test_accumulator_rejects_non_finite_external_cost) ... ok +test_bool_is_not_accepted_as_token_integer (test_usage.UsageTests.test_bool_is_not_accepted_as_token_integer) ... ok +test_cost_requires_finite_amount_and_explicit_provenance (test_usage.UsageTests.test_cost_requires_finite_amount_and_explicit_provenance) ... ok +test_reused_event_id_with_changed_data_is_rejected (test_usage.UsageTests.test_reused_event_id_with_changed_data_is_rejected) ... ok +test_rollup_deduplicates_and_reports_partial_coverage (test_usage.UsageTests.test_rollup_deduplicates_and_reports_partial_coverage) ... ok +test_rollup_rejects_non_leaf_and_mixed_currency (test_usage.UsageTests.test_rollup_rejects_non_leaf_and_mixed_currency) ... ok +test_rollups_match_shared_cross_language_vector (test_usage.UsageTests.test_rollups_match_shared_cross_language_vector) ... ok +test_schema_rejects_aggregate_cost_without_run_rollup (test_usage.UsageTests.test_schema_rejects_aggregate_cost_without_run_rollup) ... ok +test_unknown_price_is_absent_not_zero (test_usage.UsageTests.test_unknown_price_is_absent_not_zero) ... ok + +---------------------------------------------------------------------- +Ran 111 tests in 7.340s + +OK +PASS conformance\fixtures\valid\action.json +PASS conformance\fixtures\valid\approval.json +PASS conformance\fixtures\valid\data-flow.json +PASS conformance\fixtures\valid\evidence.json +PASS conformance\fixtures\valid\policy-decision.json +PASS conformance\fixtures\valid\usage.json +PASS conformance\fixtures\invalid\action-without-digest.json +PASS conformance\fixtures\invalid\aggregate-cost-without-rollup.json +PASS conformance\fixtures\invalid\model-call-with-rollup.json +PASS conformance\fixtures\invalid\numeric-timestamp.json +PASS conformance\fixtures\invalid\raw-content.json +PASS conformance\fixtures\invalid\usage-without-measurement.json +PASS conformance\fixtures\invalid\zero-trace-id.json +PASS contract=0.1.0-alpha.2 python=0.1.0a2 npm_name=@agentrust-io/telemetry npm=0.1.0-alpha.2 +PASS OTel GenAI matrix covers 16 span attributes, 8 metrics, and 6 event families +PASS TypeScript schemas match normative bytes diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-test-at-pin-typescript.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-test-at-pin-typescript.txt new file mode 100644 index 0000000..34cc93d --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-test-at-pin-typescript.txt @@ -0,0 +1,34 @@ +✔ finalizer derives claims then signs, validates, and self-verifies (14.7155ms) +✔ tool transcript uses the shared RFC 8785 sequence/event digest (4.1443ms) +✔ linked approval resolves a challenge while an unrelated approval does not (6.3127ms) +✔ finalization refuses incomplete evidence, conflicts, unranked data, and missing trust inputs (3.9279ms) +✔ codec validation or self-verification failure is fail-closed (1.1009ms) +✖ finalizer refuses a snapshot whose entries no longer hash to its chain digest (2.1761ms) +ℹ tests 6 +ℹ suites 0 +ℹ pass 5 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 824.5197 + +✖ failing tests: + +test at test\trace-finalizer.test.ts:56:1 +✖ finalizer refuses a snapshot whose entries no longer hash to its chain digest (2.1761ms) + AssertionError [ERR_ASSERTION]: Missing expected exception. + at TestContext. (\ts-pin\packages\typescript\test\trace-finalizer.test.ts:60:10) + at Test.runInAsyncScope (node:async_hooks:227:14) + at Test.run (node:internal/test_runner/test:1325:25) + at Test.processPendingSubtests (node:internal/test_runner/test:911:18) + at Test.postRun (node:internal/test_runner/test:1465:19) + at Test.run (node:internal/test_runner/test:1390:12) + at async Test.processPendingSubtests (node:internal/test_runner/test:911:7) { + generatedMessage: false, + code: 'ERR_ASSERTION', + actual: undefined, + expected: /evidence chain does not verify/, + operator: 'throws', + diff: 'simple' + } diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-tests-at-pin-python.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-tests-at-pin-python.txt new file mode 100644 index 0000000..8b7c24a --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/regression-tests-at-pin-python.txt @@ -0,0 +1,65 @@ +test_a_consistent_chain_over_a_malformed_event_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_consistent_chain_over_a_malformed_event_is_refused) +Digests recomputed over an event the schema never accepted. ... ERROR +test_a_dropped_entry_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_dropped_entry_is_refused) ... FAIL +test_a_failure_inside_official_signing_is_reported_as_one (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_failure_inside_official_signing_is_reported_as_one) +A key that satisfies the type check and then fails when used. ... ok +test_a_policy_decision_without_a_bundle_digest_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_policy_decision_without_a_bundle_digest_is_refused) ... ok +test_a_repeated_classification_cannot_rank_anything (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_repeated_classification_cannot_rank_anything) ... ok +test_a_run_with_no_data_flow_has_nothing_to_classify (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_data_flow_has_nothing_to_classify) ... ok +test_a_run_with_no_policy_decision_has_no_policy_to_bind (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_policy_decision_has_no_policy_to_bind) ... ok +test_a_substituted_chain_digest_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_substituted_chain_digest_is_refused) ... FAIL +test_a_taxonomy_the_configuration_does_not_name_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_taxonomy_the_configuration_does_not_name_is_refused) ... ok +test_an_empty_run_carries_no_chained_evidence (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_empty_run_carries_no_chained_evidence) ... ok +test_an_event_edited_after_sealing_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_event_edited_after_sealing_is_refused) ... FAIL +test_every_required_configuration_field_is_named_when_absent (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_every_required_configuration_field_is_named_when_absent) ... ok +test_the_optional_dependency_is_named_when_it_is_absent (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_the_optional_dependency_is_named_when_it_is_absent) ... ok +test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode) ... ok + +====================================================================== +ERROR: test_a_consistent_chain_over_a_malformed_event_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_consistent_chain_over_a_malformed_event_is_refused) +Digests recomputed over an event the schema never accepted. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "\src-pin-reg\tests\test_trace_adapter_refusals.py", line 277, in test_a_consistent_chain_over_a_malformed_event_is_refused + finalize_trace(snapshot, self.config, signing_key=self.key) + File "\src-pin-reg\src\agentrust_telemetry\trace_adapter.py", line 47, in finalize_trace + bundle_hash, enforcement_mode = _policy_binding(events) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "\src-pin-reg\src\agentrust_telemetry\trace_adapter.py", line 136, in _policy_binding + if any("bundle_digest" not in event["policy"] for event in decisions): + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "\src-pin-reg\src\agentrust_telemetry\trace_adapter.py", line 136, in + if any("bundle_digest" not in event["policy"] for event in decisions): + ~~~~~^^^^^^^^^^ +KeyError: 'policy' + +====================================================================== +FAIL: test_a_dropped_entry_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_dropped_entry_is_refused) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "\src-pin-reg\tests\test_trace_adapter_refusals.py", line 237, in test_a_dropped_entry_is_refused + self.assertIn("evidence chain does not verify", str(caught.exception)) +AssertionError: 'evidence chain does not verify' not found in 'no policy decision evidence is present' + +====================================================================== +FAIL: test_a_substituted_chain_digest_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_substituted_chain_digest_is_refused) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "\src-pin-reg\tests\test_trace_adapter_refusals.py", line 242, in test_a_substituted_chain_digest_is_refused + with self.assertRaises(TraceFinalizationError) as caught: + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError: TraceFinalizationError not raised + +====================================================================== +FAIL: test_an_event_edited_after_sealing_is_refused (tests.test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_event_edited_after_sealing_is_refused) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "\src-pin-reg\tests\test_trace_adapter_refusals.py", line 228, in test_an_event_edited_after_sealing_is_refused + with self.assertRaises(TraceFinalizationError) as caught: + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError: TraceFinalizationError not raised + +---------------------------------------------------------------------- +Ran 14 tests in 0.571s + +FAILED (failures=3, errors=1) diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/telemetry_probes.py b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/telemetry_probes.py new file mode 100644 index 0000000..98c4de7 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/telemetry_probes.py @@ -0,0 +1,47 @@ +"""Paper 1 (agentrust-telemetry v1) boundary probes P1 to P4, reconstructed from Section 6. + +Usage: python telemetry_probes.py SOURCE_DIR (an agentrust-telemetry tree) +Prints one line per probe; records observations, does not assert. +""" +import json, sys +from pathlib import Path +SRC = Path(sys.argv[1]) +sys.path.insert(0, str(SRC / 'src')) +from agentrust_telemetry import EvidenceAccumulator, SchemaValidator, TelemetryClient, EvidencePersistenceError + +v = SchemaValidator(SRC / 'spec/schema') +event = json.loads((SRC / 'conformance/fixtures/valid/policy-decision.json').read_text()) + +class Log: + def __init__(self, fail=False): self.calls = 0; self.fail = fail + def emit(self, rec): + self.calls += 1 + if self.fail: raise RuntimeError('exporter down') + +# P1: durable callback refuses (returns False) +a = EvidenceAccumulator(event['run_id'], v, durable_append=lambda e: False) +log = Log(); raised = False +try: TelemetryClient(v, span_resolver=lambda: None, evidence_sink=a, log_emitter=log).emit(event) +except EvidencePersistenceError: raised = True +print(f'P1 refused ack: EvidencePersistenceError raised={raised}; log projection calls={log.calls}; accepted entries={len(a.snapshot().entries)}') + +# P2: log exporter raises after acceptance +a = EvidenceAccumulator(event['run_id'], v) +r = TelemetryClient(v, span_resolver=lambda: None, evidence_sink=a, log_emitter=Log(True)).emit(event) +print(f'P2 failing exporter: entries={len(a.snapshot().entries)}; projection_errors={list(r.projection_errors)}') + +# P3: empty accumulator sealed as complete +s = EvidenceAccumulator('empty-run', v).seal(completeness='complete') +print(f'P3 empty seal: entries={len(s.entries)} completeness={s.completeness}') + +# P4: callback commits externally, then raises once; caller retries +external = []; state = {'n': 0} +def flaky(entry): + external.append(entry.event_id); state['n'] += 1 + if state['n'] == 1: raise RuntimeError('ack lost after external commit') + return True +a = EvidenceAccumulator(event['run_id'], v, durable_append=flaky) +for _ in range(2): + try: a.append(event); break + except EvidencePersistenceError: pass +print(f'P4 lost ack then retry: external writes={len(external)}; local entries={len(a.snapshot().entries)}') diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-current-main.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-current-main.txt new file mode 100644 index 0000000..26b4916 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-current-main.txt @@ -0,0 +1,151 @@ + +> @agentrust-io/telemetry@0.1.0-alpha.5 check +> npm run build && npm test && npm pack --dry-run + + +> @agentrust-io/telemetry@0.1.0-alpha.5 build +> tsc -p tsconfig.json + + +> @agentrust-io/telemetry@0.1.0-alpha.5 test +> tsx --test test/*.test.ts + +✔ OPA boolean decision logs preserve safe facts and match Python identifiers (12.8381ms) +✔ OPA rejects ambiguous results, malformed collections, and normalized invalid dates (2.1347ms) +✔ Cedar sorts stable codes, retains final decision, and rejects prose errors (1.1367ms) +✔ AGT policy mapping excludes free-form content and sink prevalidates a whole batch (5.4747ms) +✔ AGT sink reports projection failure and identifiers cannot carry prose (0.4324ms) +✔ approval chain preserves Python-compatible policy, request, and resolution links (7.4834ms) +✔ request mapping rejects every policy binding mismatch (2.4333ms) +✔ resolution mapping rejects request mismatch, chronology reversal, and malformed evidence (1.06ms) +✔ only terminal outcomes map to terminal approval events (2.2161ms) +✔ audit policy mapping matches Python ID and excludes free-form and partial hashes (10.8772ms) +✔ audit action requires caller full digest and computes safe duration (7.474ms) +✔ audit action rejects absent, reversed, and unsafe timing (2.4852ms) +✔ classifier sees content while the event contains only closed metadata (3.3033ms) +✔ classification boundary rejects arbitrary results and prose identifiers (0.5564ms) +✔ AGT access maps only tier, decision, agent, and time (2.1632ms) +✔ evidence chain matches the shared Python and TypeScript golden vector (145.7215ms) +✔ durable acknowledgement is fail-closed, retryable, and copy-isolated (252.169ms) +✔ cross-run, duplicate, overflow, invalid number, and sealed mutations are rejected (2.6848ms) +✔ reentrant durable callbacks cannot corrupt sequence state (3.8419ms) +✔ client does not project an event when evidence persistence fails (143.2795ms) +✔ usage metrics record totals without high-cardinality identity dimensions (6.5471ms) +✔ classification dimensions are bounded by an explicit allowlist (1.819ms) +✔ policy, approval, and action metrics expose only bounded semantic dimensions (2.2672ms) +✔ W3C and durable AgentTrust context round-trip (5.5184ms) +✔ headers are case-insensitive and reject line breaks (0.5124ms) +✔ valid and invalid shared conformance fixtures have identical verdict classes (12.3895ms) +✔ event construction matches the cross-language golden bytes semantically (6.8337ms) +✔ uint64-scale nanoseconds survive construction exactly (1.231ms) +✔ projection matches Python allowlist and does not flatten nested content (0.4337ms) +✔ client validates context before all caller-owned projections (0.6983ms) +✔ invalid all-zero OTel context is treated as absent (0.4114ms) +✔ log body and evidence input are defensive copies (0.5304ms) +✔ finalizer derives claims then signs, validates, and self-verifies (14.42ms) +✔ tool transcript uses the shared RFC 8785 sequence/event digest (19.8728ms) +✔ linked approval resolves a challenge while an unrelated approval does not (100.5955ms) +✔ finalization refuses incomplete evidence, conflicts, unranked data, and missing trust inputs (13.5107ms) +✔ codec validation or self-verification failure is fail-closed (0.9121ms) +✔ finalizer refuses a snapshot whose entries no longer hash to its chain digest (35.9274ms) +✔ unknown cost stays absent and observations validate provenance (11.7523ms) +✔ rollups deduplicate leaves, preserve partial coverage, and add costs decimally (6.2445ms) +✔ rollups reject changed duplicate IDs, non-leaves, mixed currency, and unsafe totals (2.2886ms) +✔ agent and workflow rollups match the shared Python and TypeScript vector (2.037ms) +ℹ tests 42 +ℹ suites 0 +ℹ pass 42 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 13496.0361 +npm notice +npm notice package: @agentrust-io/telemetry@0.1.0-alpha.5 +npm notice Tarball Contents +npm notice 1.1kB LICENSE +npm notice 1.0kB README.md +npm notice 2.2kB dist/adapters.d.ts +npm notice 2.2kB dist/adapters.d.ts.map +npm notice 9.3kB dist/adapters.js +npm notice 10.3kB dist/adapters.js.map +npm notice 1.0kB dist/agt-approval.d.ts +npm notice 1.1kB dist/agt-approval.d.ts.map +npm notice 6.8kB dist/agt-approval.js +npm notice 6.9kB dist/agt-approval.js.map +npm notice 760B dist/agt-audit.d.ts +npm notice 816B dist/agt-audit.d.ts.map +npm notice 5.6kB dist/agt-audit.js +npm notice 6.3kB dist/agt-audit.js.map +npm notice 1.0kB dist/client.d.ts +npm notice 930B dist/client.d.ts.map +npm notice 2.6kB dist/client.js +npm notice 2.6kB dist/client.js.map +npm notice 1.8kB dist/data-flow.d.ts +npm notice 1.8kB dist/data-flow.d.ts.map +npm notice 4.8kB dist/data-flow.js +npm notice 4.9kB dist/data-flow.js.map +npm notice 219B dist/evidence-digest.d.ts +npm notice 272B dist/evidence-digest.d.ts.map +npm notice 918B dist/evidence-digest.js +npm notice 897B dist/evidence-digest.js.map +npm notice 1.4kB dist/evidence.d.ts +npm notice 1.2kB dist/evidence.d.ts.map +npm notice 4.1kB dist/evidence.js +npm notice 3.7kB dist/evidence.js.map +npm notice 921B dist/factory.d.ts +npm notice 963B dist/factory.d.ts.map +npm notice 2.4kB dist/factory.js +npm notice 2.5kB dist/factory.js.map +npm notice 484B dist/index.d.ts +npm notice 412B dist/index.d.ts.map +npm notice 449B dist/index.js +npm notice 387B dist/index.js.map +npm notice 336B dist/metrics.d.ts +npm notice 357B dist/metrics.d.ts.map +npm notice 4.1kB dist/metrics.js +npm notice 3.9kB dist/metrics.js.map +npm notice 444B dist/projection.d.ts +npm notice 511B dist/projection.d.ts.map +npm notice 1.4kB dist/projection.js +npm notice 1.3kB dist/projection.js.map +npm notice 1.1kB dist/propagation.d.ts +npm notice 1.0kB dist/propagation.d.ts.map +npm notice 2.6kB dist/propagation.js +npm notice 3.0kB dist/propagation.js.map +npm notice 1.3kB dist/trace-finalizer.d.ts +npm notice 1.3kB dist/trace-finalizer.d.ts.map +npm notice 10.7kB dist/trace-finalizer.js +npm notice 11.1kB dist/trace-finalizer.js.map +npm notice 1.1kB dist/types.d.ts +npm notice 1.2kB dist/types.d.ts.map +npm notice 44B dist/types.js +npm notice 102B dist/types.js.map +npm notice 1.7kB dist/usage.d.ts +npm notice 1.5kB dist/usage.d.ts.map +npm notice 5.8kB dist/usage.js +npm notice 6.1kB dist/usage.js.map +npm notice 479B dist/validation.d.ts +npm notice 471B dist/validation.d.ts.map +npm notice 4.2kB dist/validation.js +npm notice 4.2kB dist/validation.js.map +npm notice 1.3kB package.json +npm notice 1.7kB schemas/action.schema.json +npm notice 1.6kB schemas/approval.schema.json +npm notice 1.4kB schemas/common.schema.json +npm notice 1.9kB schemas/data-flow.schema.json +npm notice 1.2kB schemas/envelope.schema.json +npm notice 900B schemas/evidence.schema.json +npm notice 1.6kB schemas/policy-decision.schema.json +npm notice 3.4kB schemas/usage.schema.json +npm notice Tarball Details +npm notice name: @agentrust-io/telemetry +npm notice version: 0.1.0-alpha.5 +npm notice filename: agentrust-io-telemetry-0.1.0-alpha.5.tgz +npm notice package size: 37.9 kB +npm notice unpacked size: 183.7 kB +npm notice shasum: 5235c6a7ba8da9be08e5d44870ef0809ea3e7dc7 +npm notice integrity: sha512-CRB1SwcOTiuDB[...]Eg5imHfi2tR9Q== +npm notice total files: 75 +npm notice +agentrust-io-telemetry-0.1.0-alpha.5.tgz diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-pinned.txt b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-pinned.txt new file mode 100644 index 0000000..7a66994 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/typescript-check-pinned.txt @@ -0,0 +1,146 @@ + +> @agentrust-io/telemetry@0.1.0-alpha.2 check +> npm run build && npm test && npm pack --dry-run + + +> @agentrust-io/telemetry@0.1.0-alpha.2 build +> tsc -p tsconfig.json + + +> @agentrust-io/telemetry@0.1.0-alpha.2 test +> tsx --test test/*.test.ts + +✔ OPA boolean decision logs preserve safe facts and match Python identifiers (9.4232ms) +✔ OPA rejects ambiguous results, malformed collections, and normalized invalid dates (2.1862ms) +✔ Cedar sorts stable codes, retains final decision, and rejects prose errors (0.6554ms) +✔ AGT policy mapping excludes free-form content and sink prevalidates a whole batch (0.8977ms) +✔ AGT sink reports projection failure and identifiers cannot carry prose (0.539ms) +✔ approval chain preserves Python-compatible policy, request, and resolution links (6.9146ms) +✔ request mapping rejects every policy binding mismatch (0.6131ms) +✔ resolution mapping rejects request mismatch, chronology reversal, and malformed evidence (0.733ms) +✔ only terminal outcomes map to terminal approval events (1.1321ms) +✔ audit policy mapping matches Python ID and excludes free-form and partial hashes (18.8166ms) +✔ audit action requires caller full digest and computes safe duration (3.9528ms) +✔ audit action rejects absent, reversed, and unsafe timing (0.5037ms) +✔ classifier sees content while the event contains only closed metadata (3.2515ms) +✔ classification boundary rejects arbitrary results and prose identifiers (1.6484ms) +✔ AGT access maps only tier, decision, agent, and time (1.8071ms) +✔ evidence chain matches the shared Python and TypeScript golden vector (10.4962ms) +✔ durable acknowledgement is fail-closed, retryable, and copy-isolated (10.9122ms) +✔ cross-run, duplicate, overflow, invalid number, and sealed mutations are rejected (4.1169ms) +✔ reentrant durable callbacks cannot corrupt sequence state (0.9573ms) +✔ client does not project an event when evidence persistence fails (13.2601ms) +✔ usage metrics record totals without high-cardinality identity dimensions (4.5101ms) +✔ classification dimensions are bounded by an explicit allowlist (1.1192ms) +✔ policy, approval, and action metrics expose only bounded semantic dimensions (11.0404ms) +✔ W3C and durable AgentTrust context round-trip (3.0052ms) +✔ headers are case-insensitive and reject line breaks (0.3918ms) +✔ valid and invalid shared conformance fixtures have identical verdict classes (8.3736ms) +✔ event construction matches the cross-language golden bytes semantically (1.826ms) +✔ uint64-scale nanoseconds survive construction exactly (0.6991ms) +✔ projection matches Python allowlist and does not flatten nested content (0.2767ms) +✔ client validates context before all caller-owned projections (0.5157ms) +✔ invalid all-zero OTel context is treated as absent (0.2903ms) +✔ log body and evidence input are defensive copies (0.4044ms) +✔ finalizer derives claims then signs, validates, and self-verifies (6.4703ms) +✔ tool transcript uses the shared RFC 8785 sequence/event digest (3.5356ms) +✔ linked approval resolves a challenge while an unrelated approval does not (5.8819ms) +✔ finalization refuses incomplete evidence, conflicts, unranked data, and missing trust inputs (3.3329ms) +✔ codec validation or self-verification failure is fail-closed (1.1157ms) +✔ unknown cost stays absent and observations validate provenance (6.8512ms) +✔ rollups deduplicate leaves, preserve partial coverage, and add costs decimally (2.5112ms) +✔ rollups reject changed duplicate IDs, non-leaves, mixed currency, and unsafe totals (6.9783ms) +✔ agent and workflow rollups match the shared Python and TypeScript vector (4.4286ms) +ℹ tests 41 +ℹ suites 0 +ℹ pass 41 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 2916.3694 +npm notice +npm notice package: @agentrust-io/telemetry@0.1.0-alpha.2 +npm notice Tarball Contents +npm notice 1.1kB LICENSE +npm notice 1.0kB README.md +npm notice 2.2kB dist/adapters.d.ts +npm notice 2.2kB dist/adapters.d.ts.map +npm notice 9.3kB dist/adapters.js +npm notice 10.3kB dist/adapters.js.map +npm notice 1.0kB dist/agt-approval.d.ts +npm notice 1.1kB dist/agt-approval.d.ts.map +npm notice 6.8kB dist/agt-approval.js +npm notice 6.9kB dist/agt-approval.js.map +npm notice 760B dist/agt-audit.d.ts +npm notice 816B dist/agt-audit.d.ts.map +npm notice 5.6kB dist/agt-audit.js +npm notice 6.3kB dist/agt-audit.js.map +npm notice 1.0kB dist/client.d.ts +npm notice 930B dist/client.d.ts.map +npm notice 2.6kB dist/client.js +npm notice 2.6kB dist/client.js.map +npm notice 1.8kB dist/data-flow.d.ts +npm notice 1.8kB dist/data-flow.d.ts.map +npm notice 4.8kB dist/data-flow.js +npm notice 4.9kB dist/data-flow.js.map +npm notice 1.4kB dist/evidence.d.ts +npm notice 1.2kB dist/evidence.d.ts.map +npm notice 4.7kB dist/evidence.js +npm notice 4.4kB dist/evidence.js.map +npm notice 921B dist/factory.d.ts +npm notice 963B dist/factory.d.ts.map +npm notice 2.4kB dist/factory.js +npm notice 2.5kB dist/factory.js.map +npm notice 484B dist/index.d.ts +npm notice 412B dist/index.d.ts.map +npm notice 449B dist/index.js +npm notice 387B dist/index.js.map +npm notice 336B dist/metrics.d.ts +npm notice 357B dist/metrics.d.ts.map +npm notice 4.1kB dist/metrics.js +npm notice 3.9kB dist/metrics.js.map +npm notice 444B dist/projection.d.ts +npm notice 511B dist/projection.d.ts.map +npm notice 1.4kB dist/projection.js +npm notice 1.3kB dist/projection.js.map +npm notice 1.1kB dist/propagation.d.ts +npm notice 1.0kB dist/propagation.d.ts.map +npm notice 2.6kB dist/propagation.js +npm notice 3.0kB dist/propagation.js.map +npm notice 1.3kB dist/trace-finalizer.d.ts +npm notice 1.3kB dist/trace-finalizer.d.ts.map +npm notice 8.8kB dist/trace-finalizer.js +npm notice 9.7kB dist/trace-finalizer.js.map +npm notice 1.1kB dist/types.d.ts +npm notice 1.2kB dist/types.d.ts.map +npm notice 44B dist/types.js +npm notice 102B dist/types.js.map +npm notice 1.7kB dist/usage.d.ts +npm notice 1.5kB dist/usage.d.ts.map +npm notice 5.8kB dist/usage.js +npm notice 6.1kB dist/usage.js.map +npm notice 479B dist/validation.d.ts +npm notice 471B dist/validation.d.ts.map +npm notice 4.2kB dist/validation.js +npm notice 4.2kB dist/validation.js.map +npm notice 1.3kB package.json +npm notice 1.7kB schemas/action.schema.json +npm notice 1.6kB schemas/approval.schema.json +npm notice 1.4kB schemas/common.schema.json +npm notice 1.9kB schemas/data-flow.schema.json +npm notice 1.2kB schemas/envelope.schema.json +npm notice 900B schemas/evidence.schema.json +npm notice 1.6kB schemas/policy-decision.schema.json +npm notice 3.4kB schemas/usage.schema.json +npm notice Tarball Details +npm notice name: @agentrust-io/telemetry +npm notice version: 0.1.0-alpha.2 +npm notice filename: agentrust-io-telemetry-0.1.0-alpha.2.tgz +npm notice package size: 36.9 kB +npm notice unpacked size: 179.5 kB +npm notice shasum: 0db73c21520242dba3b80dcca6b3025d49ec8d5b +npm notice integrity: sha512-78qIuL0HkzGL5[...]lFMI5aXiqghuQ== +npm notice total files: 71 +npm notice +agentrust-io-telemetry-0.1.0-alpha.2.tgz diff --git a/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/validation_probes.py b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/validation_probes.py new file mode 100644 index 0000000..ae6f2a7 --- /dev/null +++ b/papers/agentrust-telemetry/experiments/results/rerun-2026-10-01/validation_probes.py @@ -0,0 +1,43 @@ +"""Paper 1 Section 7 claims: validation edge cases and reentrant-callback deadlock. + +Usage: python validation_probes.py SOURCE_DIR (an agentrust-telemetry tree) +Records what each case raised; does not assert. +""" +import json, sys, threading +from copy import deepcopy +from pathlib import Path +SRC = Path(sys.argv[1]) +sys.path.insert(0, str(SRC / 'src')) +from agentrust_telemetry import EvidenceAccumulator, SchemaValidator + +v = SchemaValidator(SRC / 'spec/schema') +base = json.loads((SRC / 'conformance/fixtures/valid/policy-decision.json').read_text()) + +def outcome(fn): + try: + fn(); return 'accepted' + except Exception as exc: + return type(exc).__name__ + +deep = deepcopy(base); node = {}; deep['attributes'] = node +for _ in range(5000): + node['x'] = {}; node = node['x'] +nonstr = deepcopy(base); nonstr.setdefault('attributes', {})[1] = 'v' +va = SchemaValidator(SRC / 'spec/schema', allowed_attribute_keys=frozenset({'k'})) +nan = deepcopy(base); nan['attributes'] = {'k': float('nan')} +inf = deepcopy(base); inf['attributes'] = {'k': float('inf')} +print('deep nesting (5000):', outcome(lambda: v.validate(deep))) +print('non-string key:', outcome(lambda: v.validate(nonstr))) +print('NaN attribute, validate:', outcome(lambda: va.validate(nan))) +print('Infinity attribute, validate:', outcome(lambda: va.validate(inf))) +print('NaN attribute, accumulator append:', outcome(lambda: EvidenceAccumulator(base['run_id'], va).append(nan))) + +holder = {} +def reenter(entry): + holder['acc'].snapshot() + return True +acc = EvidenceAccumulator(base['run_id'], v, durable_append=reenter); holder['acc'] = acc +result = {} +t = threading.Thread(target=lambda: result.setdefault('r', outcome(lambda: acc.append(base))), daemon=True) +t.start(); t.join(5) +print('callback re-entering snapshot():', 'deadlocked (no return in 5 s)' if t.is_alive() else result['r']) diff --git a/papers/agentrust-telemetry/paper.tex b/papers/agentrust-telemetry/paper.tex new file mode 100644 index 0000000..df66998 --- /dev/null +++ b/papers/agentrust-telemetry/paper.tex @@ -0,0 +1,134 @@ +\documentclass[10pt,letterpaper]{article} +\usepackage[margin=1in]{geometry} +\usepackage{amsmath,booktabs,natbib,microtype,parskip,enumitem} +\usepackage{fontspec} +\setmainfont{texgyretermes}[Extension=.otf,UprightFont=*-regular,BoldFont=*-bold,ItalicFont=*-italic,BoldItalicFont=*-bolditalic] +\usepackage[colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref} +\setlength{\parindent}{0pt} +\setlength{\emergencystretch}{3em} + +\title{\textbf{From Agent Observability to Governance Evidence: A Privacy-Constrained Telemetry Contract}} +\author{ + Imran Siddique \\ + OPAQUE Systems \\[4pt] + \normalsize \url{https://github.com/agentrust-io/agentrust-telemetry} +} +\date{October 1, 2026 \\ \small Technical report, version 2} + +\begin{document} +\maketitle + +\begin{abstract} +Agent observability conventions describe model, tool, and agent operations, but governance facts are commonly fragmented across policy engines, approval stores, cost modules, and audit systems. Copying those facts into ordinary traces creates two hazards: sensitive payload capture and the false inference that sampled operational telemetry is complete audit evidence. This technical report describes AgenTrust Telemetry, a backend-neutral contract for six governance event families: policy decisions, approval lifecycles, usage, classified data flows, action execution, and evidence lifecycle. The contract correlates with W3C Trace Context and OpenTelemetry without installing a provider, exporter, or competing tracing model. A metadata-only profile rejects prompts, outputs, source code, tool arguments and results, credentials, and authorization tokens by key. Durable run and action identifiers survive process and asynchronous handoffs; propagated metadata remains untrusted and does not confer identity or authority. An optional accumulator accepts events before lossy export and can be finalized into a separately verifiable TRACE record. Its completeness status is a producer assertion that the accumulator records but does not measure. The evaluated release, 0.1.0-alpha.2, ships Python and TypeScript reference SDKs over shared schemas and a portable conformance set of six valid and seven invalid fixtures. At that commit 111 Python unit tests pass and all 13 fixtures produce their expected verdicts, on September 3, 2026 and again when rerun for this edition. A defect found after the evaluation let an edited evidence snapshot be signed; it is reported beside the results it qualifies. The contribution is not another agent tracing convention; it is a narrow semantic boundary between operational observation and governance evidence whose completeness must be stated rather than inferred. +\end{abstract} + +\paragraph{Scope of this edition.} +This is an author-prepared technical report, not peer reviewed and not a normative specification. Version 2 (October 1, 2026) corrects two errors in version 1 (September 27, 2026): the statement that approval digests prevent an approval from being attached to another action, which the reference finalizer does not check, and a typesetting fault that dropped every bold face from the published PDF; results are unchanged. Version 1 revised a manuscript dated September 3, 2026. The contract it describes is alpha and may change incompatibly; current behavior, normative schemas, and limitations are maintained in the project repository. The Python unit suite, the portable conformance runner, and the repository's cross-runtime contract checks were rerun on September 27, 2026 at the evaluated commit (\texttt{29c13cf}, release 0.1.0-alpha.2). The TypeScript test suite was not rerun. Findings published after the evaluation are reported in Section~\ref{sec:after}. + +\noindent\textbf{Patent Pending.} + +\section{Introduction} + +An agent run can cross model providers, tool servers, queues, approval systems, policy engines, databases, and human decision points. OpenTelemetry (OTel) supplies a broadly adopted model for traces, metrics, logs, events, baggage, and context propagation. Its generative-AI conventions, now maintained in a dedicated repository with development status, describe model, tool, and agent operations \citep{otelgenai}. OpenInference similarly defines AI-observability span conventions \citep{openinference}. Those systems answer operational questions: what ran, how long it took, where it failed, and how calls relate. + +Governance asks different questions. Which policy and enforcement mode produced a decision? Was approval requested before execution, and was the executed action the one approved? Which cost source produced an amount? Did classified data move between named trust zones? Was evidence accumulation complete before finalization? These facts may appear in proprietary logs, but inconsistent names and identifiers prevent portable analysis. + +A second problem is semantic, not syntactic. Telemetry pipelines are routinely sampled, batched, retried, transformed, and dropped. An audit record that claims complete execution evidence cannot be reconstructed from a backend query unless completeness was established before the lossy boundary. AgenTrust Telemetry therefore treats OTel projection and durable evidence as two consumers of a validated event, not as interchangeable representations. + +\section{Requirements and non-goals} + +The contract has five requirements: + +\begin{enumerate}[leftmargin=*] + \item remain independent of agent framework, policy engine, collector, and storage backend; + \item reuse OTel context and fields where their semantics already fit; + \item correlate governance events across processes and asynchronous handoffs; + \item reject raw or secret-bearing content in the metadata-only profile; + \item make evidence completeness an explicit producer claim rather than an inference from observed events. +\end{enumerate} + +The project is not a collector, dashboard, tracing backend, policy evaluator, approval workflow, pricing catalog, or agent auto-instrumentation library. It does not duplicate spans already produced by OTel GenAI or OpenInference instrumentation. An event reports a fact observed by another component; it does not authorize an action merely by existing. + +\section{Event contract} + +Six event families provide a common envelope and family-specific fields. + +\begin{table}[h] +\centering +\begin{tabular}{p{0.22\linewidth}p{0.70\linewidth}} +\toprule +Family & Governance fact \\ +\midrule +Policy decision & allow, deny, challenge, or error; enforcement mode; policy identity; latency \\ +Approval lifecycle & request, decision, expiry, cancellation, and execution outcome bound to an action digest \\ +Usage & input/output units, cost, currency, scope, and provenance of measurement or estimate \\ +Data flow & classified source-to-destination metadata without payload capture \\ +Action execution & resolved tool, MCP, A2A, file, HTTP, or database attempt and outcome \\ +Evidence lifecycle & checkpoint, accumulation state, completeness declaration, and optional TRACE finalization \\ +\bottomrule +\end{tabular} +\caption{Normalized governance event families.} +\end{table} + +Every event carries a durable \texttt{run\_id}, an \texttt{agent\_id}, an event time encoded as a decimal string of nanoseconds so that no runtime loses precision, and when applicable a stable \texttt{action\_id} and canonical action digest. \texttt{trace\_id} and \texttt{span\_id} correlate the event with operational context but do not replace durable identifiers. This matters when one logical run spans multiple traces, waits in a queue, or must be verified after the tracing backend's retention period. + +Usage events distinguish direct measurements from estimates and distinguish an individual operation from a rollup. A cost value without currency and provenance is not portable. Approval events carry the action digest of the approved intent, so a consumer can detect an approval attached to an action with different arguments. The reference finalizer does not make that comparison: at the evaluated release, and on the main branch on October 1, 2026, a run whose executed action carries a digest other than the approved one is still appraised as affirming. Data-flow events record classifications, logical sources, destinations, and applicable policy labels without recording the content that crossed the boundary. + +All six families are defined by the schemas. At the evaluated release, however, neither SDK provides a helper that emits \texttt{approval.cancelled}, the approval execution outcomes, or the \texttt{evidence.*} lifecycle events; a producer must construct those events directly. + +\section{Privacy and propagation} + +The metadata-only profile prohibits raw prompts, model outputs, source code, tool arguments, tool results, credentials, and authorization tokens. Schema validation is supplemented by recursive key inspection because permissive extension objects could otherwise tunnel prohibited fields, and extension attributes are rejected unless each key is explicitly allowlisted. This is a minimization boundary, not a proof that arbitrary metadata cannot be identifying: a sensitive value placed under an allowed key is not detected. + +For synchronous cross-process calls, the SDK injects W3C trace context plus durable AgenTrust identifiers. A receiver extracts the OTel context and uses it as a remote parent. For queue handoffs, the receiver starts a new trace and links it to the extracted context, preserving causality without misrepresenting queued work as a synchronous child span. Propagated identifiers are untrusted input: they establish neither workload identity nor authorization. + +W3C Trace Context standardizes trace propagation \citep{tracecontext}; it intentionally does not provide identity or security. AgenTrust Telemetry follows that boundary and requires authoritative identity and policy systems to emit their own verified facts. + +\section{Projection and evidence finalization} + +The normalized JSON event is the source contract. OTel is a projection. Standard OTel attributes take precedence, and AgenTrust extensions are added only for governance semantics not represented by the pinned convention. Trace and span identifiers remain native context rather than duplicated string attributes. Event projection follows OTel's guidance that events represent point-in-time occurrences or state transitions within a longer operation \citep{otelevents}. + +The SDK can deliver a validated event to two independent sinks. An OTel emitter supports operational search and metrics. An evidence accumulator receives the event before sampling or export and maintains an ordered SHA-256 chain over RFC 8785 canonical bytes of accepted events. It records a caller-supplied completeness label; it does not independently measure whether every source event was captured. Finalization may produce a TRACE record containing the chain commitment, policy and approval summaries, usage totals with provenance, data-flow classifications, and the completeness status \citep{tracepaper}. + +With the reference accumulator configured as the evidence sink, each operational projection attempted by an invocation follows successful evidence acceptance. In durable callback mode, acceptance additionally follows the callback's acknowledgment, and a refused or failed acknowledgment raises before any projection is attempted. A projection that fails after acceptance is reported separately and does not remove the accepted event. This is an ordering property, not a completeness property. + +A complete-capture claim needs more than that ordering: an independently defined set of required events, instrumentation at every declared boundary, and a recovery policy. The accumulator verifies none of these. An empty accumulator can be sealed as complete, so the label alone proves neither that required events were emitted nor that they were retained; the TRACE finalizer at the evaluated release refuses open, incomplete, or empty evidence and marks its output \texttt{software-only}. A durable callback must supply its own storage, idempotency, and recovery: if an external store commits but its acknowledgment is lost, a retry repeats the external write. A backend query cannot establish these properties after the fact. TRACE supplies a signed evidence container and verification semantics; AgenTrust Telemetry supplies the event normalization and pre-export accumulation boundary. + +\section{Implementation and conformance} + +The project publishes JSON Schema 2020-12 contracts, Python and TypeScript SDKs, valid and invalid fixtures, and an independent Python conformance runner. Both SDKs consume the same schema corpus, and a repository check compares the TypeScript schema copies byte for byte with the normative files. TypeScript preserves nanosecond timestamps as decimal strings to avoid JavaScript numeric truncation. Neither SDK installs a global OTel provider, processor, exporter, meter, or propagator; callers retain operational ownership. + +The portable fixture corpus includes six valid examples, one for each family, and seven invalid examples. Negative cases reject raw content, an all-zero trace identifier, numeric timestamp ambiguity, usage without a measurement basis, a model call incorrectly marked as a rollup, aggregate cost without rollup semantics, and action execution without an action digest. Repository tests cover policy adapters, approval state, AGT audit and data projection, OTel projection, propagation, evidence accumulation, TRACE finalization, cross-language schema synchronization, and repository gates. The checked OTel projection matrix, pinned to a development-status commit of the GenAI conventions captured on August 18, 2026, covers 16 span attributes, eight metrics, and six event families. + +\textbf{Results.} The evaluated commit is \texttt{29c13cf} (release 0.1.0-alpha.2, the repository's main branch on September 3, 2026). On that date 111 Python unit tests passed and all 13 portable fixtures produced their expected results. A rerun at the same commit on September 27, 2026 reproduced both counts: 111 tests passed with no skips, the runner reported six valid and seven invalid fixtures as expected, the projection matrix check reported 16 span attributes, eight metrics, and six event families, and the TypeScript schema copies matched the normative bytes. The rerun pinned the optional TRACE dependency to agentrust-trace 0.9.0, the release current on September 3. With the version resolved on September 27 (0.11.0), one test fails: agentrust-trace 0.10.0 began rejecting a non-Ed25519 stand-in signing key that the test used, which the repository corrected in its test on September 6. Four scripted probes of the evaluated code confirmed the ordering and completeness statements in the previous section: a refused acknowledgment raised before any log projection; a failing log exporter left the accepted event in place and was reported as a projection error; an empty accumulator sealed as complete; and a lost acknowledgment followed by a retry produced two external writes and one local entry. For comparison, the current main branch (release 0.1.0-alpha.5) passes 128 Python tests with the same 13 fixtures and the same matrix counts. + +\section{Findings after the evaluation} +\label{sec:after} + +Two changes merged after September 3, 2026 narrow the results above. + +\textbf{Finalization did not recheck the evidence chain.} At the evaluated release, TRACE finalization took the runtime measurement from the snapshot's chain digest and derived the appraisal from the snapshot's entries without checking that the entries still hashed to that digest. Because the snapshot holds mutable objects, a caller could seal a run holding a deny decision, edit the entry to allow, and obtain a signed record affirming the edited decision under a measurement that commits to the original. The fix, merged on September 25, 2026 and released in 0.1.0-alpha.5, recomputes the chain before signing in both SDKs and refuses on mismatch. Run against the evaluated code, the four regression tests added with that fix produce three failures (an edited event, a dropped entry, and a substituted chain digest are all signed) and one error. The finalization results in the previous section therefore do not extend to snapshots that can be modified between sealing and signing. + +\textbf{Validation and locking edge cases.} The same change found that validation at the evaluated release raised an uncaught recursion error on deeply nested input, raised on non-string keys, and accepted NaN and infinite numbers until the evidence chain rejected them; all three now fail validation. A change merged on September 6, 2026 stopped the Python accumulator from deadlocking when a durable callback re-entered it on the same thread. + +\section{Related work and novelty boundary} + +\textbf{Observability conventions.} OTel defines the telemetry data model, context propagation, and event guidance \citep{otelevents}. Its GenAI conventions define agent, tool, and inference spans and treat message content as opt-in attributes \citep{otelgenai}. OpenInference defines span attributes such as \texttt{input.value} and \texttt{output.value} that carry payloads unless hiding options are configured \citep{openinference}. W3C Trace Context provides interoperable propagation \citep{tracecontext}, and CloudEvents standardizes event envelopes across systems \citep{cloudevents}. AgenTrust Telemetry composes with these surfaces and does not replace them. + +\textbf{Governance telemetry.} Pathak and Jain's Governance-Aware Agent Telemetry (GAAT) is the closest prior work \citep{gaat}. It defines a Governance Telemetry Schema that extends OTel with governance attributes such as classification, jurisdiction, and sensitivity; evaluates OPA-compatible rules with sub-200 ms enforcement; routes graduated interventions through an enforcement bus; and adds a Trusted Telemetry Plane with ECDSA P-256 signed events, a Merkle-tree audit log, replay detection, and statistical omission detection trained on expected event sequences. Its evaluation reports violation prevention rates on synthetic and trace-derived workloads. GAAT therefore already covers governance attributes on OTel, policy evaluation over telemetry, and cryptographic provenance of telemetry. Kulkarni's Governance-Aware Observability Pipeline (GAOP) enforces compliance rules, including PII redaction, inside the telemetry pipeline and adds cryptographic lineage \citep{gaop}. Policy engines and approval systems also expose their own decision logs. + +\textbf{Tamper-evident agent records.} Hash-chained and Merkle-structured audit logs are long established \citep{schneierkelsey,crosbywallach}. The Agent Audit Trail Internet-Draft, first posted in March 2026, specifies JSON agent audit records linked by SHA-256 hash chaining over RFC 8785 canonical bytes, with optional signatures and, in later revisions, a record phase that distinguishes pre-execution from post-execution records \citep{aatdraft}. Two reports posted in September 2026, after the repository was public, are concurrent with this work: Agent Flight Recorder adds Merkle batching and on-chain anchoring to canonical agent-action events \citep{afr}, and NovaFabric seals agent runs into signed, replayable capsules built on OTel and measures declared-stream completeness \citep{novafabric}. + +\textbf{What this report does not claim.} It does not claim governance event families, governance attributes on OTel, policy enforcement from telemetry, payload redaction, hash-chained or signed audit records, or a measured completeness guarantee. Governance event families alone are not novel. + +\textbf{Narrow delta.} The remaining contribution is the conjunction of (1) stable run and action joins across synchronous and queued handoffs, independent of trace identifiers; (2) metadata-only exclusions enforced by the producer SDK before any export, instead of redaction in a downstream pipeline; (3) explicit measurement and cost provenance; and (4) a stated separation between lossy operational export and governance evidence, in which events are accepted before export and completeness is an explicit producer assertion carried into a separately verifiable TRACE record, never inferred from a backend. The claim would be narrowed further by a prior cross-runtime convention that supplies the same producer-side exclusions, durable joins, and separation of export from evidence. + +\section{Limitations and conclusion} + +The contract is alpha and may change. Schemas constrain representation, not the truth of producer observations. Metadata can still be sensitive. Coverage depends on instrumentation at every declared governance boundary. An accumulator cannot observe bypassed code, and a signature cannot repair an incomplete capture. The accumulator's memory mode is not durable, and in callback mode the adopter owns storage, idempotency, and recovery. Interoperability was exercised locally with OpenTelemetry Python, not across collectors, backends, or independent implementations, and no performance measurement is reported. + +AgenTrust Telemetry's central result is a boundary: operational traces may be rich but lossy, while a complete-capture claim requires independently justified instrumentation and coverage in addition to accumulation before loss. A small event contract, shared schemas, privacy failures, durable joins, and optional TRACE finalization make that boundary portable without creating another tracing backend. + +\bibliographystyle{plainnat} +\bibliography{refs} +\end{document} diff --git a/papers/agentrust-telemetry/refs.bib b/papers/agentrust-telemetry/refs.bib new file mode 100644 index 0000000..39debbc --- /dev/null +++ b/papers/agentrust-telemetry/refs.bib @@ -0,0 +1,13 @@ +@misc{otelgenai, title={{OpenTelemetry} {GenAI} Semantic Conventions}, author={{OpenTelemetry Authors}}, year={2026}, howpublished={Development status; the evaluated compatibility matrix pins commit a685613}, url={https://github.com/open-telemetry/semantic-conventions-genai}} +@misc{otelevents, title={Semantic Conventions for Events}, author={{OpenTelemetry Authors}}, year={2026}, howpublished={Development status}, url={https://opentelemetry.io/docs/specs/semconv/general/events/}} +@misc{openinference, title={{OpenInference} Specification}, author={{Arize AI}}, year={2026}, url={https://github.com/Arize-ai/openinference/tree/main/spec}} +@techreport{tracecontext, title={{Trace Context} Level 2}, author={Kanzhelev, Sergey and Dyla, Daniel and Shkuro, Yuri and Sundaram, J. Kalyana and Krol, Bastian}, institution={{W3C}}, type={Candidate Recommendation Draft}, year={2024}, url={https://www.w3.org/TR/2024/CRD-trace-context-2-20240328/}} +@misc{cloudevents, title={{CloudEvents} Specification, version 1.0.2}, author={{CloudEvents Authors}}, year={2022}, howpublished={Cloud Native Computing Foundation}, url={https://github.com/cloudevents/spec}} +@techreport{tracepaper, title={{TRACE}: Trust, Runtime Attestation, and Compliance Evidence ({A} Portable Attestation Format for {AI} Agent Runtime Governance)}, author={Poddar, Rishabh and Fulkerson, Aaron and Siddique, Imran}, institution={{OPAQUE} Systems}, type={Technical report, version 1}, year={2026}, url={https://agentrust-io.com/research/trace/v1/}} +@misc{gaat, title={{Governance-Aware Agent Telemetry} for Closed-Loop Enforcement in Multi-Agent {AI} Systems}, author={Pathak, Anshul and Jain, Nishant}, year={2026}, howpublished={arXiv:2604.05119}, url={https://arxiv.org/abs/2604.05119}} +@article{gaop, title={{Governance-Aware Observability Pipeline} ({GAOP}): Embedding Compliance Enforcement and Cryptographic Lineage into Telemetry Data Flows}, author={Kulkarni, Priyanka}, journal={International Journal of Computer Applications}, volume={187}, number={50}, year={2025}, doi={10.5120/ijca2025925867}} +@article{schneierkelsey, title={Secure Audit Logs to Support Computer Forensics}, author={Schneier, Bruce and Kelsey, John}, journal={{ACM} Transactions on Information and System Security}, volume={2}, number={2}, year={1999}, doi={10.1145/317087.317089}} +@inproceedings{crosbywallach, title={Efficient Data Structures for Tamper-Evident Logging}, author={Crosby, Scott A. and Wallach, Dan S.}, booktitle={Proceedings of the 18th {USENIX} Security Symposium}, year={2009}, url={https://www.usenix.org/conference/usenixsecurity09/technical-sessions/presentation/efficient-data-structures-tamper-evident}} +@misc{aatdraft, title={{Agent Audit Trail}: A Standard Logging Format for Autonomous {AI} Systems}, author={Sharif, R.}, year={2026}, howpublished={Internet-Draft draft-sharif-agent-audit-trail-05, {IETF}, first posted in March}, url={https://datatracker.ietf.org/doc/draft-sharif-agent-audit-trail/}} +@misc{afr, title={{Agent Flight Recorder}: Tamper-Evident Audit Trails with On-Chain Anchoring for Long-Horizon Tool-Using Agents}, author={Bindschaedler, Laurent and Botha, Quentin and Siebenbrunner, Christoph}, year={2026}, howpublished={arXiv:2609.01931}, url={https://arxiv.org/abs/2609.01931}} +@misc{novafabric, title={{NovaFabric}: Tamper-Evident, Replayable Evidence for Autonomous {AI} Agent Runs}, author={Ardebili, Mohsen Seyedkazemi}, year={2026}, howpublished={arXiv:2609.12582}, url={https://arxiv.org/abs/2609.12582}} diff --git a/papers/telemetry-evidence-acceptance/README.md b/papers/telemetry-evidence-acceptance/README.md new file mode 100644 index 0000000..d49b15e --- /dev/null +++ b/papers/telemetry-evidence-acceptance/README.md @@ -0,0 +1,22 @@ +# Acceptance Before Export: A Bounded Evidence Contract for Governance Telemetry + +Technical report, version 3, October 1, 2026. Not peer reviewed. Patent Pending. +Version 3 adds the pinned revision's TRACE finalizer defect, which the paper's truncation +argument depends on, and the Internet-Draft that already chains agent audit records over RFC 8785 +bytes. Results are unchanged. + +Build: `cd telemetry-evidence-acceptance && tectonic paper.tex` (prepared with Tectonic 0.16.9; set +SOURCE_DATE_EPOCH=1790812800 to reproduce the published PDF byte for byte). The fonts and their OFL +licenses are in `_paper-assets/fonts/`, the same relative path the manuscript uses. + +Paper text is licensed CC BY 4.0: https://creativecommons.org/licenses/by/4.0/ +Project code retains its existing project license; see https://github.com/agentrust-io/agentrust-telemetry. + +This package contains the manuscript source, the experiment scripts and the records of the +September 27 and October 1, 2026 reruns. The evaluated code is agentrust-telemetry commit +29c13cfa4047a0f5784a90df63b22a3568453158 (0.1.0-alpha.2): 111 Python unit tests passed and all +13 portable fixtures produced their expected verdicts on both dates. The October 1 README points +to TypeScript and finalizer records kept with the AgenTrust Telemetry report's source package +(https://agentrust-io.com/research/agentrust-telemetry/). No durable store, crash-restart, +multi-process or deployed-exporter experiment was run. +Current implementation guidance: https://agentrust-io.com/telemetry/ diff --git a/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-OFL.txt b/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-OFL.txt new file mode 100644 index 0000000..fe576a2 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2024 The Montserrat.Git Project Authors (https://github.com/JulietaUla/Montserrat.git) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-SemiBold.ttf b/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Montserrat-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2c0a10479946d11049f4acc34563ebd653109ac6 GIT binary patch literal 374624 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�mRb<*&Xy2%qA=WglP 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

)SJK~p?(yWOaWTC_Iu{9&WSa}n^8$TXn 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≫AG$w;8fr=;B?>&;7s5w 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μy*6n)a_|n681y`ciH;f!ePZ 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 literal 0 HcmV?d00001 diff --git a/papers/telemetry-evidence-acceptance/_paper-assets/fonts/README.md b/papers/telemetry-evidence-acceptance/_paper-assets/fonts/README.md new file mode 100644 index 0000000..bcf1969 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/_paper-assets/fonts/README.md @@ -0,0 +1 @@ +Open-license fonts from google/fonts, downloaded September 4, 2026. Static review instances generated with fontTools from Montserrat[wght].ttf and Roboto[wdth,wght].ttf. Corresponding OFL licenses are retained. diff --git a/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Roboto-Bold.ttf b/papers/telemetry-evidence-acceptance/_paper-assets/fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5f938b8e4b2eef0c4adf8428e9ce41c1de6388ac GIT binary patch literal 158316 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 n)`8fJKRr#n9MLh$04FUniqH zpgYFs?QX&L$0#e+o^?5kPtA4?%}uFTRj*s{(oBu2)u7R2#G8Vqf&NfZM%2zB-hM%@UJy8=)|Cq>SFai@!{byIW*<9Qmpn0pavweR z!4@NU(><_Lx`F$+vByhPBWc4_fTP+L^0iE{+;~0lbqokcHg1v^ml#GIz2kgSW}oV7 z-!?f7^f@ZED#|%yTyHkefOFHgpPV%N;?AbHu6;ciF;VoBzbF)fR-uuH%H?jz#PPGm zm=v$YtWhc(7~GJKr;xzH5>^S`A*G~CCNSj^Di=4hYDLYecbDo4cZ$Eh@uv9Go}!e| zS#O4=dUL^TyJl}cQcS#(E93p`F|49?QBlj*)18yv-`hU&*)L{Jcx_AE=BR1&)2mja z*6*&?TzyTX#{SmN*!g@hK#u%3?28}Wd9@O|;%movGmT+E$^s)}Qf|O_*xn4zmE!pF zi8_74+F{dowuf*T;l$EEHK1Up_^&s%p%7LF=K)VFkbI(j_lEkww64`v^Zzw1W&M$H zvo0SVnZMzio#gx9zoQx}jY(y*d1TW4A}$sd!3jPJeS-0jsO5nD8hSJ^@CGNwY1AQ7`WG9jp#e*ikRUuk9D;L$!$$3&Q~&7bgiCJWDeCYvjU8Xqk0MH`#k_^HCO$x& z8s>H>Vbr4y9qUGCc!lH%DH+>NO`84jj;8!&Z!ILb;+~3$x!!4`d-IkOVeVY9e`(^l z=KMhK+=&%P!8*C{t!4QsUF)77G3nGcN^dhDqffHxj$T>TUfwPVf?)0MVyO?OP867> z;Qv5>Vns|G1<*Vo2AHBTLSt|+9=Fh_jY}#6)HUO8gcmI1*XA4)f85b|cyjIX5wUZw zZs>ktVIHwh9G#z39%7;LQF(;9m28-pyNHjuY3se@<`(C<&$lOaZR<4bUHi$jg5JYp z`iUXGJ0p2wDK`V_xA#hobRD*+1a1_5;A_})U&!A9|8PbgJS+%1b90|SUhnSe33`hVbTM9Vw6D9NCN#owH{-^7oWysd837lsu1XoOHJH?5bYc@v@fOlbNo_;uY%8)T;X7%x*7@yZ)y1YXTrVWrncj` zD;9Raqo|!=58BzvxJQ62k9q?F<-DhDB%+vUwv><9GK6HZxy?g9#dID-- z;2-j{(1tyr-TPyW_CEfua=DG4zqgs*pVQm0=pyt@3B8Ur#&~M zV&l%|QL~@c2%^=sZlcm3^@xSh=nca3B)`ZBF^L_ud(>+CGP;=Av}4I92%*l~<- zJ3Dt0?&T4Ef8W?JSC>5X*=eJi*H13hX26li(>h3I3D`NBF%-d~-DLX|*FQU0QM zDQ#A>UrT4Bw@*W7i{D`)TZMemk2&%70YXlIbHqC_VqFB z>o+9)X5HlEe6M5N&#lrLwrL11!iHwKRF^2il~mI zy}d8bD{;9|t@-g6*EsS7@o0h9lx{ z5r)}lXgHV7t$#lXdzGW8;nKtX7jTZb13w6x;D7W+y%yXOnJ>p>WT@hzLd^BHmaN=e z%mrh~O3C87$C)M7R+3accx#8~ex@3Z%vtHr?fUY?ijIib@l_e4)5MF_kG(c-&bdcR zbLT%V9{qC0D+_a~H@`clMSJJ3vZXt{Q&j z?D!qG$EQuKjpn%Tc;c5CDpVLE#bbg1#>C4C2i{QR$-f783Wg2lk%fkYR-w>lLPL0f zOCyJ%zICj+E0ybNqq*&3a)n7X7b7@->J#Vo0aJQ;cT>~u%ZtR5i!bj%sl&^Q+t*b_ z)=e)U`E6?|BWk7W;dfYIe`4Tig&)^<+=uvf+{B zx!*rk1koLuBJPx5X7`ACG*Lkm^@9Zg1x#7$hjb*k*|^dE@p5`5_>y0C6u+6#pG-oz zViNwX;bqeH?YAa=hG(t>#aQ8)lrMuTx=@}Bp(e3ps%cUy&uBYA5n$D%pm959jO;3n z?Cxe`DRXtTv>MzmNnlb5^8l$$KmnwXj=O}3?4jezgQ2W#|HHVPfig;*lu5?XdJtCk z9r?eEn|pt8cAxRE!zsA=SMJgUz0Kvp=6W}kH*PZP+MQlTf8@c59`+$looxctl#~tW>3V(PrhX<14N{SyQ#`%Bmv+YxpwgP@5WO zW~5I$+%u|WuZf?WIzxR!JSrnlgisG@3gmH>6WZnzT`srWP9Af2y_&&WzS-aFEgj?^7$5oPZ{iEl!dD(zF)^Qonk-=>auk zX?6>R#y)SDbNza>6xsdX#bZ$w>nfH~hVyks_8t8EsMa8pnOj-8K?KuKEcGs+fFN}+ z($ht42WDH+OM|Uu7NlAZ4$LnTr;a*!Z1K_ZYh zeR}x%i!DE#+ zh?ptkY2|pNVDVJG4mwxpyzooLeT^0v-P;I`SAHARuwi1&oC-hrHHPjiZVZ~=ePC)@ z&LY6yPA|^!3AImq^qHt(9igsq3JZ;ao6D}1FDOx^j~f;qK5SgNDjDq$D2ImLjckY%8O?S= zg#nIuga!u(5q#NN+bQ(kUS77$!_2fpDR&Ecg=8}rYp_FpAV(Nk!jdxahZ^kCuep`t zvm9|v%2%sGGDCnLCuhg+pOG2fu&^db9NkG0<8#&CImzNL9Er)-ZzxFV*+bqq1wWv7 zsHb)RULi$O+*20QkQ*vD{Cw3tHo!m5>r|<-a8h>J)G{sQ(=>=yiIqqQ3I!|8XmZJ7 zdVHmrL47mV`zbgc=c*Q86~4twT0zx|>cn2I=FZL@jwraJvNQUGn92aff$7B17kH(= zHW9ieDhuJu#GL`J@HH0-XKtxU;JstB1MIna?p?IRsSh9h$K@@~E2qqnJTPef_@w{(p;m$r!E&mD@hWW}Nqb z|8Lg+{*{a(k8``kvEpyhVj@>VzGlAYR>1flH^KNpC#Vn1e}QP57w}zF@ATog)KsUK z2&78cTB0fy?xBh4JwWd?I(%?RhUlHRt#|ZJSWy04)uk;7Ixn}((r;u9>7p(@ zaU`1OZj;CE zmq3AM(`vgOY!oT-K=oP+Nw1Xx5BJw=L8n3@UugKA`#VVRXX4?d2+XXXlGng%e53tc zZ4u14ew`ilm1#%jR|I?|@II-{bBAF>tV_NOBO*%|C`Dj@z;6|_YLq2!EE+{^9tm5- z>Ymf8v>XW*(OJH*8r6_YXSAoqu>fJpotaiY)2#O%?4?7m8(ZFfERe zw9&@LQP}gfhR@pZ)MwDAVac^?`ztZ$TlMP9I2CyO77xw1Y zYCP{C&54n=f<6(n?gRGli}7i8FQJgMDT^k?C?Kg_&uzv$=Jkh3YrA?CcQ{vUmv6*P zbwKkPGdSfn?1Q21itozS?bseHi*9WpzuJ;E}A z@*6{WA+)g|wjk8;_Fw#T?F-5q7d0f<*w8n&ZyXf|-+yR+Y++*<$AvZ&;%!d9Ay3#D zp`bP8dGnqg@$A^6ON$dmu0A|dl{BU<(?4-kt|+F|Mn=?3%29P5UOh6QcF%WR{B>RWh#HJ~s!VJB{z;qhV6ZbI?+LTNuxyAr!&90a5I;WkVB!(igs+FUY zu*Q9%`N5$DVHg{nMB#`P4zUMdoLE{7?%2cG1BoPM!v~WxXWl*TIpH#*slWeWT+WZ( zV=}1Q80~@kj7&8~hWY_n&?6h->3qPL_ZbiCM87!}4W-qlaFXaDLVd$1NhmYFOEh9U zYI{qK?gn+kK_O^F)UXP^|A{RN5r3Zk_UyT@F38GSaANl2wrZmU>>)B^)N)NgDI5&q#ja;&WM<7g$axxW&`ZxZhvxYEWre&E*D|l9 zd{IX{3f;ehoIP4mn0nO1(4`0nl&Huc6lGJ%^iCG2$1If_1mj{6E-)5m(GBLf6HMuT z)rP4IK}BntwU-xY;~aymJx>v6uKSfBCR#%dxhM)lk}VY42UR8J{)${vj^^h;iqUgt zeQgBfICIu&SEZgoW+X?tNyZXHBmPHC@Qvam5cLyYOM$ z*k_*=NBz&baZcb2$8fGvoB}vX=ZFYdfLd(<4TFU#hUhj>Z$XxnuQHDv(`=}X`XF9) zlX!S5G?@)Od5utZqWoPEJ{xEFCpV2GZv-2m?8}k(zN@PY2&iQ2%W$^}MBamcV^7Q8 zu3?XKCV-#qMJdw2Oj?%@nv3EDqedm-1DLgn#U^+bsu>NM8gUdEc&_7XVAM41n!!v|HqCUJ(G z2Uox5{>JERlDLKG)4UX=kSP?9hV+KAmMiprviQgyYv~x%s82`&y}$Ol;br;GL76yX z;HHwIxLtA6JhE)Ue9ZMu=sOhXZet8wK_)VsjVb6o2<`<5QzxG(o=l_SRCU5{`Iuj` zXYLx&b^MWH66P6S6qeBx&7CA+i>|G0-#sJeSI>mv@btzgINQCZzc?p7ea?&1`LFuD zbS>##aou(F<&&4X@A)m&Iz|oLRFp937A?)y5_7d=b2UMN{%>;y|K~2;Oq;l=seRXU z9r1J0CIuvw1#@l0x96=zjqArH-*gJe&}ve&DzMN6`a{!FQ>Pu$a|;a%G8$7nW5-s} zmz&=kH}tn?x|xC5vM6`10zOmN`mlDbEl{h)!rjBe!jkAM2Gwp#yOMQpLc`u87wNrA zgdXr=clU=IK&gJnPLk9B(q+iy9Y#JsW$Fu~6>hiQj4X=?D~;k_1(oo!c>_Nv4Dxe$ zMR}-i7HkDBGK$kjnt9O}Dhr`vvocvhGLtGIDQiOyV&Qst9GTw8k9jIhKfj=Ey$MC>A1JL?&MBM`+?d z^2l50mxDb@nu*v{&-wGMh95XbjAjOI)QLM`8W(5^IxayGJG~uBgIX8|rHTf11H)T^ z&Ll|4pdmdrqUvjOSl{x=pT8aPDS7;qK|@|Y!R<9PQ}N90B^%+BccmHZT!w|Z z9^UybtW!cwQ)%KRi_3C1cLE=9RoUCyf%kK+X3mHzSy)&i{$Pv*!M|YQ(MInHCG0<} zpPmwb$gq!p@7{g*nC`>B4SE#Loc#9N-0A!62fv+BkwP{PQw37%u31LFzhj!88*Cpo zV@#2;4hlJeUC(yu&ipig*ey1{dc$}=L)x`--?e{2w!CHtBxg?;u0bn%>-h06?z?&1 zTZ~lXw1a_SnaRH@3jhK+F3Zi$-95m=$H(8_F-W0+!@@HFxkXwnG0_a27@e2tYcO}5 z2{~*U4Tr1Ye`RtS+lrdfv;`6VLLL_{_Wtu3^0xy&_lg(ex`v4!vu5yf`frnDvIxC= zWKSb?a*1}IVSslQFOr)5?=&^NvtK+!YU( zfbt30Wy;|oo#9i14-Fhn;~Nm*7|hn;r9lUcprE_R(6k21_E4UdB9quEKoG`N3|R*2 zpTw5&sCZ5P$tIGu@zPZBYDl$CJfo`#;l4LGlVCt_lf>~`Un3s=Pl)5Vo#M6Q+fUWj zp4xu=cuiYiU|S8}cjAQMRW8p^%pErzpMY;482*L0l9Kl3Gc!fVDN0St_+?s_x7yDy zAdJ&%Lqk2HY-~I{K-O}QvnnzYW#Oe`8A>p8QS53PI2F^{{_6?J9r_byfm7Ds z@1SP)_nQt1ot(&0l#iA1D!kht1-MpIdPiToA%|8!;=df4QnnQLcMH22N*Tra1hLGT zj4W@BpTB>2xH2d#%p=;kUh0TZMMasLDR-P`Bx9B`{v+xox*1_w}z+5BdJ9~rMHzF&n4p}=j55kBt4%I;Aa(9os*ZzEd}F-B z1t4oy)|ADZDE!{v(Uhb-hX~WpEH5rxdQ!h_)3DC)=+VQ({%Px%e(+dH;j&kzq^8G3 z=Xz9jJyuNWpPZ;ms!#XTkQXtAj41Hx2LX&GL-P4^FB{_L4gc=0aobUScJ`1xR*RWFHmF0<-L`-K>y19G+8@ zpPSuV=n94|Ej%WMcDe?OzVEWJB&6S(zzYwt?Ae5$bbN6^&fG)e4(!XW)VRfz$BTxk zyXKxlRY{i+W0nCKhRy_+_AZ zfVYGAaX|j)?6R3Pq0+*)dvva@Yn+zkR?oD1li zcGz>U3LYQhJ3c1HO6EFV#_O%5FdSAqB#VJX23Z<|LqY=0V?gYVcEdup2T~c(o){(@ zMOX9Oo2c{5u#3H(KqWle7 zRBovhiK8!#rRM$-+5AX@jfbs`r%l5n&5`}`Xka%iU94?9t(sP}MqxFy@`DaKkqTUv z_DpiHRFBtsjMr){WzOS)1ZQ0mLWksJ+!X|)5iqPpZCr&K^UtE4M@*$2@N*7&u=py- z%W~iN@|c*icwdEBr0_{76Uv8nA(_rx2-gF1X>L$%prKu(YeMqBPD6EbOUMEX`B~^e zj?^ZyaWIoR0(`*h9aspQMee~U9Dy5jQBseAl8PwWesB8+{vD5Y2J&8Bk^UCqOP9rd z5?%d;=t&lGUr*jzNq+H;54imd0{a)mIS`u|3uqxhgPI2pIA3&WazT3qXA8ZRoVk8r zt{BG|0vP3u$y?^FzAb(AUa`)ue1MgExZ3=ivkP~YpGBBv1DV>jw$#k>3&MLudK=`> z_nSm2+@M)C56qOuDS|040nbc?ZfD1#Yck4i>y^sbSOp8}z6${`H!{?f{+vhChoH?l zvih-7$k{|#xJD*#GsEjkWea(q(`Qd}AKXP!jL5{l45=SdPLp;kLlnVcGI{g1uNX-_ zATRuZpeSwKw|1d`>S%qaj`kv33H423B}!#LfC3IFmIGY=1EXFs*1cFv8Ab){+(e7X?L6c~+Tk+NVY4^#O= zTG90oBT_~)2lr7jtN%am#p%JNz=S@tR zs9z{fW&4;f4#ZW2sRHAD{gSlKpC^udq_XA7X}Vb-aF2{UFgIT}?a9`PM@A-o?yODp zQ^yCY+#+=H=DRntIVqTJWM$Uk>oH@8y_MFK>`4vwefyYkKlM=0TbthLHYJL|lUi>b3{Ki+hh~JVgb~Q}7wy$+Yazf|QO7U`5 zPjimH;ZGdx8CoZ3*Fdo8t`UQ05qMc-Wo7T6qTKv)K!_!243p z&dZe=-rrG^C};m-@!!1WU7{`!zc_yAx_C98XwHjQ3W@)TXKoNp2_GVEIyC=)c!oTB zaQ;Cu{$TGxQYel;2y>hC&lGkK6V+OmR}I&m zC7drh@2TgLA0`m`*;#Uz0X=Gmsbr}5gC59=UR26K`4*fJW!ccaup^9N2U02H@83U5 zRoORva@wQ?OVgslM$LGv-bKDu6QvnHN#l?hjTd;T;c>Z#xLVPLc%Q`)S+A*osy04W z=_01@eU+rjJ^r+2$3(pIX}oi*@tvd>b!S+oRdgfK#)@0_RHl*>^2>k9nYaVS;;m@$ z4f3x1IT}rc#hZwnkZRco>Z#VDx;vew)Wd?O*i63>q0??lZhvs6{gynz z2A|B&yItGKiLVyWicvGfF8Qy@2q92*Sti5Gb`k|iA*lT!Od0qP8YT!%kjWmeLx)yE zTI*z?aiMYabCXa9;dl8D_}ov@=VVI;ey5+~XAXXjm_9ep__;yP@Gxkv9y0eVD|br| z=qoNR*47qM?h`bX_bA;<0SrX9)ZjyR3{d9cc?g&Auv=>+moPscE@5z?Mc@FmFFdU= z156R&(EdPy{y`3QP}Ll90^hxCj86|Om{Up)VJ(W{Ak zDbD$0+jwEHZz1&{dZVtfCd)~NYW-Z4#vKv{E(f$jRSZHlq{1H3TqtV#zjrc(k2-_n z_LJVx;=-eV5dE)yhP-DS3gV)nA$dnkZX|D#-~V@CLsMN`po_7e1xkPHr#Yy^0`?;h zgd}S-jss+@3p2)X;k!_P={O>f<71`2;aRR)TrHIr0xAI!*O~GecRfX+XKm<)JOxGD z@f3chc=g{DS0|rg_>%J$UpJ!b5cwCM6OQ6+<+xptFsN7K=rE+N5o>9NU1U#j#F0Xe zrJ8L#O-fCO0D-fDN5_fJBd8pcJpaQjwPRu(NXW3MrN#u4{^xHLuKQyB#1Ebsc`2`Z zUSb;xwScB3h+pylftln4v?xU`5n}1$j_g<1W3<>Ag_pps0AC6`D9F-rh9$~sTESf@ zZOpZ6dx>lv329#4FeNJW5wcj{a@JCwo$tF6#1q)vJ7ru3n$aJ;IiYn`b9( zHCu?9|ADg4!046S1XM@`&f&P+1AUyHpf`=)&tP$@GEqpuyMC13C4c2U?^=u;nIrUB zTmk-yX9;oW9zK8_-6~*Z`1H@xr}^3J)4V<8nluJ@+Ctd9W7(ae_!`t@$Z|nNcuOk* zed;Vx;MWq|z)Wu@1=FP9Ig^Nyz|c|(q1Y9acA+J?kZ7YsNeNczmMqx2m%Kx!q2#Z- zhAdJ1Opc0JFwn9i3^szUe=o84D@{v|^le7OBT;@{5K2~1pe+r{QrIG)6$f}2q3Xs5%Dgh4|m7xN;PQxeM0f5r30U3D3 zk0JyAeTyOkzxY6gt%uG-X4x1}3|yQ`(G8>pj|ekmU}Ec?ZGur{^)`RmsW z&)rpBj7w{=H^buYFjiQjifnt|8>S$ll$-DlL48M2?QJxbwx<1`ad6W92SNZ5{%A0zJKpLTKx51urgzb?7{EAJo zm6bm&(o0B$3o{Eb3uCYV)(3ic8I^wKS~2$ZqB+}8dsR?(0cof9;Se_q`;Ef!ym;&% z3)6d^Y#)1IPIlKh@gMu262%iEOIDtp7F`za8P~a{dCa~k>8g-4t$%{XaoCeze|T-e zIby%}+|;)=R@d+NY|-H-#DAZgH1@=Q)_%C~^4{UUCUh(=`?zh#3|(>G^JCs`npL9q zFPvKWPWP!*6(D7FBlueQ6`sgDtAfvsu8Nt4%*BGG(cD3-%D94|4kP25Y-rJ#`z=ZM z^|<)YBMs4w3(AJ|wZ_&y`Pq`*4>wn3=${R{dARg0?(Dtq0{8Vr6~{~L zKAVFJHT670=&Y1Kj}TQ%q9He_!aus4^5RJ`kV;|`*ZA2=fC!I|ELIU`ai&`Ni- zD}xukp*(M4p+b#lm4Hfe9s-jPEQd}Kj<})Jb!r5S-jh|v%lC-ZBrJ_(mNj~Nvn1ca z%rZeu!;@sq1M3h=ZL>=~>8@Mv?t^5!oBIc;+ z1RRyzix4j_g{P-Q0FqcEElkcT8Ug}`q%@j?qPS8QS=LO2I!K1pW{1j1Ig`7w%ehCqvPKsbPc8`ztXn;1!O6rZ=WeuE&mWU` ze(c%)xR(82uOR%=Yp4s@ezbqv_HS67@x+dW#iF5n`IwY2)elyIK3Ks?L_v;$_n1j_ z00mD%JU!(e9_Ic?hlr3W&kd>=gDYTda0k1=NZxDc9>$`2MmCf{=bwADd*b|~EqwZd zH&+(r^}RZ6>XBI){d+haafvRBNvVo+4ao1zEPo_=mEW{IeCwzg$40zpuo$-X^n{=} z7d8zmUG@5mnP;5COH+Jfnr0OS>AEY!(lZ{9Zb}B#FBJF5ZH>G^P0>IWKyBf^x;UFl zsbMs`o$2Uw`ziI~l$mZcL|$sC1fbzX@~rr=FxK##_@U-KGD1W{n59>C)F<^`+(zm~ z#o7f`OfF~rLCRSWo|K9JRxo;fz;i0it3c6>-wytOn$D9`7AwXW^mARCo?yNGW z_bD?6##DhxJj#5 zQLCGA<9|x;V%9c$7d5u2?hi?|7+og$vW_+DvdW4f`=3?KA<980BwSwy=IMp3L6DR*w{G ziJ{P~{I6q9AiiWQQ8yo)LF?Q*$9PbD>f@}uO$m}Oh8F%N7sO_!jdm$yY`>T`iv3z3 z?U%EKX(#Y5>ZJgp7aW>tqp(M&-RE74#4cq$dlpK{)4i8plHTQEJ7n({i(QJ*>{-7^ z?-Kqdy~_=Ky9W2ZY~Z^)Jqp|{QI*^hy`J=zl*tUi!GeaQHUvY;lHa8iD5$B(O?r-) zKi`Nx1bq)|RxtIL{LfM=g8#hOK_1+$0DQL+*@dG)7fRSIkexIkSfi17I+*K~CL4{G zGd0>qF0`PlnxF%xRO*BVg6__rTEm|tV(2AOV?Z6CBhP$4zjE#C(^`*hs3&2uZCNGb zlC$PE^~s+QaJ!YpdFTZ0}67|hgiPMC3(2q1P8#9zmr}J`k zP)Y<8N&8PT=1l4Kf6r?f|0?G7KIXN7xIXvv5A!M>Jv+7K*t&Y+7vGUxHX%hffA|t1 zT9vti|}v6=Y64FVx9oft+rm3O4d2GMaVP zvlnyuCmB6_Uk=Y1ryE!@(8>PpJ@7j|t->u_$vzGJivFJeiha%*PhHAB2aSsUp1Xpd zL{_YHc|?BYW0g5g6D^>&O;PZPJBU+N6$H-aHy5_@p|r z#Um31&Nrn-DkD3W_d8j*oL*B=zLwUL zom>^6n^L+sb4*D{LhIbW3%hT(M3sh+@S5qxBhQZU| zJ(S~W9({TAgzb%7{ST4D^R&81*B|1?Z5@@=QI#ES=jlbv1$e`+22+YAZ}AGjf>vcd~lYtY3q($hV#RO^rszgSE3aW@K#m`Ju*Ngq(( z=@6_&8nDEUKzCTIJYI3{k%BCZ8-O>Gr^LT;uO#OA_~a*vw-m%`&6{J@*=-rTT;Toe zNIUTk@lOa;Atd8N+})9kmN$Jv2wSVfWVd8v&qVfUU31MG`}xP9~&K0l^JEv z1qbs=`C1Z^L;`Z!(#!UimF=pWynj+6aZhQ{mH0)vJ&`q$cEipQw+R%q;q(7E`wqY; z%JlDjXJ&WP`=+-|vb*VRvuT^M>5cRr5=ttaG&%_#BE5GM1jT|#5jjsOf{i8?&Wb?5 zv!LF2mQx`+e7|>Q6M}em{y#CvW_C04mgjx?^LyaurKqtsi3zEpRyfp3UtdDtAHeLW zDU2`?)q4JDmMonm{ug*K-Aq*LfD6<4p(mOkB6K?PDu0IgxnfeRZekgKSw`ZX_-?*; zVpV%K7KnAXw<}D0{*5v#UoZYcZ%?_djd^@Z)h5?SUnaXhvOYbnF|NPm^ds?OOVgqq zh^rfcYDU(Meroarui6S%XZMz7m)5+tSpLwfQ*Y)LhSyKYzD(@3BNkT{SnBm~5oV-W=fz|P?0mJoKd&gPVRFu8%*ucqi)Gj` zn%Nsotys0%JHouv#fkQAu|yjW>bRgTBVkha5nZVJgi!t>O7LL}23(pbvjmp5x-~o(s^2 zx`dT=<=$r@l!LI66!=^^up@NrT2PyvM&lh}DU2NjaDqpjj{L#V->+`@yWsSA6E}K#3VI%|8?&Q>;y3=j%H{8WH|m+!jrxG( zFjq}pTiWQ;qv}tOU2w8DHFWf5jDO+1ujNay_S9SFPjmL2oo!H$LE&^zk!~hf$uy4| zN|d<#Kp%z}G?~f2=W!ZR$^2xrdY{6ruv18=M~pvR==;p9Y{k*0xi7TI+4S3N4fV0! zJr|J|430H?Wtq~$tLfU--@7dvjkTp?Q%U>`4sLFCO3O}I3_@b8tW$~{QNdmq9G%JW zK#4*IqIht40AUC+4%8saegpI?M}Mu4CYi3H(hI8yMw>V9@w(AlC#Nv$ZrvhJ3zoys z(h*JW@UNAS3X&{&LvB|`lwFQF|K7K_TqEHR5Gg@%$v$n8P<5SI0drI<{uOd`}>y=*^>VK z4PhZ4EB%wkJyOK~TD*LMp2W3eRX$%?@m$T$OD(2xnZs@s#-&7XOD>m)sTAV4TJZRo z!N-e$fno;0&>*R=jA@RJcO~W)#LW_cyQ#0tSa^PUPS%oFd&jH_4GW)@l~NP$?wK_9 zGVzX8MWL7MMD2_nBdWKYofJIj?B;5JpR1nUaU-Y31;zxPJD)sHLT$Z6+#~a~R7QFcm7o!cA!e0@`bK|QVl3lYv> ze(&D8FX^0&zJpQoMd%P-sd!J-YnZRW2~Smn8T@6_h(H(C3guDUXPaBi%(wp!P|r!6XB z%44k~SB;6TPH0|S(7JtsuKA?}@g*VJis7J@spK|LPt3_tN;tGJ6aNGa01)3m2eg+m4#O%s=+LfdW3v;A@heO2`Ail zQAkB}Gfpr^pm1Sf9OFdHEkXYPz~Nw3lb@ROBCLeaQcCZs`Nv7{TE6gAViPmJT2~tH z)ljbN$R0778YO*)pZcz6>CNSn_OPc0(%4hXf-{TKm$mcKIV4^a7mzn~!0SU>rEYZE z$SIMBY?{xmS$DQcNh!LHYiC}QeuxODEwV_YQpA85IZZ&ZyCiT+ougL4swm{9aQw-V zj<-MOXFug1QkGlKEpjDE3jWo9kE%&&P?iTgf_3a-B+OIHO-=@RLM@>Oe#g1q!qjn3 zu*q0A^mwPL45T~`4EMy{AK2tuxA2MaOr7+dhd&{G=gv0a6O4r8o7gqNF3_Gw3_D*& zN9_JKO;n_Z4`1w>fobfDfoc4mEnA3e%NE>s9DHAUWqv@5Fgq*-;4iw;L-~iE542Z> zVqA1t)Y5<$&T~`R@;MGa zSJZE#JT(&?mgY-t4gaea5ec7WOp^IbRB7~5Rp_nV20W@TX+`~R!HUDP7MY%fAHw*= zWryOHdn+bjX;gWXOtP(hg}x|c&hj+6x>Gq%hL`zqYO+KQ>Lg3ZNMY6U*k72>WD;Co zYE7>%rIsglJCi@fTp<)OLm{y`Y9~ehaYVGxE9(CEl=oj^s9{A>t5u;)D#27&tF%OR zHgny=up-08#S(SSeu8NK7LhvX&v z@_q!o0bz}u=p(-{O>93Ryk>_vMAl7vE~G^XjgtH3PimjnJ9Y8`<|B3Uym`&)rrutx z>#}=4vriBuPQ8OU)=%OYG;=6s&4$=*v6o5g!~J=k5^~5)|jb_>WlK*svfYV}5

cZ1L3F^pLg{SZq@y}d1 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 y&bR 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 vb<@=&#@UT6`3mj438BG3KQ=>b9m|9cj*? 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 c*1~ zbL}WQo}Ip(k)5TTjh&NStX;lciTy$QSM2Zphx+-2r;I|Wlq;2hy9#?DVBZbcpFvmA zOXyYfZ}crvVgqc19q?4_fm3llE>~lJ5cdK0PpC<1>~8?}?*R6osA}vt0QTGIX8JJQ zPmjnpbJl==$7L`{()LurMw z3;H9Wgu!_(LZ2x<8~v>2lh;3M`;7jq<+Ik07kym!G3;-BT=j9~$MZif{PgPJMLZqpk;gKHBq9`Ge~po_a9+VCX^rgEJ2fJ=pl5 z=0W9yEeJixGQOv6#CwbS5P!ny0Ri&&zsGR;Ghix&68Kyp`tjT!UV%40cln1?47+l0 z=L*~cN13V%-vj|OfZ`7&6Uuxj`=A_x0+gkI+SH>zO!Mr5dgs~cb0-v;5z7Dm2Yc&( z_@mmX15^jqNp(>N(OPOhb&@(oouw`GW7~-f}QGrQMai()LrUTBn8a2psf%$Zljc-516JvCm7hhW@#SH zr!_!7v}kQw2kn3zG+kN`Y=r@BNE^|{2=*sw6WWwEqs{3_v;}HLd+4e3G}@VVp{0y(KBfW+L4}4JAuab(T9)>bgc*S{(kVJr|8r48FZHJqh;tEXy5=k zPoG7D^f}1l&eMZvh`xY^(Fi>RwrPaENME8a)1&ki^ddb*UqjdFt6%|NLO0PZ^fGz{ z{fmA9-9~p91QFCd`epPw{R;gr`Znx|y@B3DZ_%$Z7@je`P2WTB(67^Ppm$+c;yv^} z`hb25{KS3wZTcPhUHU!xefk6XKKc+npg*J^phxH{^cZ~&p6x$iX}_gEM&F_D(GTcH z`V;gM{VD9o{7ip_exW~SDEi-+qQ3ys`X&8{{)&E#8O&lH{WU|=|G|8$fi;;9hGAH2 zjwfLYY{~E#KBLKKfZdvgr(-AP0CvVM*cH2Bcczo+0&C`py|6c<#b{$6?2G-dKiHyf zMu*X5nwdR}9;443Vh%Iycot4zTA4P+fH7o@@N7H>C*mZW4Bj9Wr!jk(eRwXOhtrwK zj5TA!2pAz_%h=%zoXPBGS{OgZA7|lgoP%?j9_9$nV*;3?xCYnab$C5C!tK7lx`cJoE{ZvWow&ZC9;)?WsH3kDFwySqKS?Sm;&yCdtr+B6j6Lq zX1Xv+n$O(@EvbLFQuX_j8M!|7nT(1^O_xPGK|9x@x{l$lVW8?V_D|h$6Wt=A3?)jX z#r=r3hiSxC{g^vpBerA!CK)1Gp_9l~lwJZ;^=lv<+tmCBIMbOp!@?L?K{#Z93ZWFu z6AfYYS!TLSm|vO^3!@QbFXKKbL&!(8M0K7o6BY@DGM>GtFfm*R%7jg+=>rs|BJ#sC`lmo&`j8OG z#9S*yT1g`rA|w|m9s_3vC=G7B)sPs;)^NQH*T7vD0Tx`FYS6G4Y067`<+(fXX z3h}hxF-XfyKdS=|9;~<{j0h)xF3wT?)NCiw?_!;l4h)Ry$FrUCLA2xHlD3Z$f>_JM zDd}Wvz7@#4ZAM0(l|~Bt#f(EiQ31J*v;|F9dx!3}nC1`woCq5@$tmMppNtOd( zXA-EPmd+GK6~hQp3W{Yk$epdQI71~QD3P-i|2PPy5P?W=gM`3SZgQzX5Rnve1^wI= zT);;vEBoVR`LoMt=mue6>|Ir|B4Zqgtfkw^=3B`sGl;yXh7`!w6bhw615u!e95^|P zf!>&W8EYRSTT@g3cz_iG*@K3e&>&1N1nGqdqw}Q`5(l?24$oGSRRiyzn-YvDPKBi@ zdqM@-nnYoKhA=-LTEPw2S_x$=)WXsNB3#7KCc^sgNd#*TRe>}G?nOjptYmz!`K1LV zB3m%$(3Zi`m17^QJ`*G)U52crQjt`K0Yv*~7!1=p$aoHMq=HYalc=Bsm`K(W7L;)J zMgzDUbqIV`Q6k$67(&?-x)Z{IeJCV{A}L6tEC;lWwKtR+NreGYuv0l;Vi|{`x%uD- zAYX_Ua;z=@NhU;yBUc$Pk!qkOXe@U>OhKTja_Z0F+yCAIjrOt{C)HpLZdQOSIbD`W z79}4(_kojzPBO~eA36zxa5DH4unNE^LOj+!4#+D8(X%3V3uP2IFV1MF?vEq4TB%#q zw?PYMX^Ec%Poe@rTLrIbQ68CJro(+S?PVJFz-So*FsQou1f7XFxpM$obq|09;HnUS zb6ARaHuB*R$yZ-6_CR)+k8_3u0m6B40cd@J$ZAM=H4!{;K3wICGBU{W@By(ScW_fn zRTC3(!OR+eOA7T$s>QYKW!f-`prC3{9kuLb@ByR%X40o394rA%9K2*5HT3{0as`y* z=*E$b+(6rJB8&hfRqI`em8?9&saQ1`PgTVU!J>lYE=uC!i!9Ivku4wW7*GHVnoySF z1a5=FZ4-Bg1Bf`W4n!((veIuXjl`{Xj0Ugq^;Icoj+N9_4F#9YW}fP^lUQX=ta+FBv<`d z2f|;*iiH&&ga$yaK#p||fC*en1N$-GK|KH@(g4s5luETlDwiT6=6@LS48(<#C!fxj!S6LABn z;KGUL+#%NlXsMM|H&+5@5C7NB?yXUxdJ3A&YXDy^FC&#kHHD`62rsp~)t0~v;z zb+9GHijah1jZ=myzstb3W&2JFhpD6DB)ZP)&NFpIB-Tz3IR_= z0k~$cL&WZ6OoCV{nZ&~o^NS3Gcm|rGN`yoziAw<=z}TnHunNe4Okzm+r8TivKpG01 zJd{+aP-tKXT~eVDq!zM9qKb^VPsFu>7w0*sM-dDfoupFLI1+{HP}2AmAOgwJwEV5K z0H$XdSBumC)eX)mA{Fe_5Goffu_d$^Lb;-)5H3WBWI|y!7)5aPLny&ILn;NADix7T zYA#7_;7B_05OTLB@d1fto{gVu4cXcA4LUFZ;5MW@X-!h4-`8FHY~2P}mp~w$Sa=AP z{q3?u#$nt7<$hDp|G2*FO59KQF zm1!$Nl!E0!O2M*VrC@20Sg>SgPAP~H zDh1I(i6F{WDTuU{2qFYZLAXt`Ak0Q75KmSLLamj8;GkylBf*RyZ$Y4so*=+iBJlT} zBk=RJ6ZrZx3%oqV0uOhIz|D20z-hWz;Ap`J9PFnG?7gfkvZq)Y2}G==MYf%VQeZ0# z76|<(nPm$mxd?2`m4eA;N`bW*Utr~BVVyO}+sr!4lAM{7GgFHYv!j{D9!6<~9tLSf z83q};-a2WlH{G}QQXCntNruugv(o!9-k#C8Z5x^#9xvOOl0EaIVXPBe0Zo*$*U zhim@h7}ZE8r%CWuJ-mp|%HX|WDDch_yz!@monBQ@lZg z;op(F+K4WplhD$JUPot9EB*-W4AOILom-EJY9kJkYLSI)ctI+YszK!=LA~|4g(L zffv9>DND+g%B8kb7vagp_pnE6LwnMz=@$BJCWNVA2H{DJ3wwb5iHCW*JTKmCULEf` zzlz_Z!Dz&4Y}6Rkc%bR3IahPO=3dR4nxAV~XwA@S(z>W^qMe~Vr2Uo-qvNDgrPHo+ zMdz_Dt81a_sXI@%On15Nr+U76EA;N_TkFT`pVj}$z|df(!AgT&245RG8de#O8JQZz z867lw)tGPWV!Y6}!}whj)+F8}$E3&PQ&YZaf$1qTU9(iPYI9`nVt&N@=_LN7DU&Ww zx?_PY94vAyE?V5R)VFlCjI~^7*<^Xc@}A|VmOomtR%up;tgc#HSSMTeO-`76X7Xn? z0XExh9to@jZh``VRB&AI89Z0%fagZDY};(Vw3}(yZTFFAx+qc9CK?vKEqX8oPqCgd zYf8hEvr}H1BDXiRx3_n-&#+;nww-R}C(EzPad?LY1_ z-FLgc=Khn1zlYT0Eze-je9sooH@zIZ=6E%Fo$z|!dy@A&@2%b+_=NbZ^!dtnj&G^& zN#7@axqfT?&iZ}jZ|NWIU+%vlU{ZiMpe~>_;N?J#z?i@lfiDM54Jr?MVTR$1${FWp z{1j{%ToZgfgbB$Bxe)Sws8i_5(0_^D#5=;+u;pRDhA#?#H^M2RAfh!w5t$Q(qk5us zq8CRGMgJBvEhZ*L60<3$Bi1K&W9*^W(by+(!EuM;UX1&ErtQq^nKd)l&D=h-d**|9 z>-c%`yW)G|FT{T_%VJjgtb+-f3AG996ZR$COn5q5Z?^61lG(kp@6QRI(>~{6qEli> zVp3vL;#lGviT_S~lBAoIoz$E3eKJlqNVZO%nw*&|OR-OBOVvwVmik#*SlYp~$8&?` zZkqerJfnFj^DfSNY2NGU-s#!@$A58pW%|nW?diwTuchBl|0TmPV{*o{jI@lpjLwXa zj2jtmWqh02lX)}qi%eyfMwVfgWtJ$*Im;(2Br7MYI;$ybAnSg%QMOg~lx&x5-|W!r z*zBb2%E>7FAJ1~#f7U1`wOoXeqFS@=zOtBaai%9;v>cH7Jptsl~|WdEy*isFZrc3 zv-Esfc3F0La(PSn?egy`Tr1X8d^cZve%Ac1`7bS)wxDRi@&#iHzOJ;XjH}#I*;n~~ z@MqN|g3yZZDXDz<6_))!eeQN#o`YZL{H3%BA8}>9DY%ZDy zv>|cB-VLK0zHIbu3~h{UOlr(*ENZN5T--je9qKyGeJ`tW8@to!vCvWZqQP zw4~{a&5@hSHrH%!*t~l4rp-Gx@88_Dxp#Bl<_nvzY<_9;-OV3w{!$tz-7Y;TRcwje zvVV(mYt+`(tzU2R-PW<~(YEim=WcJ>{^kyi9XUI;?sx_MU*BoHvt;LyoiFd=?XuYA zyeo89@~+Zd%XaPDb$Hj{u3Ni4*!Ashdbio`X}g1WC+;rVUB7$t?gP7JyI<+N0QOxOd84zrAsLv-j5Qy}mDDU;e&D`!?=t*>`f^=)TwXeY)@G{hIr&_q*;7 z+n>6>Z2z+TcUyv65?cye7Po9_X=^#va;4>7%jYe>wd%AAT0L8%TGLw>w61F1)q1$~ zeCy5DH(Ebx{h^K5X4&T27S@*9R^GOvZAaUowli%bZMWM#YWuNWqur|ArCr>f(q7WO zq!9jiKabsX*(?6}o&zvH`3w$q}sqVvVhw>uwo%DeQtL|wjJab4M6HC^kv_H^}j zjdb1a`l#!1*RKcZgJuV(9Sk~{aIoOu;)81sZaaAJ;Ms%M559Bo(ZTU<{ccgWZ+BdG zc6Uwpy6%15$Gb0e-|7CO`=>+vLzagY99nf~=b^)g1`pjl^xmPzhm?nt4i_C>e7Naw z`{BOB*ABmV_>03&dw4yQdYpRvdg6L=dMbJr_cZnF>FMnm>ABtWanFxO&=I2}_DB4V zL>x&wQgLMYkxfThkDNR*dgR`b&yV^XjXj!qwCd=Zqs>Q;9349PucPlAecX$Bje8w? zXY@w)&gxC=&F(Gkt?aGqUD3OtcWdvS-UGcoy{CGw_P){k@7^cJbdL#+c^wNn7I7^8 zSjw@iV>QRt9ou{C*s+Vp?jHN(ciDkXt;f5MA3xrI{Kez{I{wD- z4~{=P{`mNh$Hz}FCv;AjoNzqhcEaz(vJ>l0NKbU0=sz)hV(i45C+?s4_9S)E^yJi& zK__RQEIe6%a`VXpCwoqwIyrRmm6NZZ{QTr^r}R#VPWhgSJC%K^=2XL})u)dL8mr#?IN>uK%N#;2`Li%$EVjys)ny7+X%=`E+bPWPVfJALi+o2S1#{oNV%jKvw3 zGht^^&y<~6dS=_1?lb4l+&c5xnRm~8-G}>3`=<5<^(FKb^wsq>^&RMw^}W#dcHdWh zKgjqpE19b-OqM1qm#vWPkR6r{%3hY;mp$n>>!02q(x2R4+P|!Sd;g*S!T#6#za3x( zCJi_ZgbXAN6b&>CNC!Fx`UkELyfg54KzY{stpC~gv$iP2XE6(pcfB5|1`CI2d zIRDKcHE23Gbuef!VX$Cu@!;mcjzQVr3xjVBesO`lFzJHRg^&wL7m6=5T##PqxNzjc zCqp(v;-SK!Lqneq8xBVeuNdwh9v;3u{O0ie;m?M@9{y=qKEjUZj+l;29SItlJyI~T zcx3ZP$4LLk^^tc+zP^YrnqHiCG5BKA#hi-^FE(Cmy?FZK*u^(5etA)T$>5UclHaBH zOL>Cq+mWy8z%mjf;*TrRl0`10n<2QHtveC_gEmmghLj2ewP zj0TQIk0y`ij?N#gA6+-PeRSVw=jhSVGoyo}qoX%Q?~J}R`r+v3qyHKGc~o)5=!*Rn z|10rVQm$lOskzc{MSA7Hm7Xi7uAIAa>B`+JZ(n(E<=Z1$6_Y@MpW^Sf^4k9Y;Q2Fx$kq$s|wwggcUi2Lu~adYqD|`ACWBTN@OGt=|Q%DHRx0x}frtsj) zq5!eZSxs7-MQ&cVJz*kKT4d;B%N?Om}31HJU3klrUU{L zOH0~>g=KGhxfyyH1q5&>M&<$J9PlE1fP%dp92{LKA8%hEmJMYp@^+;}c08V`iJ6%> zT$}KKe9-S@Vnca(`ub9b_HEdUb9`5nuewk)|JwS}gEc`zLUHzt)GBZ9mDOv{<<{NX zmUeVw;)q9bkw@mraNYsMUF`8&m*OX^jc3frPqcHaJzBqfAU}A?8A(KKic4TclsG@Z zep*d;!`l9A*NW4t(rUu20_FoRDwJQb>)Gqb5Q&fvib3%RC>!S)&jv+K^EB5JvaG~Y zmr&O8MNfklJ-rO!-`yicg^Zb*sS0`r2S0)hf!@al&?V^M|6zRN(Jj8{@dH80hkYuG{i}a_S`}J|U$kIk_n%A&FF-39iXr zUdgTrZYf?~DdUN=lSyl`syaB^6YN-t;-0W<%}ItaQdgwPlN8=05*co8T%+q*J2*3 zR_w%it6|(m#dK;PZvj{ojedBg(G64`*llFw>u0V>314V5tY&jO=7__t` zB&1|%kYmiTmO?68>pfh6wfY>FxpaQ6cy&~7RB`u4Caq%ULh}*r)he(FOBcQ-$pMJnhAvjM~+{ZrX1Ed8sW#G34Zo7Mw zfUFRVeSEM_c1nfN+5CgOS+7LKIcF94l9$=wyN?1&kGcS>0l#1!P&={)rKgxgU1({6 z5j(*`*Q0x2Pqog{nqZurz?wEZXOedY`TGZvQs@>I=H@CElX;Dm>uIofFt6qSdE3G* z6eb2KrVZuYT~t0R`|Wl3_AiANfnI2XUYNtT{=xn`@dQS!gr~9v#0CJ<^uUg}(!jD1 zFkCh?ZRqVvi|j!B4NYulBL9rGc**hksoNJOP7hmhydrH!?VRZ&=FSoGe8WqlrkJ~i z&+~~ajk2R>eR%fgeG$`h_Pw>^!?WKvi>GBYzoA%+tqS+f4;OgMKeb%(S>e8_Xj|`^ zKEU84Fymc#W0!|?&hr=v)*KK9hR!-_4GAv^RWmU*qI7hc=L2;OyMyZ{#g zvJmSS80eU?5?Uaj$c^ABoItk;Lx6$654HIMGfnI@(P=%3j~TD=7<@myz%fXYRIpY& zT=_=3^u-FN_#%JBvX+)c%D8ZIRY2_G==hEEmj7#MLEmEW`gN;<6&XZs@|2J1C$PFT z3PRJxW>(fV0uX}9la0LG+@|SDbagd>vH*#v8?iIQeSr@Fd^mIZci@Obraqi2QE`Bn z8MW~xqw%H<1*=2-Yv;~xh#0PYW#fh$)m{ruG<0@u8LV)MT6wG}uXj!CaKy^AwB-@A zw&c=YVGCnYC4s@UvuXw_b1pRbt*nfiS`%KqKCHB}+TXWqf59wCXwZ_Zti=HY8y}!$ z637pUJSL0vXg;4uQLLtpM4JVJ3bxWHz>Ro7A|XIgFB)@dk@WN-wRQg?MH01o7(Z&M zqQ6soAkU?5kmv(A)CSV#3TM;EoQ|5B)MN__V_gYLspeGE1?F@#wl%e-)vi>HzoQrN zoP>9rXT?Q(;;66W1I|;ICzc#sI3qxEdU1Nk@&qlJPVC~@;ib{`4)K-IIeFB12kOm} ziaPVDQESfCRLIuHdX(%hO|A`aox5ySRDHUKCy|{-fNU~5fP9gaSXa+^lAWD1jTniu zS`$dXLA1fkl#_f@&WS$*g{U}a0`c;kvVgjK8~IM5Lk$d?Z`66YCYJb#i=(Cp!;2yl z8q;`%dI^hmBvy5ndIT;yR#Pvl3k+$+2JApbUe}G%w+i-_dV6Fniwj$t=NG>;2G@3# zxFv5snOSzOX;#6Z8>REw@YHX&6PRZMj~sxSJfgXnWkE}5PD{ABD9jYp-PVV3kRN%0 z${c^p%F3S%v6H~+FlZrQs}HhjfP}~$9^KiB4RnKp?OjYw86Ou`GMOQ0gFgf&8>zX> z#V^FU5i4M3#-ET_wM-g6>sRU1pZgj8<*%(@e{WgD^5dl&?=2mPUX_xzJThYC+_@_v zT57K?U-?3H&9xOPuhk5PRL8|t1qYL32$nVu=jRVM&f8TPRCca5X=QZu%B0kW(9j0z z>HHIgg(v2(9>~odSQl3t7F?SUUmFrq3v?+~D(GJUJAcAU#yU)O8nKdQS-8d zlO>ff5nrwnEN2O;UtGemG9siZ&5KD7t2>Zg*;(Qd zC^=rUQdZ+VIjQZJ^TzF&Emuk&6t$K6dS$PO3tLtg;E`4tl+wLnPU_av8RdgpW)~m3 zR}-=D%Qt!p;C=B%u<@1f4!;93`U!rr1sN%SrWZl`H1H^?(C!E=AJU6}(+2QkE)MYq zE7LkfBY_}Z`6Jx`{1PH(!ZD1eOqs4NF*MXQaa;cK(lED_g2RFDHLyDtglUJlVh1PW!RSaw`^a^z< zvUc~cJpz(884^Sruv|obbFV;3wvG;^K~vxnG*lLd_{o3(psI?dVA3Gd zbA)u41W7L{Y_3yItMM+yWO_B_@?iW9>-OX|F3)pY`y`RF>Vy~cDR{brm?l`w0&E?u zWiicxa&*KF4thHJl*HP~N{?HMFpjJSYpD`DTSr@x=@3I_3qgl1XWv28Xj{MEJN#_b z$sHwA?4aZ9A;i}n+SyebDdu?RkibBQL6kal|Vs}ErJJj)Z z|BAT861OM+VP!6PyGt{7W$VhPc8C`zCe@4E{WVJt&r~Ks=ww@-iVvGRpY(Vcl`<(>07I&0 zrzAAR<2VQoi{qdw%Hxu95}QC_qQ~WqW3->Vi26;=@95}YjY&iz-`>$dNkB+wZhp6C z^8U)b46?SL6ES_WLZ4_tF1 zv~rq0omFv;W1J`O4SXv%8{r+~SzO4#g`$7qo}VFLaNnx_?%~D~UsFQ1bwGOD$R-g8&_p0H z5$)1CSL^R?-1ut!Sme^#vzA8V;|%}lZ#!?4WnbEnUGE>ZR*enItxoKTwb+2i*JgDz zcoYNt)0(g)s(72A0wx4wWB7swo*fTj(LC8ynd%?sZ15SJRdaSmFM2A5@a*`IP zq!&_GFmPVP&H>S}7eM>@MSLHBa7ixPEnj@Z>MF||xeEJkIm}@~{_!UHO#(3a8WiTZ zstK!TB6G1et-)%-+!V_x2MOj#v<{QPoL<m`18`r+wF*ohN+iM%& zZcn-5Q`(%9xvR|IzhYNr?(PzAnwQ<97$3~fAH+;gb`Pd6d$dxE}-OZ-x=%$8hu-U5J8tR&2Ic{9IH7soFLdCH$ z%Hqhw`uc}dP)F>VzO6>_V2n;tbl$>ctgQHj?ZrnHS(|pmt%y%u74_sl)E+EvfVdQ+ zB(QmlfOY{$AlBD%(D(K5aMF}aGBMHTA~`nzgQUJh4k3wigk1%7Isth&3314FsSRar zLqAKTCbmoIenG;fvdS|n!lTy@*7kh1qLLT7@~#G! ztc@<&8i#AW=7MlC6Ii?gRiE6*VA}juS+7R4LMc!>U0vH0oxfR44o8;+CdPdQVi zp@@ZVtZV@}2?Rjy01Vp5Qmn^kv@iot3JAp}P~vt*h#e$r!Uw)BoQrcmR(RvLKUK6U zT0g~ald0wRC|9|g+?EQEzeGKt;3vf};DnesnsQi^Y zm)~9|xN9kH;tlGV;fD+`{N|l%<`f@W2qL@;weT{<#;fcXEx*RLz%TDnNKCy;llQn( znWUx$?DHU&f}P0F+n!w94MIQ@XGBBLjW4`%3Om(qf7yN^p3b}{S5j}wr&0JV`7~IY zQI^xK@Z5^*WK!_M9N;JlfE0A=_yTSpGk|#yzXv0lf zAfgGA0(xd{DspfzHs@ktwbsG@HsodMjSO1bt292kB4~KV!mh&l^JT`yV|oTc>f)Rg zsm`uBk!kA^=sEn5vTfBy#JB!3lb=f8~LaviA9*Iy#~A+e%A27x<6ZgjddqE{k>1 zHi%oE6~7=t$U{%=-J={#>u>Ezj@dZckiBGdQ_P&*uk12S+EEqio>b=dUG&=I;7V>U zDF>+jHBjA=cs$sZGvP}ZkO^+PS+!#cG7hfQ@Bhp-sF3j5SXRb1TwS#6d_z!B!}(>a zN2{PAtY&7~qKL`X5sNnX<^|^;DVe+Pg{tXQFYKFJ)?XV@85Xe+lF1lpZ3K}IvXlDV za}?9HWf(JUpc!9+If8L+1mFSv6Tt&0lJtPrFjc3_6G@Ms50`FJwBN`H`J~{59R;PW z3qo|XLl?A_<#j9!9<6Hj6W9iWGGoj$HZnpM0OJ(IQB4(-&C$j2}S9*`XL)9=|)p?=wXH9oXX_!^m@Z2#dQ~!g!`+=T6L*YBQugb`Hl_QN?<<_1u&FdKF(Sh!e+Fm}Sa|9c_+1M_u($~burv}w@7X8kInuDQH5!6|p|0(lViQd*f?VCj0| z&562IaPg%+GPuCkrFrV5?hul}7I6Dg!Gy`mQAIq?gt-hM zMu13N7dT*Q#qr?IgiTSUQ_mRi{N%ewLRaQlM3`e^ccW?klZ_{~#bBYRB58~ke=oz@ zg!{4YJzJ3`)M8+t2IPQv#mQpBiA+lqUXO-UixADzDfC&YrAayZsWPpY5qgeds^VAu z%Q!JWu__;rs|ckCRPYu5x&8?*etLsqj>zYMZb6EQ=W?s)oPWj&6?K3js{05G@aq%2 zr67w8cneS1#WtK~M7i48nQH@4K@-(1G$eaEa8OO)MgNtN_I&mJ{d2sH8j)Gg#s1Yj zm9y65dJhMbM<-W@Po^%fzyVbU%jRv$aUTgNiwVvZ+tNkj9ZaA?N5$~$ouzU&>SkIg zVfbW+jGi^|u6cV(KtdeQd<8na;IGIz!Z6Ve*qW%IgmuCSqe+MmyU7y`w<&I7n zKm9uxf04Uv@IyYZCdujyE?66COB{KeC*_>a@8(JEfZ$QT%He?JQdz6)$TfotB^TC4 zMy@?CkqoYl9Ck>kOPIB2mZM|BBB&D_C`0qbxAvx_?7g+veDO_ka&xPB(vIrT(CQsY z=7~FM#NryTo!}D{`S7a-gl~WHi9{Lne)ow)9lZVzpJ=E85l4@lpuY5906wv^I!s3= zyy^h>#7e&ryO`=(oKG}~U6K`F6=O%wfATZ?p8PTA6eHISN^1Y&6czI5%k}eD?C0 zCfaT@E23vr$JiiR-}^m8W=!YamwT7C=XOd#(ROHYk03bH9Y z)fle{dPzLH%dpC#JYf4WxiN2H7dZ=*n4Jigjka9 zncbS>lIHIgJJrU`(az8&b=ka_`ZTxFLz%NO?59QpRWy~4sd;P|@R7^Pv_RzHS3d~b zNJInH0DPYDL^`J0jR(l6Wch^~!*;#`b1z+N7ULNyiC_Y^Z^!(nulV^JY0~@oy1uI` z3Dq|PHSRNkob`cx5gYO(lV}QkO|n4z7M^-pv3$k**u!*%Vo5LEOq|Df`5|rwC)oXa9nL0lKzJvHuZ;|86CUiz zVJ)77q=MYUs!WhG=P)^+B!gsjk_>X|IN~mBwrrB(vxe@k4Oc2|FnXU1DQ>KI9UBPh z7567yrI+=OH^9Ox2H~)tUdchR_b$DqkHk>Z0jF00jz8pqJjeqlkmB+{V^|HAgERzV zt*^g*SJ8>9-g@%nZCt770)tnNrSeDe5AZ(4d}<11MmS@ph^J*RuQBY2fIgU;nL-XY zi6_z5fDnaC9LU6kT3j;V=%@-$`~W4`)VYjZZYXB!d(2ue(=1XCzE{f+O%FEPi7nh4 z6%zQt`lo`aIjKH6@GC8}Z9)WdV0`F>NccH6kTZA@fIbWBs=TAMSeMHgc_e4#QAY4o z?Vl1x`t11E)X#G7h15&+$@0l9EiJTQJg$izXoZvtvNXkRs*4v4e%>DN(VDEOrDbhx zWQ-vb^n~Xlu&=}IslWpz*l35XIUi5*hL*3dF`tV(VQa;QZ26EEmZ&9;4Vg)O+ZPsv zwf8wTwTC(9#Bc9Qa?IidOYE;Kzgv7bf7zOC<{Q93oj?xPicjD#;Ez3V#awmCf z8R3~s@jZ@G=c3QvECD->qxQmECE>hLfY$`zT?FtNBL|2OwQXRlULXKF4!4sBW!z2_ zfjGsFdo%#lHzg?IpM3QMlX&CEBn2nh%*uuo;i zTVu^LFo3k1ywPWAa9g$atWr}4NA*UO+CG}AM1z^v;x?}#W?tiLueqLHv5wtta~opP zH^=#TLQSvf|$L5fX0=n>&uS4&-H!BtU8Plg!=<;&mc z$-IQ(F^kkDw*=%;RX`B2KWiJ2soI8Wq zvhMSL5*2Z{_muB^_5I$1yaUaL@z=(lCCDjc@0CornwbvXzhM-K}yQ} zZ-rGcjj>7?16;(bvd3T>zg~DT#%aBeW;^9vN}FACn3ho zHLGq-P1(Bo$fl8vMav7~>*FJGW7RHhIdyAm3Kx_GapJlSkPw0+G z_&=XXUpMPxIC54WHp*w|!Z&|?7{|-1fd~FO&ZQeGZ#Vd@yVECY8o0E$5Qn) zV4|r*CN03XvXmK9%RqwTFtS{|4h`&c*I@zpNgW~BTG8@|;N|J<%kgjQcxqqUf$7r^ zwC#I(M_qM#RY*uxdUdUqu=DZuqt(@qzRk`{@4S}?*}0RD7w64;Q5@g7QyhP39#?Vj zVB?d$y}eI1K74R?Mf&`LzQXzG6@Opz#pCt$kAJad?Pq7|>dt(&_As${wWsG*@!P|P z#cyBNXkI61)#PM5xu1Z@U^5oFwre4(loO*F?mt7cs;x_sDN~LxktJOMyO&Py4^E_7thI`6AjEyvuqFF z%wG_E$ykANy%fIPr-d` z@2RO?s;e5Md8yPo@QoMVGf_kGRCr-QVjvb+AeL~YcKm^4BH=ym)quQU T~HxrxL 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�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≪⃒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. Each one must be either + + * a git checkout whose HEAD equals the pin and whose tracked files are unmodified, or + * an extracted `git archive` of the pin. Create one with --prepare-from CLONES_ROOT, + which runs `git archive ` in CLONES_ROOT/ (read only, no checkout or + branch switch), checks the commit id embedded in the tar and extracts it. + +Everything written to --output is free of absolute local paths: commands name the +interpreter as `python`, working directories are relative to the source root, and +logs have the source root, interpreter prefix and home directory replaced by +placeholders. +""" +from pathlib import Path +from datetime import datetime, timezone +import argparse, hashlib, importlib.metadata, io, json, os, platform, re, subprocess, sys, tarfile + +PINS = { + 'agentrust-telemetry': '29c13cfa4047a0f5784a90df63b22a3568453158', + 'weight-custody-manifest': '2acedfa883204f7d1fd457d3ee603198d85be82c', + 'agent-manifest': '934809709a2815695d65cfacb45dc0a164286046', +} +TASKS = [ + ('telemetry-tests', 'agentrust-telemetry', ['-m', 'unittest', 'discover', '-s', 'tests', '-v']), + ('telemetry-conformance', 'agentrust-telemetry', ['conformance/runner/validate.py']), + ('memory-tests', 'weight-custody-manifest/python', + ['-m', 'pytest', '-p', 'no:cacheprovider', '-o', 'pythonpath=src', + 'tests/test_memory_sweep.py', 'tests/test_kbs.py', '-v']), + ('approval-tests', 'agent-manifest/python', + ['-m', 'pytest', '-p', 'no:cacheprovider', '-o', 'pythonpath=src', + 'tests/test_signing.py', 'tests/test_delegation_hitl.py', '-v']), +] +DEPENDENCIES = ['pytest', 'cryptography', 'pydantic', 'jsonschema', 'referencing', 'rfc8785', + 'cbor2', 'agentrust-trace', 'opentelemetry-sdk', 'jcs', 'PyYAML'] +MARKER = '.source-commit' + + +def git(repo, *args, **kw): + return subprocess.check_output(['git', '-c', 'safe.directory=' + str(repo), '-C', str(repo), *args], **kw) + + +def prepare(clones, root): + for name, pin in PINS.items(): + dest = root / name + if dest.exists(): + raise SystemExit(f'{name}: {dest.name} already exists under the source root; use an empty root') + data = git((clones / name).resolve(), 'archive', '--format=tar', pin) + commit = subprocess.run(['git', 'get-tar-commit-id'], input=data, capture_output=True, check=True).stdout.decode().strip() + if commit != pin: + raise SystemExit(f'{name}: archive carries {commit}, expected {pin}') + dest.mkdir(parents=True) + with tarfile.open(fileobj=io.BytesIO(data)) as tar: + tar.extractall(dest, filter='data') + (dest / MARKER).write_text(pin + '\n', encoding='ascii') + + +def verify(root): + method = {} + for name, pin in PINS.items(): + repo = (root / name).resolve() + if (repo / MARKER).exists(): + found = (repo / MARKER).read_text(encoding='ascii').strip() + if found != pin: + raise SystemExit(f'{name}: archive marker {found}, expected {pin}') + method[name] = 'git archive of the pinned commit (tar commit id checked)' + continue + head = git(repo, 'rev-parse', 'HEAD', text=True).strip() + if head != pin: + raise SystemExit(f'{name}: expected {pin}, found {head}') + if git(repo, 'diff', '--name-only', 'HEAD', text=True).strip(): + raise SystemExit(f'{name}: tracked files differ from the pinned revision') + method[name] = 'git checkout at the pinned commit, tracked files clean' + return method + + +def scrub(text, root): + subs = [(str(root.resolve()), ''), (sys.prefix, ''), + (sys.base_prefix, ''), (str(Path.home()), '')] + for old, new in subs: + for variant in {old, old.replace('\\', '/'), old.replace('\\', '\\\\')}: + text = text.replace(variant, new) + return re.sub(r'[A-Za-z]:\\\\?Users\\\\?[^\\\s"\']+', '', text) + + +def summary(name, text): + if name == 'telemetry-tests': + m = re.search(r'Ran (\d+) tests?.*?\n\n(OK.*|FAILED.*)', text, re.S) + return f'{m.group(1)} tests, {m.group(2).strip()}' if m else 'unparsed' + if name == 'telemetry-conformance': + verdicts = [l.split()[0] for l in text.splitlines() if l.startswith(('PASS ', 'FAIL '))] + return f"{verdicts.count('PASS')} of {len(verdicts)} fixtures returned the expected verdict" + m = re.findall(r'=+ (.*?) in [0-9.]+s', text) + return m[-1] if m else 'unparsed' + + +def main(): + p = argparse.ArgumentParser() + p.add_argument('--source-root', type=Path, required=True) + p.add_argument('--output', type=Path, required=True) + p.add_argument('--prepare-from', type=Path, help='directory of local clones to `git archive` from') + a = p.parse_args() + a.output.mkdir(parents=True, exist_ok=True) + if a.prepare_from: + a.source_root.mkdir(parents=True, exist_ok=True) + prepare(a.prepare_from, a.source_root) + method = verify(a.source_root) + results = [] + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1', PYTHONUTF8='1') + for name, path, args in TASKS: + run = subprocess.run([sys.executable, *args], cwd=a.source_root / path, env=env, + capture_output=True, text=True, encoding='utf-8', errors='replace') + log = scrub(run.stdout + '\nSTDERR\n' + run.stderr, a.source_root) + (a.output / (name + '.txt')).write_text(log, encoding='utf-8', newline='\n') + results.append({'name': name, 'cwd': path, 'command': ['python', *args], 'exit_code': run.returncode, + 'summary': summary(name, log), 'log': name + '.txt', + 'log_sha256': hashlib.sha256(log.encode('utf-8')).hexdigest()}) + deps = {} + for d in DEPENDENCIES: + try: + deps[d] = importlib.metadata.version(d) + except importlib.metadata.PackageNotFoundError: + deps[d] = None + record = {'captured_at': datetime.now(timezone.utc).isoformat(timespec='seconds'), + 'python': platform.python_version(), 'platform': platform.platform(terse=True), + 'dependencies': deps, + 'sources': {n: {'commit': PINS[n], 'verified_by': method[n]} for n in PINS}, + 'results': results, + 'limits': ['Local software tests only; no protected-hardware execution.', + 'Tests and implementation share a repository and are not independent validation.']} + (a.output / 'results.json').write_text(json.dumps(record, indent=2) + '\n', encoding='utf-8', newline='\n') + print(json.dumps(results, indent=2)) + raise SystemExit(any(r['exit_code'] for r in results)) + + +if __name__ == '__main__': + main() diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/README.md b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/README.md new file mode 100644 index 0000000..d33a0b5 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/README.md @@ -0,0 +1,16 @@ +# September 27, 2026 rerun + +- `pinned/`: `reproduce.py` and `boundary_probes.py` against `git archive` extracts of the + three pinned commits (agentrust-telemetry 29c13cf, weight-custody-manifest 2acedfa, + agent-manifest 9348097). The runner checked each tar's embedded commit id before extracting. + `results.json` records the interpreter version, package versions, commands and log hashes. +- `later-revision/`: `boundary_probes.py` only, against `git archive` extracts of the + commits listed in `COMMITS.txt` (origin/main on September 27, 2026). The repository + test suites were not run at these commits. + +Environment: Windows, Python 3.12.10, pytest 8.4.2, cryptography 50.0.0, jsonschema 4.26.0, +cbor2 5.9.0. The September 4 run used cbor2 6.1.4; local application control blocks the +6.x compiled extension on this machine. The selected test modules do not test COSE or CBOR encoding. + +Logs have local paths replaced with ``, `` and ``. +Software only: no protected hardware, durable store or external identity provider. diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/COMMITS.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/COMMITS.txt new file mode 100644 index 0000000..0c2d2a0 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/COMMITS.txt @@ -0,0 +1,3 @@ +agent-manifest 3c124914e3dcd64369a16d27a5cae6943b918916 +weight-custody-manifest 94d5519fd604f7be5a784539a37c1fc021e3d607 +agentrust-telemetry c3515681261fd0ab6e6aa38e20eb2f071aee7a20 diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/boundary-probes.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/boundary-probes.json new file mode 100644 index 0000000..904e5dc --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/later-revision/boundary-probes.json @@ -0,0 +1,61 @@ +{ + "captured_at": "2026-09-28T04:55:59+00:00", + "results": [ + { + "probe": "export_failure_preserves_accepted_event", + "observed": true, + "meaning": "Evidence acceptance survives a later operational projection error; memory mode is not durable storage." + }, + { + "probe": "failed_ack_suppresses_projection", + "observed": true, + "meaning": "No operational projection or local chain advance after callback refusal." + }, + { + "probe": "empty_complete_declaration_is_accepted", + "observed": true, + "meaning": "Counterexample: seal does not independently prove capture completeness." + }, + { + "probe": "external_commit_retry_requires_sink_idempotency", + "observed": true, + "meaning": "Counterexample: no cross-store transaction or built-in exactly-once persistence." + }, + { + "probe": "signed_bad_memory_is_authentic_not_acceptable", + "observed": true, + "meaning": "Signature verification authenticates the negative finding. The broker must reject it separately." + }, + { + "probe": "signature_verifier_has_no_freshness_input", + "observed": true, + "meaning": "Broker challenge comparison, not signature verification alone, establishes request freshness." + }, + { + "probe": "approval_signer_accepts_method_parameter", + "observed": true, + "meaning": "Whether this revision lets the human signer cover approval_method; the probe passes it when available." + }, + { + "probe": "approval_method_label_is_outside_approval_signature", + "observed": false, + "meaning": "True means the unaltered approval verifies and the method-label alteration still verifies (label outside the signature). False with the unaltered approval verifying means the label is bound. Not a full runtime test." + }, + { + "probe": "approval_unaltered_verifies", + "observed": true, + "meaning": "Control for the previous probe." + }, + { + "probe": "approval_helper_accepts_zero_or_missing_duration", + "observed": false, + "meaning": "True means the single-approval helper accepts approval_duration_seconds of 0 or absent. The integrated verifier applies its own expiry logic." + }, + { + "probe": "requirement_bound_approval_appendable", + "observed": true, + "meaning": "Issuer pre-image preserves requirements while normalizing only approvals." + } + ], + "limits": "Single-process software probes; no hardware or legal conclusion." +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/approval-tests.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/approval-tests.txt new file mode 100644 index 0000000..c2324f7 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/approval-tests.txt @@ -0,0 +1,91 @@ +============================= test session starts ============================= +platform win32 -- Python 3.12.10, pytest-8.4.2, pluggy-1.6.0 -- \Scripts\python.exe +rootdir: \agent-manifest\python +configfile: pyproject.toml +collecting ... collected 74 items + +tests/test_signing.py::test_pre_image_excludes_attestation PASSED [ 1%] +tests/test_signing.py::test_pre_image_excludes_signature PASSED [ 2%] +tests/test_signing.py::test_pre_image_includes_all_signed_fields PASSED [ 4%] +tests/test_signing.py::test_pre_image_is_rfc8785 PASSED [ 5%] +tests/test_signing.py::test_ed25519_sign_verify_roundtrip PASSED [ 6%] +tests/test_signing.py::test_ed25519_wrong_message_fails PASSED [ 8%] +tests/test_signing.py::test_ed25519_wrong_key_fails PASSED [ 9%] +tests/test_signing.py::test_ed25519_truncated_signature_fails PASSED [ 10%] +tests/test_signing.py::test_ed25519_wrong_algorithm_label_not_accepted PASSED [ 12%] +tests/test_signing.py::test_ed25519_signed_fields_list_correct PASSED [ 13%] +tests/test_signing.py::test_ed25519_sign_block_validates_against_model PASSED [ 14%] +tests/test_signing.py::test_ed25519_small_order_key_rejected PASSED [ 16%] +tests/test_signing.py::test_ed25519_all_small_order_points_rejected PASSED [ 17%] +tests/test_signing.py::test_ed25519_truncated_sig_raises_invalid_signature PASSED [ 18%] +tests/test_signing.py::test_b64url_decode_rejects_plus PASSED [ 20%] +tests/test_signing.py::test_b64url_decode_rejects_slash PASSED [ 21%] +tests/test_signing.py::test_b64url_decode_accepts_valid PASSED [ 22%] +tests/test_signing.py::test_ed25519_public_key_roundtrip_b64url PASSED [ 24%] +tests/test_signing.py::test_ml_dsa65_sign_verify_roundtrip PASSED [ 25%] +tests/test_signing.py::test_ml_dsa65_wrong_message_fails PASSED [ 27%] +tests/test_signing.py::test_hybrid_sign_verify_roundtrip PASSED [ 28%] +tests/test_signing.py::test_hybrid_tampered_classical_fails PASSED [ 29%] +tests/test_signing.py::test_hybrid_tampered_pq_fails PASSED [ 31%] +tests/test_signing.py::test_hybrid_both_components_cover_same_pre_image PASSED [ 32%] +tests/test_signing.py::test_signed_fields_match_spec_coverage_table PASSED [ 33%] +tests/test_signing.py::test_pre_image_normalizes_hitl_approvals_to_empty PASSED [ 35%] +tests/test_signing.py::test_pre_image_keeps_hitl_required_tamper_evident PASSED [ 36%] +tests/test_signing.py::test_approvals_attach_post_issuance_without_resigning PASSED [ 37%] +tests/test_signing.py::test_newly_signed_fields_are_tamper_evident PASSED [ 39%] +tests/test_signing.py::test_ed25519_keypair_repr_redacts_private_key PASSED [ 40%] +tests/test_signing.py::test_ed25519_keypair_str_equals_repr PASSED [ 41%] +tests/test_signing.py::test_ed25519_keypair_private_b64url_roundtrip PASSED [ 43%] +tests/test_signing.py::test_ed25519_from_private_bytes_valid PASSED [ 44%] +tests/test_signing.py::test_ed25519_from_private_bytes_malformed_raises PASSED [ 45%] +tests/test_signing.py::test_ed25519_from_private_bytes_too_short_raises PASSED [ 47%] +tests/test_signing.py::test_ed25519_verifier_wrong_length_key_raises PASSED [ 48%] +tests/test_signing.py::test_ed25519_verifier_zero_length_key_raises PASSED [ 50%] +tests/test_signing.py::test_ed25519_verifier_rsa_sized_bytes_raises PASSED [ 51%] +tests/test_signing.py::test_ed25519_signer_signed_at_is_iso8601 PASSED [ 52%] +tests/test_signing.py::test_ml_dsa65_signer_signed_at_is_iso8601 PASSED [ 54%] +tests/test_signing.py::test_hybrid_signer_signed_at_is_iso8601 PASSED [ 55%] +tests/test_delegation_hitl.py::test_hop_pre_image_includes_manifest_id PASSED [ 56%] +tests/test_delegation_hitl.py::test_hop_pre_image_includes_scope PASSED [ 58%] +tests/test_delegation_hitl.py::test_hop_pre_image_deterministic PASSED [ 59%] +tests/test_delegation_hitl.py::test_hop_pre_image_different_hops PASSED [ 60%] +tests/test_delegation_hitl.py::test_delegation_sign_verify_single_hop PASSED [ 62%] +tests/test_delegation_hitl.py::test_delegation_wrong_key_fails PASSED [ 63%] +tests/test_delegation_hitl.py::test_delegation_wrong_manifest_id_fails PASSED [ 64%] +tests/test_delegation_hitl.py::test_scope_laundering_detected PASSED [ 66%] +tests/test_delegation_hitl.py::test_depth_exceeded_raises PASSED [ 67%] +tests/test_delegation_hitl.py::test_empty_chain_passes PASSED [ 68%] +tests/test_delegation_hitl.py::test_missing_public_key_raises PASSED [ 70%] +tests/test_delegation_hitl.py::test_root_principal_must_match_manifest_issuer PASSED [ 71%] +tests/test_delegation_hitl.py::test_root_principal_matching_issuer_passes PASSED [ 72%] +tests/test_delegation_hitl.py::test_root_principal_matches_via_principal_manifest_id PASSED [ 74%] +tests/test_delegation_hitl.py::test_child_dropping_parent_constraint_is_rejected PASSED [ 75%] +tests/test_delegation_hitl.py::test_child_adding_constraint_is_allowed PASSED [ 77%] +tests/test_delegation_hitl.py::test_child_raising_ttl_is_rejected PASSED [ 78%] +tests/test_delegation_hitl.py::test_child_unbounded_ttl_under_bounded_parent_is_rejected PASSED [ 79%] +tests/test_delegation_hitl.py::test_child_raising_max_delegation_depth_is_rejected PASSED [ 81%] +tests/test_delegation_hitl.py::test_child_delegated_late_with_equal_ttl_outlives_parent_is_rejected PASSED [ 82%] +tests/test_delegation_hitl.py::test_child_delegated_late_with_shorter_ttl_still_within_parent_window_passes PASSED [ 83%] +tests/test_delegation_hitl.py::test_mixed_z_and_naive_delegated_at_still_refuses_on_absolute_expiry PASSED [ 85%] +tests/test_delegation_hitl.py::test_approval_pre_image_includes_manifest_id PASSED [ 86%] +tests/test_delegation_hitl.py::test_approval_pre_image_includes_scope PASSED [ 87%] +tests/test_delegation_hitl.py::test_approval_sign_verify PASSED [ 89%] +tests/test_delegation_hitl.py::test_approval_wrong_key_fails PASSED [ 90%] +tests/test_delegation_hitl.py::test_approval_wrong_manifest_id_fails PASSED [ 91%] +tests/test_delegation_hitl.py::test_approval_scope_change_fails PASSED [ 93%] +tests/test_delegation_hitl.py::test_approval_expired_raises PASSED [ 94%] +tests/test_delegation_hitl.py::test_approval_no_duration_does_not_expire PASSED [ 95%] +tests/test_delegation_hitl.py::test_hitl_approval_rejects_spiffe_approver_id PASSED [ 97%] +tests/test_delegation_hitl.py::test_hitl_approval_accepts_mailto_approver_id PASSED [ 98%] +tests/test_delegation_hitl.py::test_hitl_approval_accepts_did_approver_id PASSED [100%] + +============================== warnings summary =============================== +..\..\..\venv\Lib\site-packages\_pytest\config\__init__.py:1474 + \Lib\site-packages\_pytest\config\__init__.py:1474: PytestConfigWarning: Unknown config option: asyncio_mode + + self._warn_or_fail_if_strict(f"Unknown config option: {key}\n") + +-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +======================== 74 passed, 1 warning in 0.44s ======================== + +STDERR diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/boundary-probes.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/boundary-probes.json new file mode 100644 index 0000000..c821286 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/boundary-probes.json @@ -0,0 +1,61 @@ +{ + "captured_at": "2026-09-28T04:55:58+00:00", + "results": [ + { + "probe": "export_failure_preserves_accepted_event", + "observed": true, + "meaning": "Evidence acceptance survives a later operational projection error; memory mode is not durable storage." + }, + { + "probe": "failed_ack_suppresses_projection", + "observed": true, + "meaning": "No operational projection or local chain advance after callback refusal." + }, + { + "probe": "empty_complete_declaration_is_accepted", + "observed": true, + "meaning": "Counterexample: seal does not independently prove capture completeness." + }, + { + "probe": "external_commit_retry_requires_sink_idempotency", + "observed": true, + "meaning": "Counterexample: no cross-store transaction or built-in exactly-once persistence." + }, + { + "probe": "signed_bad_memory_is_authentic_not_acceptable", + "observed": true, + "meaning": "Signature verification authenticates the negative finding. The broker must reject it separately." + }, + { + "probe": "signature_verifier_has_no_freshness_input", + "observed": true, + "meaning": "Broker challenge comparison, not signature verification alone, establishes request freshness." + }, + { + "probe": "approval_signer_accepts_method_parameter", + "observed": false, + "meaning": "Whether this revision lets the human signer cover approval_method; the probe passes it when available." + }, + { + "probe": "approval_method_label_is_outside_approval_signature", + "observed": true, + "meaning": "True means the unaltered approval verifies and the method-label alteration still verifies (label outside the signature). False with the unaltered approval verifying means the label is bound. Not a full runtime test." + }, + { + "probe": "approval_unaltered_verifies", + "observed": true, + "meaning": "Control for the previous probe." + }, + { + "probe": "approval_helper_accepts_zero_or_missing_duration", + "observed": true, + "meaning": "True means the single-approval helper accepts approval_duration_seconds of 0 or absent. The integrated verifier applies its own expiry logic." + }, + { + "probe": "requirement_bound_approval_appendable", + "observed": true, + "meaning": "Issuer pre-image preserves requirements while normalizing only approvals." + } + ], + "limits": "Single-process software probes; no hardware or legal conclusion." +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/memory-tests.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/memory-tests.txt new file mode 100644 index 0000000..2f18b75 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/memory-tests.txt @@ -0,0 +1,45 @@ +============================= test session starts ============================= +platform win32 -- Python 3.12.10, pytest-8.4.2, pluggy-1.6.0 -- \Scripts\python.exe +rootdir: \weight-custody-manifest\python +configfile: pyproject.toml +collecting ... collected 35 items + +tests/test_memory_sweep.py::test_real_full_range_write_read_transcript_verifies PASSED [ 2%] +tests/test_memory_sweep.py::test_controlled_aliased_mapping_is_detected PASSED [ 5%] +tests/test_memory_sweep.py::test_omitted_range_and_host_tampering_are_rejected PASSED [ 8%] +tests/test_memory_sweep.py::test_host_authored_result_signed_by_wrong_key_is_rejected PASSED [ 11%] +tests/test_memory_sweep.py::test_short_secret_and_invalid_range_fail_closed PASSED [ 14%] +tests/test_kbs.py::test_happy_path_releases_key PASSED [ 17%] +tests/test_kbs.py::test_release_denies_when_manifest_has_no_out_of_band_authorization PASSED [ 20%] +tests/test_kbs.py::test_attacker_manifest_for_same_weights_is_rejected_by_exact_pin PASSED [ 22%] +tests/test_kbs.py::test_replayed_nonce_denied PASSED [ 25%] +tests/test_kbs.py::test_wrong_platform_denied PASSED [ 28%] +tests/test_kbs.py::test_unknown_serving_image_denied PASSED [ 31%] +tests/test_kbs.py::test_revoked_serving_image_denied PASSED [ 34%] +tests/test_kbs.py::test_prefer_current_refuses_retiring PASSED [ 37%] +tests/test_kbs.py::test_retiring_past_retire_after_denied PASSED [ 40%] +tests/test_kbs.py::test_gpu_absent_denied PASSED [ 42%] +tests/test_kbs.py::test_gpu_binding_broken_denied PASSED [ 45%] +tests/test_kbs.py::test_gpu_measurement_mismatch_denied PASSED [ 48%] +tests/test_kbs.py::test_attestation_key_revoked_denied PASSED [ 51%] +tests/test_kbs.py::test_stale_revocation_cache_denied PASSED [ 54%] +tests/test_kbs.py::test_no_key_for_weights_hash_denied PASSED [ 57%] +tests/test_kbs.py::test_memory_fingerprint_required_but_absent_denied PASSED [ 60%] +tests/test_kbs.py::test_memory_fingerprint_aliasing_denied PASSED [ 62%] +tests/test_kbs.py::test_memory_fingerprint_clean_releases PASSED [ 65%] +tests/test_kbs.py::test_memory_fingerprint_host_authored_and_replayed_results_are_denied PASSED [ 68%] +tests/test_kbs.py::test_channel_binding_off_by_default_returns_raw_key PASSED [ 71%] +tests/test_kbs.py::test_channel_binding_required_seals_key_to_enclave PASSED [ 74%] +tests/test_kbs.py::test_channel_binding_required_but_absent_denied PASSED [ 77%] +tests/test_kbs.py::test_channel_binding_malformed_transport_key_denied PASSED [ 80%] +tests/test_kbs.py::test_naive_retire_after_is_read_as_utc_and_does_not_raise PASSED [ 82%] +tests/test_kbs.py::test_naive_retire_after_still_expires PASSED [ 85%] +tests/test_kbs.py::test_aware_retire_after_keeps_its_offset PASSED [ 88%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[soon] PASSED [ 91%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[] PASSED [ 94%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[2026-13-45T99:99:99] PASSED [ 97%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[next tuesday] PASSED [100%] + +============================= 35 passed in 0.19s ============================== + +STDERR diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/results.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/results.json new file mode 100644 index 0000000..41f5b3d --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/results.json @@ -0,0 +1,107 @@ +{ + "captured_at": "2026-09-28T04:55:58+00:00", + "python": "3.12.10", + "platform": "Windows-11", + "dependencies": { + "pytest": "8.4.2", + "cryptography": "50.0.0", + "pydantic": "2.13.4", + "jsonschema": "4.26.0", + "referencing": "0.37.0", + "rfc8785": "0.1.4", + "cbor2": "5.9.0", + "agentrust-trace": "0.9.0", + "opentelemetry-sdk": "1.44.0", + "jcs": "0.2.1", + "PyYAML": "6.0.3" + }, + "sources": { + "agentrust-telemetry": { + "commit": "29c13cfa4047a0f5784a90df63b22a3568453158", + "verified_by": "git archive of the pinned commit (tar commit id checked)" + }, + "weight-custody-manifest": { + "commit": "2acedfa883204f7d1fd457d3ee603198d85be82c", + "verified_by": "git archive of the pinned commit (tar commit id checked)" + }, + "agent-manifest": { + "commit": "934809709a2815695d65cfacb45dc0a164286046", + "verified_by": "git archive of the pinned commit (tar commit id checked)" + } + }, + "results": [ + { + "name": "telemetry-tests", + "cwd": "agentrust-telemetry", + "command": [ + "python", + "-m", + "unittest", + "discover", + "-s", + "tests", + "-v" + ], + "exit_code": 0, + "summary": "111 tests, OK", + "log": "telemetry-tests.txt", + "log_sha256": "e68fd132e85776a347a4f6401b9ce9c60d48947b2cf81e59bce03d8c8a43fc50" + }, + { + "name": "telemetry-conformance", + "cwd": "agentrust-telemetry", + "command": [ + "python", + "conformance/runner/validate.py" + ], + "exit_code": 0, + "summary": "13 of 13 fixtures returned the expected verdict", + "log": "telemetry-conformance.txt", + "log_sha256": "f1af2ff732a78ef035226e1190421fcb67881644ff2936b5768131d08ac8e3ab" + }, + { + "name": "memory-tests", + "cwd": "weight-custody-manifest/python", + "command": [ + "python", + "-m", + "pytest", + "-p", + "no:cacheprovider", + "-o", + "pythonpath=src", + "tests/test_memory_sweep.py", + "tests/test_kbs.py", + "-v" + ], + "exit_code": 0, + "summary": "35 passed", + "log": "memory-tests.txt", + "log_sha256": "c8ec45488f99012cee49b452376d00cd01f0bf28bea3793bd8e7b7a2606f6366" + }, + { + "name": "approval-tests", + "cwd": "agent-manifest/python", + "command": [ + "python", + "-m", + "pytest", + "-p", + "no:cacheprovider", + "-o", + "pythonpath=src", + "tests/test_signing.py", + "tests/test_delegation_hitl.py", + "-v" + ], + "exit_code": 0, + "summary": "74 passed, 1 warning", + "log": "approval-tests.txt", + "log_sha256": "56a0b9a6a7668cb05cfd91077e5599e61b36b72d2abc9eb6cbccce5506352d5c" + } + ], + "limits": [ + "Local software tests only; no protected-hardware execution.", + "Tests and implementation share a repository and are not independent validation." + ] +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-conformance.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-conformance.txt new file mode 100644 index 0000000..6fd65da --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-conformance.txt @@ -0,0 +1,15 @@ +PASS conformance\fixtures\valid\action.json +PASS conformance\fixtures\valid\approval.json +PASS conformance\fixtures\valid\data-flow.json +PASS conformance\fixtures\valid\evidence.json +PASS conformance\fixtures\valid\policy-decision.json +PASS conformance\fixtures\valid\usage.json +PASS conformance\fixtures\invalid\action-without-digest.json +PASS conformance\fixtures\invalid\aggregate-cost-without-rollup.json +PASS conformance\fixtures\invalid\model-call-with-rollup.json +PASS conformance\fixtures\invalid\numeric-timestamp.json +PASS conformance\fixtures\invalid\raw-content.json +PASS conformance\fixtures\invalid\usage-without-measurement.json +PASS conformance\fixtures\invalid\zero-trace-id.json + +STDERR diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-tests.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-tests.txt new file mode 100644 index 0000000..3ee54c5 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-09-27/pinned/telemetry-tests.txt @@ -0,0 +1,135 @@ +PASS conformance\fixtures\valid\action.json +PASS conformance\fixtures\valid\approval.json +PASS conformance\fixtures\valid\data-flow.json +PASS conformance\fixtures\valid\evidence.json +PASS conformance\fixtures\valid\policy-decision.json +PASS conformance\fixtures\valid\usage.json +PASS conformance\fixtures\invalid\action-without-digest.json +PASS conformance\fixtures\invalid\aggregate-cost-without-rollup.json +PASS conformance\fixtures\invalid\model-call-with-rollup.json +PASS conformance\fixtures\invalid\numeric-timestamp.json +PASS conformance\fixtures\invalid\raw-content.json +PASS conformance\fixtures\invalid\usage-without-measurement.json +PASS conformance\fixtures\invalid\zero-trace-id.json +PASS contract=0.1.0-alpha.2 python=0.1.0a2 npm_name=@agentrust-io/telemetry npm=0.1.0-alpha.2 +PASS OTel GenAI matrix covers 16 span attributes, 8 metrics, and 6 event families +PASS TypeScript schemas match normative bytes + +STDERR +test_cedar_preserves_final_decision_and_reports_skipped_errors (test_adapters.AdapterTests.test_cedar_preserves_final_decision_and_reports_skipped_errors) ... ok +test_cedar_rejects_error_messages_as_codes (test_adapters.AdapterTests.test_cedar_rejects_error_messages_as_codes) ... ok +test_cedar_rejects_string_as_identifier_collection (test_adapters.AdapterTests.test_cedar_rejects_string_as_identifier_collection) ... ok +test_factory_builds_and_validates_any_supported_family (test_adapters.AdapterTests.test_factory_builds_and_validates_any_supported_family) ... ok +test_factory_matches_cross_language_golden_event (test_adapters.AdapterTests.test_factory_matches_cross_language_golden_event) ... ok +test_factory_prevents_envelope_override (test_adapters.AdapterTests.test_factory_prevents_envelope_override) ... ok +test_factory_serializes_nanoseconds_without_precision_loss (test_adapters.AdapterTests.test_factory_serializes_nanoseconds_without_precision_loss) ... ok +test_opa_boolean_log_maps_without_copying_input_or_result (test_adapters.AdapterTests.test_opa_boolean_log_maps_without_copying_input_or_result) ... ok +test_opa_complex_result_requires_explicit_mapper (test_adapters.AdapterTests.test_opa_complex_result_requires_explicit_mapper) ... ok +test_opa_rejects_malformed_source_collections (test_adapters.AdapterTests.test_opa_rejects_malformed_source_collections) ... ok +test_policy_event_maps_challenge_and_excludes_free_form_content (test_agt_adapter.AgtAdapterTests.test_policy_event_maps_challenge_and_excludes_free_form_content) ... ok +test_policy_mapper_rejects_ambiguous_decision_and_reason_message (test_agt_adapter.AgtAdapterTests.test_policy_mapper_rejects_ambiguous_decision_and_reason_message) ... ok +test_sink_prevalidates_whole_batch_before_emission (test_agt_adapter.AgtAdapterTests.test_sink_prevalidates_whole_batch_before_emission) ... ok +test_sink_uses_source_result_sentinels_and_reports_projection_failure (test_agt_adapter.AgtAdapterTests.test_sink_uses_source_result_sentinels_and_reports_projection_failure) ... ok +test_bindings_reject_fields_that_are_absent_on_both_records (test_agt_approval.AgtApprovalAdapterTests.test_bindings_reject_fields_that_are_absent_on_both_records) ... ok +test_protocol_chain_preserves_policy_request_and_resolution_links (test_agt_approval.AgtApprovalAdapterTests.test_protocol_chain_preserves_policy_request_and_resolution_links) ... ok +test_request_rejects_wrong_policy_action_and_chain (test_agt_approval.AgtApprovalAdapterTests.test_request_rejects_wrong_policy_action_and_chain) ... ok +test_resolution_rejects_pre_request_time_and_malformed_chain_digest (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_pre_request_time_and_malformed_chain_digest) ... ok +test_resolution_rejects_wrong_request_and_wrong_action (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_wrong_request_and_wrong_action) ... ok +test_terminal_outcomes_map_without_treating_votes_as_resolutions (test_agt_approval.AgtApprovalAdapterTests.test_terminal_outcomes_map_without_treating_votes_as_resolutions) ... ok +test_action_audit_requires_full_action_digest_and_computes_duration (test_agt_audit.AgtAuditAdapterTests.test_action_audit_requires_full_action_digest_and_computes_duration) ... ok +test_action_rejects_missing_or_reversed_timing (test_agt_audit.AgtAuditAdapterTests.test_action_rejects_missing_or_reversed_timing) ... ok +test_blocked_action_is_denied_even_if_source_outcome_is_success (test_agt_audit.AgtAuditAdapterTests.test_blocked_action_is_denied_even_if_source_outcome_is_success) ... ok +test_policy_audit_maps_without_free_form_data_or_resource (test_agt_audit.AgtAuditAdapterTests.test_policy_audit_maps_without_free_form_data_or_resource) ... ok +test_action_payload_field_is_rejected_by_schema_and_privacy_gate (test_conformance.ConformanceTests.test_action_payload_field_is_rejected_by_schema_and_privacy_gate) ... ok +test_all_schemas_are_valid_draft_2020_12 (test_conformance.ConformanceTests.test_all_schemas_are_valid_draft_2020_12) ... ok +test_committed_suite_has_expected_verdicts (test_conformance.ConformanceTests.test_committed_suite_has_expected_verdicts) ... ok +test_nested_prohibited_key_is_rejected_independently (test_conformance.ConformanceTests.test_nested_prohibited_key_is_rejected_independently) ... ok +test_unknown_event_type_is_rejected (test_conformance.ConformanceTests.test_unknown_event_type_is_rejected) ... ok +test_uppercase_trace_id_is_rejected (test_conformance.ConformanceTests.test_uppercase_trace_id_is_rejected) ... ok +test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason (test_data_flow.DataFlowTests.test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason) ... ok +test_classifier_cannot_return_arbitrary_metadata (test_data_flow.DataFlowTests.test_classifier_cannot_return_arbitrary_metadata) ... ok +test_classifier_sees_content_but_event_contains_only_closed_metadata (test_data_flow.DataFlowTests.test_classifier_sees_content_but_event_contains_only_closed_metadata) ... ok +test_metadata_identifiers_reject_prose_paths_and_query_values (test_data_flow.DataFlowTests.test_metadata_identifiers_reject_prose_paths_and_query_values) ... ok +test_callback_and_returned_entry_cannot_mutate_retained_evidence (test_evidence.EvidenceTests.test_callback_and_returned_entry_cannot_mutate_retained_evidence) ... ok +test_chain_is_ordered_and_has_stable_golden_digest (test_evidence.EvidenceTests.test_chain_is_ordered_and_has_stable_golden_digest) ... ok +test_client_does_not_project_when_evidence_fails (test_evidence.EvidenceTests.test_client_does_not_project_when_evidence_fails) ... ok +test_client_isolates_operational_event_from_evidence_sink (test_evidence.EvidenceTests.test_client_isolates_operational_event_from_evidence_sink) ... ok +test_client_reports_evidence_persistence (test_evidence.EvidenceTests.test_client_reports_evidence_persistence) ... ok +test_context_mismatch_never_enters_evidence (test_evidence.EvidenceTests.test_context_mismatch_never_enters_evidence) ... ok +test_durable_callback_acknowledges_before_local_acceptance (test_evidence.EvidenceTests.test_durable_callback_acknowledges_before_local_acceptance) ... ok +test_failed_durable_ack_is_fail_closed_and_retryable (test_evidence.EvidenceTests.test_failed_durable_ack_is_fail_closed_and_retryable) ... ok +test_non_finite_number_cannot_enter_digest_chain (test_evidence.EvidenceTests.test_non_finite_number_cannot_enter_digest_chain) ... ok +test_rejects_cross_run_duplicate_overflow_and_append_after_seal (test_evidence.EvidenceTests.test_rejects_cross_run_duplicate_overflow_and_append_after_seal) ... ok +test_snapshot_is_defensive_and_unsealed_never_claims_complete (test_evidence.EvidenceTests.test_snapshot_is_defensive_and_unsealed_never_claims_complete) ... ok +test_action_metrics_exclude_action_and_agent_identifiers (test_otel_projectors.OTelProjectorTests.test_action_metrics_exclude_action_and_agent_identifiers) ... ok +test_classification_allowlist_is_bounded (test_otel_projectors.OTelProjectorTests.test_classification_allowlist_is_bounded) ... ok +test_classification_metric_is_allowlisted_or_collapsed (test_otel_projectors.OTelProjectorTests.test_classification_metric_is_allowlisted_or_collapsed) ... ok +test_metric_failure_is_reported_independently (test_otel_projectors.OTelProjectorTests.test_metric_failure_is_reported_independently) ... ok +test_real_metrics_record_usage_without_high_cardinality_ids (test_otel_projectors.OTelProjectorTests.test_real_metrics_record_usage_without_high_cardinality_ids) ... ok +test_real_otel_log_preserves_event_and_active_trace_context (test_otel_projectors.OTelProjectorTests.test_real_otel_log_preserves_event_and_active_trace_context) ... ok +test_async_handoff_creates_link_without_forcing_parentage (test_propagation.PropagationTests.test_async_handoff_creates_link_without_forcing_parentage) ... ok +test_header_lookup_is_case_insensitive (test_propagation.PropagationTests.test_header_lookup_is_case_insensitive) ... ok +test_injection_rejects_header_injection (test_propagation.PropagationTests.test_injection_rejects_header_injection) ... ok +test_link_requires_valid_w3c_context (test_propagation.PropagationTests.test_link_requires_valid_w3c_context) ... ok +test_sync_handoff_preserves_trace_and_agent_parent (test_propagation.PropagationTests.test_sync_handoff_preserves_trace_and_agent_parent) ... ok +test_complete_governed_workflow (test_reference_scenario.ReferenceScenarioTests.test_complete_governed_workflow) ... ok +test_contract_version_rejects_unsupported_spellings (test_repository_gates.RepositoryGateTests.test_contract_version_rejects_unsupported_spellings) ... ok +test_contract_versions_map_to_ecosystem_spellings (test_repository_gates.RepositoryGateTests.test_contract_versions_map_to_ecosystem_spellings) ... ok +test_declared_versions_are_consistent (test_repository_gates.RepositoryGateTests.test_declared_versions_are_consistent) ... ok +test_issue_templates_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_issue_templates_are_valid_yaml_when_parser_available) ... ok +test_npm_dist_tag_matches_the_declared_contract (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_matches_the_declared_contract) ... ok +test_npm_dist_tag_never_moves_latest_for_a_prerelease (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_never_moves_latest_for_a_prerelease) ... ok +test_npm_dist_tag_rejects_an_unsupported_version (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_rejects_an_unsupported_version) ... ok +test_otel_matrix_gate_detects_attribute_metric_and_family_drift (test_repository_gates.RepositoryGateTests.test_otel_matrix_gate_detects_attribute_metric_and_family_drift) ... ok +test_otel_matrix_matches_shipped_projection (test_repository_gates.RepositoryGateTests.test_otel_matrix_matches_shipped_projection) ... ok +test_release_tag_must_match_contract (test_repository_gates.RepositoryGateTests.test_release_tag_must_match_contract) ... ok +test_schema_gate_detects_changed_bytes (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_changed_bytes) ... ok +test_schema_gate_detects_missing_and_extra_files (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_missing_and_extra_files) ... ok +test_source_manifest_includes_otel_matrix (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_otel_matrix) ... ok +test_source_manifest_includes_release_policy (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_release_policy) ... ok +test_typescript_schemas_match_normative_bytes (test_repository_gates.RepositoryGateTests.test_typescript_schemas_match_normative_bytes) ... ok +test_workflows_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_workflows_are_valid_yaml_when_parser_available) ... ok +test_bundled_schemas_match_normative_schemas (test_sdk.SdkTests.test_bundled_schemas_match_normative_schemas) ... ok +test_context_mismatch_rejects_before_projection (test_sdk.SdkTests.test_context_mismatch_rejects_before_projection) ... ok +test_emits_correlated_span_event_and_log (test_sdk.SdkTests.test_emits_correlated_span_event_and_log) ... ok +test_explicit_attribute_allowlist_is_narrow (test_sdk.SdkTests.test_explicit_attribute_allowlist_is_narrow) ... ok +test_extension_attributes_are_deny_by_default (test_sdk.SdkTests.test_extension_attributes_are_deny_by_default) ... ok +test_log_body_is_a_deep_copy (test_sdk.SdkTests.test_log_body_is_a_deep_copy) ... ok +test_no_span_still_emits_run_correlated_log (test_sdk.SdkTests.test_no_span_still_emits_run_correlated_log) ... ok +test_privacy_violation_rejects_before_projection (test_sdk.SdkTests.test_privacy_violation_rejects_before_projection) ... ok +test_projection_failures_are_reported_independently (test_sdk.SdkTests.test_projection_failures_are_reported_independently) ... ok +test_real_otel_span_receives_event (test_sdk.SdkTests.test_real_otel_span_receives_event) ... ok +test_action_events_create_truthful_tool_transcript (test_trace_adapter.TraceAdapterTests.test_action_events_create_truthful_tool_transcript) ... ok +test_finalizes_signs_and_validates_official_trace_record (test_trace_adapter.TraceAdapterTests.test_finalizes_signs_and_validates_official_trace_record) ... ok +test_linked_terminal_approval_resolves_policy_challenge (test_trace_adapter.TraceAdapterTests.test_linked_terminal_approval_resolves_policy_challenge) ... ok +test_refuses_conflicting_policy_bundles (test_trace_adapter.TraceAdapterTests.test_refuses_conflicting_policy_bundles) ... ok +test_refuses_missing_signer (test_trace_adapter.TraceAdapterTests.test_refuses_missing_signer) ... ok +test_refuses_policy_digest_algorithm_trace_cannot_represent (test_trace_adapter.TraceAdapterTests.test_refuses_policy_digest_algorithm_trace_cannot_represent) ... ok +test_refuses_unranked_classification (test_trace_adapter.TraceAdapterTests.test_refuses_unranked_classification) ... ok +test_refuses_unsealed_or_incomplete_evidence (test_trace_adapter.TraceAdapterTests.test_refuses_unsealed_or_incomplete_evidence) ... ok +test_unbound_or_expired_approval_cannot_resolve_policy_challenge (test_trace_adapter.TraceAdapterTests.test_unbound_or_expired_approval_cannot_resolve_policy_challenge) ... ok +test_a_failure_inside_official_signing_is_reported_as_one (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_failure_inside_official_signing_is_reported_as_one) +A key that satisfies the shape check and then fails when used. ... ok +test_a_policy_decision_without_a_bundle_digest_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_policy_decision_without_a_bundle_digest_is_refused) ... ok +test_a_repeated_classification_cannot_rank_anything (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_repeated_classification_cannot_rank_anything) ... ok +test_a_run_with_no_data_flow_has_nothing_to_classify (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_data_flow_has_nothing_to_classify) ... ok +test_a_run_with_no_policy_decision_has_no_policy_to_bind (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_policy_decision_has_no_policy_to_bind) ... ok +test_a_taxonomy_the_configuration_does_not_name_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_taxonomy_the_configuration_does_not_name_is_refused) ... ok +test_an_empty_run_carries_no_chained_evidence (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_empty_run_carries_no_chained_evidence) ... ok +test_every_required_configuration_field_is_named_when_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_every_required_configuration_field_is_named_when_absent) ... ok +test_the_optional_dependency_is_named_when_it_is_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_the_optional_dependency_is_named_when_it_is_absent) ... ok +test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode) ... ok +test_accumulator_rejects_non_finite_external_cost (test_usage.UsageTests.test_accumulator_rejects_non_finite_external_cost) ... ok +test_bool_is_not_accepted_as_token_integer (test_usage.UsageTests.test_bool_is_not_accepted_as_token_integer) ... ok +test_cost_requires_finite_amount_and_explicit_provenance (test_usage.UsageTests.test_cost_requires_finite_amount_and_explicit_provenance) ... ok +test_reused_event_id_with_changed_data_is_rejected (test_usage.UsageTests.test_reused_event_id_with_changed_data_is_rejected) ... ok +test_rollup_deduplicates_and_reports_partial_coverage (test_usage.UsageTests.test_rollup_deduplicates_and_reports_partial_coverage) ... ok +test_rollup_rejects_non_leaf_and_mixed_currency (test_usage.UsageTests.test_rollup_rejects_non_leaf_and_mixed_currency) ... ok +test_rollups_match_shared_cross_language_vector (test_usage.UsageTests.test_rollups_match_shared_cross_language_vector) ... ok +test_schema_rejects_aggregate_cost_without_run_rollup (test_usage.UsageTests.test_schema_rejects_aggregate_cost_without_run_rollup) ... ok +test_unknown_price_is_absent_not_zero (test_usage.UsageTests.test_unknown_price_is_absent_not_zero) ... ok + +---------------------------------------------------------------------- +Ran 111 tests in 2.793s + +OK diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/README.md b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/README.md new file mode 100644 index 0000000..914e44f --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/README.md @@ -0,0 +1,24 @@ +# October 1, 2026 rerun + +Fresh virtual environment, Python 3.12.10 on Windows 11, with the package versions recorded in +`pinned/results.json` (the same set as the September 27 rerun: cryptography 50.0.0, +jsonschema 4.26.0, cbor2 5.9.0, agentrust-trace 0.9.0, opentelemetry-sdk 1.44.0). + +- `pinned/`: `reproduce.py --prepare-from` against fresh clones, so every source is a + `git archive` extract of its pin with the tar commit id checked, then `boundary_probes.py`. + agentrust-telemetry 111 tests OK; 13 of 13 fixtures; memory tests 35 passed; approval tests + 74 passed. The four telemetry logs match the September 27 logs except for timings. All + eleven probes match September 27. +- `later-revision/`: `boundary_probes.py` against the commits in + `../rerun-2026-09-27/later-revision/COMMITS.txt`. All eleven probes match September 27. +- `current-main/`: `boundary_probes.py` against origin/main on October 1 (agentrust-telemetry + c86753cad6bbe9f00c5080489a12e0f94df34899, weight-custody-manifest + 5ef8c122479f5df79ad8a7c04b70f4a43bbdb313, agent-manifest + fed9aeb091e4c77e0b40e12e959bee30b52e3c75). The four telemetry probes this paper relies on + give the same result as at the pin. + +Also checked on October 1 and recorded in +`../../../agentrust-telemetry/experiments/results/rerun-2026-10-01/`: the TypeScript suite at +the pin (41 of 41 pass), and the TRACE finalizer defect fixed in agentrust-telemetry PR 65 +(the pinned Python and TypeScript finalizers sign an edited, truncated or digest-substituted +snapshot). diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/current-main/boundary-probes.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/current-main/boundary-probes.json new file mode 100644 index 0000000..8579f52 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/current-main/boundary-probes.json @@ -0,0 +1,61 @@ +{ + "captured_at": "2026-10-01T18:46:45+00:00", + "results": [ + { + "probe": "export_failure_preserves_accepted_event", + "observed": true, + "meaning": "Evidence acceptance survives a later operational projection error; memory mode is not durable storage." + }, + { + "probe": "failed_ack_suppresses_projection", + "observed": true, + "meaning": "No operational projection or local chain advance after callback refusal." + }, + { + "probe": "empty_complete_declaration_is_accepted", + "observed": true, + "meaning": "Counterexample: seal does not independently prove capture completeness." + }, + { + "probe": "external_commit_retry_requires_sink_idempotency", + "observed": true, + "meaning": "Counterexample: no cross-store transaction or built-in exactly-once persistence." + }, + { + "probe": "signed_bad_memory_is_authentic_not_acceptable", + "observed": true, + "meaning": "Signature verification authenticates the negative finding. The broker must reject it separately." + }, + { + "probe": "signature_verifier_has_no_freshness_input", + "observed": true, + "meaning": "Broker challenge comparison, not signature verification alone, establishes request freshness." + }, + { + "probe": "approval_signer_accepts_method_parameter", + "observed": true, + "meaning": "Whether this revision lets the human signer cover approval_method; the probe passes it when available." + }, + { + "probe": "approval_method_label_is_outside_approval_signature", + "observed": false, + "meaning": "True means the unaltered approval verifies and the method-label alteration still verifies (label outside the signature). False with the unaltered approval verifying means the label is bound. Not a full runtime test." + }, + { + "probe": "approval_unaltered_verifies", + "observed": true, + "meaning": "Control for the previous probe." + }, + { + "probe": "approval_helper_accepts_zero_or_missing_duration", + "observed": false, + "meaning": "True means the single-approval helper accepts approval_duration_seconds of 0 or absent. The integrated verifier applies its own expiry logic." + }, + { + "probe": "requirement_bound_approval_appendable", + "observed": true, + "meaning": "Issuer pre-image preserves requirements while normalizing only approvals." + } + ], + "limits": "Single-process software probes; no hardware or legal conclusion." +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/later-revision/boundary-probes.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/later-revision/boundary-probes.json new file mode 100644 index 0000000..93016b9 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/later-revision/boundary-probes.json @@ -0,0 +1,61 @@ +{ + "captured_at": "2026-10-01T18:46:42+00:00", + "results": [ + { + "probe": "export_failure_preserves_accepted_event", + "observed": true, + "meaning": "Evidence acceptance survives a later operational projection error; memory mode is not durable storage." + }, + { + "probe": "failed_ack_suppresses_projection", + "observed": true, + "meaning": "No operational projection or local chain advance after callback refusal." + }, + { + "probe": "empty_complete_declaration_is_accepted", + "observed": true, + "meaning": "Counterexample: seal does not independently prove capture completeness." + }, + { + "probe": "external_commit_retry_requires_sink_idempotency", + "observed": true, + "meaning": "Counterexample: no cross-store transaction or built-in exactly-once persistence." + }, + { + "probe": "signed_bad_memory_is_authentic_not_acceptable", + "observed": true, + "meaning": "Signature verification authenticates the negative finding. The broker must reject it separately." + }, + { + "probe": "signature_verifier_has_no_freshness_input", + "observed": true, + "meaning": "Broker challenge comparison, not signature verification alone, establishes request freshness." + }, + { + "probe": "approval_signer_accepts_method_parameter", + "observed": true, + "meaning": "Whether this revision lets the human signer cover approval_method; the probe passes it when available." + }, + { + "probe": "approval_method_label_is_outside_approval_signature", + "observed": false, + "meaning": "True means the unaltered approval verifies and the method-label alteration still verifies (label outside the signature). False with the unaltered approval verifying means the label is bound. Not a full runtime test." + }, + { + "probe": "approval_unaltered_verifies", + "observed": true, + "meaning": "Control for the previous probe." + }, + { + "probe": "approval_helper_accepts_zero_or_missing_duration", + "observed": false, + "meaning": "True means the single-approval helper accepts approval_duration_seconds of 0 or absent. The integrated verifier applies its own expiry logic." + }, + { + "probe": "requirement_bound_approval_appendable", + "observed": true, + "meaning": "Issuer pre-image preserves requirements while normalizing only approvals." + } + ], + "limits": "Single-process software probes; no hardware or legal conclusion." +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/approval-tests.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/approval-tests.txt new file mode 100644 index 0000000..e061b16 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/approval-tests.txt @@ -0,0 +1,91 @@ +============================= test session starts ============================= +platform win32 -- Python 3.12.10, pytest-8.4.2, pluggy-1.6.0 -- \Scripts\python.exe +rootdir: \agent-manifest\python +configfile: pyproject.toml +collecting ... collected 74 items + +tests/test_signing.py::test_pre_image_excludes_attestation PASSED [ 1%] +tests/test_signing.py::test_pre_image_excludes_signature PASSED [ 2%] +tests/test_signing.py::test_pre_image_includes_all_signed_fields PASSED [ 4%] +tests/test_signing.py::test_pre_image_is_rfc8785 PASSED [ 5%] +tests/test_signing.py::test_ed25519_sign_verify_roundtrip PASSED [ 6%] +tests/test_signing.py::test_ed25519_wrong_message_fails PASSED [ 8%] +tests/test_signing.py::test_ed25519_wrong_key_fails PASSED [ 9%] +tests/test_signing.py::test_ed25519_truncated_signature_fails PASSED [ 10%] +tests/test_signing.py::test_ed25519_wrong_algorithm_label_not_accepted PASSED [ 12%] +tests/test_signing.py::test_ed25519_signed_fields_list_correct PASSED [ 13%] +tests/test_signing.py::test_ed25519_sign_block_validates_against_model PASSED [ 14%] +tests/test_signing.py::test_ed25519_small_order_key_rejected PASSED [ 16%] +tests/test_signing.py::test_ed25519_all_small_order_points_rejected PASSED [ 17%] +tests/test_signing.py::test_ed25519_truncated_sig_raises_invalid_signature PASSED [ 18%] +tests/test_signing.py::test_b64url_decode_rejects_plus PASSED [ 20%] +tests/test_signing.py::test_b64url_decode_rejects_slash PASSED [ 21%] +tests/test_signing.py::test_b64url_decode_accepts_valid PASSED [ 22%] +tests/test_signing.py::test_ed25519_public_key_roundtrip_b64url PASSED [ 24%] +tests/test_signing.py::test_ml_dsa65_sign_verify_roundtrip PASSED [ 25%] +tests/test_signing.py::test_ml_dsa65_wrong_message_fails PASSED [ 27%] +tests/test_signing.py::test_hybrid_sign_verify_roundtrip PASSED [ 28%] +tests/test_signing.py::test_hybrid_tampered_classical_fails PASSED [ 29%] +tests/test_signing.py::test_hybrid_tampered_pq_fails PASSED [ 31%] +tests/test_signing.py::test_hybrid_both_components_cover_same_pre_image PASSED [ 32%] +tests/test_signing.py::test_signed_fields_match_spec_coverage_table PASSED [ 33%] +tests/test_signing.py::test_pre_image_normalizes_hitl_approvals_to_empty PASSED [ 35%] +tests/test_signing.py::test_pre_image_keeps_hitl_required_tamper_evident PASSED [ 36%] +tests/test_signing.py::test_approvals_attach_post_issuance_without_resigning PASSED [ 37%] +tests/test_signing.py::test_newly_signed_fields_are_tamper_evident PASSED [ 39%] +tests/test_signing.py::test_ed25519_keypair_repr_redacts_private_key PASSED [ 40%] +tests/test_signing.py::test_ed25519_keypair_str_equals_repr PASSED [ 41%] +tests/test_signing.py::test_ed25519_keypair_private_b64url_roundtrip PASSED [ 43%] +tests/test_signing.py::test_ed25519_from_private_bytes_valid PASSED [ 44%] +tests/test_signing.py::test_ed25519_from_private_bytes_malformed_raises PASSED [ 45%] +tests/test_signing.py::test_ed25519_from_private_bytes_too_short_raises PASSED [ 47%] +tests/test_signing.py::test_ed25519_verifier_wrong_length_key_raises PASSED [ 48%] +tests/test_signing.py::test_ed25519_verifier_zero_length_key_raises PASSED [ 50%] +tests/test_signing.py::test_ed25519_verifier_rsa_sized_bytes_raises PASSED [ 51%] +tests/test_signing.py::test_ed25519_signer_signed_at_is_iso8601 PASSED [ 52%] +tests/test_signing.py::test_ml_dsa65_signer_signed_at_is_iso8601 PASSED [ 54%] +tests/test_signing.py::test_hybrid_signer_signed_at_is_iso8601 PASSED [ 55%] +tests/test_delegation_hitl.py::test_hop_pre_image_includes_manifest_id PASSED [ 56%] +tests/test_delegation_hitl.py::test_hop_pre_image_includes_scope PASSED [ 58%] +tests/test_delegation_hitl.py::test_hop_pre_image_deterministic PASSED [ 59%] +tests/test_delegation_hitl.py::test_hop_pre_image_different_hops PASSED [ 60%] +tests/test_delegation_hitl.py::test_delegation_sign_verify_single_hop PASSED [ 62%] +tests/test_delegation_hitl.py::test_delegation_wrong_key_fails PASSED [ 63%] +tests/test_delegation_hitl.py::test_delegation_wrong_manifest_id_fails PASSED [ 64%] +tests/test_delegation_hitl.py::test_scope_laundering_detected PASSED [ 66%] +tests/test_delegation_hitl.py::test_depth_exceeded_raises PASSED [ 67%] +tests/test_delegation_hitl.py::test_empty_chain_passes PASSED [ 68%] +tests/test_delegation_hitl.py::test_missing_public_key_raises PASSED [ 70%] +tests/test_delegation_hitl.py::test_root_principal_must_match_manifest_issuer PASSED [ 71%] +tests/test_delegation_hitl.py::test_root_principal_matching_issuer_passes PASSED [ 72%] +tests/test_delegation_hitl.py::test_root_principal_matches_via_principal_manifest_id PASSED [ 74%] +tests/test_delegation_hitl.py::test_child_dropping_parent_constraint_is_rejected PASSED [ 75%] +tests/test_delegation_hitl.py::test_child_adding_constraint_is_allowed PASSED [ 77%] +tests/test_delegation_hitl.py::test_child_raising_ttl_is_rejected PASSED [ 78%] +tests/test_delegation_hitl.py::test_child_unbounded_ttl_under_bounded_parent_is_rejected PASSED [ 79%] +tests/test_delegation_hitl.py::test_child_raising_max_delegation_depth_is_rejected PASSED [ 81%] +tests/test_delegation_hitl.py::test_child_delegated_late_with_equal_ttl_outlives_parent_is_rejected PASSED [ 82%] +tests/test_delegation_hitl.py::test_child_delegated_late_with_shorter_ttl_still_within_parent_window_passes PASSED [ 83%] +tests/test_delegation_hitl.py::test_mixed_z_and_naive_delegated_at_still_refuses_on_absolute_expiry PASSED [ 85%] +tests/test_delegation_hitl.py::test_approval_pre_image_includes_manifest_id PASSED [ 86%] +tests/test_delegation_hitl.py::test_approval_pre_image_includes_scope PASSED [ 87%] +tests/test_delegation_hitl.py::test_approval_sign_verify PASSED [ 89%] +tests/test_delegation_hitl.py::test_approval_wrong_key_fails PASSED [ 90%] +tests/test_delegation_hitl.py::test_approval_wrong_manifest_id_fails PASSED [ 91%] +tests/test_delegation_hitl.py::test_approval_scope_change_fails PASSED [ 93%] +tests/test_delegation_hitl.py::test_approval_expired_raises PASSED [ 94%] +tests/test_delegation_hitl.py::test_approval_no_duration_does_not_expire PASSED [ 95%] +tests/test_delegation_hitl.py::test_hitl_approval_rejects_spiffe_approver_id PASSED [ 97%] +tests/test_delegation_hitl.py::test_hitl_approval_accepts_mailto_approver_id PASSED [ 98%] +tests/test_delegation_hitl.py::test_hitl_approval_accepts_did_approver_id PASSED [100%] + +============================== warnings summary =============================== +..\..\..\venv-pin\Lib\site-packages\_pytest\config\__init__.py:1474 + \Lib\site-packages\_pytest\config\__init__.py:1474: PytestConfigWarning: Unknown config option: asyncio_mode + + self._warn_or_fail_if_strict(f"Unknown config option: {key}\n") + +-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +======================== 74 passed, 1 warning in 1.41s ======================== + +STDERR diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/boundary-probes.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/boundary-probes.json new file mode 100644 index 0000000..3ddcfd8 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/boundary-probes.json @@ -0,0 +1,61 @@ +{ + "captured_at": "2026-10-01T18:46:08+00:00", + "results": [ + { + "probe": "export_failure_preserves_accepted_event", + "observed": true, + "meaning": "Evidence acceptance survives a later operational projection error; memory mode is not durable storage." + }, + { + "probe": "failed_ack_suppresses_projection", + "observed": true, + "meaning": "No operational projection or local chain advance after callback refusal." + }, + { + "probe": "empty_complete_declaration_is_accepted", + "observed": true, + "meaning": "Counterexample: seal does not independently prove capture completeness." + }, + { + "probe": "external_commit_retry_requires_sink_idempotency", + "observed": true, + "meaning": "Counterexample: no cross-store transaction or built-in exactly-once persistence." + }, + { + "probe": "signed_bad_memory_is_authentic_not_acceptable", + "observed": true, + "meaning": "Signature verification authenticates the negative finding. The broker must reject it separately." + }, + { + "probe": "signature_verifier_has_no_freshness_input", + "observed": true, + "meaning": "Broker challenge comparison, not signature verification alone, establishes request freshness." + }, + { + "probe": "approval_signer_accepts_method_parameter", + "observed": false, + "meaning": "Whether this revision lets the human signer cover approval_method; the probe passes it when available." + }, + { + "probe": "approval_method_label_is_outside_approval_signature", + "observed": true, + "meaning": "True means the unaltered approval verifies and the method-label alteration still verifies (label outside the signature). False with the unaltered approval verifying means the label is bound. Not a full runtime test." + }, + { + "probe": "approval_unaltered_verifies", + "observed": true, + "meaning": "Control for the previous probe." + }, + { + "probe": "approval_helper_accepts_zero_or_missing_duration", + "observed": true, + "meaning": "True means the single-approval helper accepts approval_duration_seconds of 0 or absent. The integrated verifier applies its own expiry logic." + }, + { + "probe": "requirement_bound_approval_appendable", + "observed": true, + "meaning": "Issuer pre-image preserves requirements while normalizing only approvals." + } + ], + "limits": "Single-process software probes; no hardware or legal conclusion." +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/memory-tests.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/memory-tests.txt new file mode 100644 index 0000000..306aa06 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/memory-tests.txt @@ -0,0 +1,45 @@ +============================= test session starts ============================= +platform win32 -- Python 3.12.10, pytest-8.4.2, pluggy-1.6.0 -- \Scripts\python.exe +rootdir: \weight-custody-manifest\python +configfile: pyproject.toml +collecting ... collected 35 items + +tests/test_memory_sweep.py::test_real_full_range_write_read_transcript_verifies PASSED [ 2%] +tests/test_memory_sweep.py::test_controlled_aliased_mapping_is_detected PASSED [ 5%] +tests/test_memory_sweep.py::test_omitted_range_and_host_tampering_are_rejected PASSED [ 8%] +tests/test_memory_sweep.py::test_host_authored_result_signed_by_wrong_key_is_rejected PASSED [ 11%] +tests/test_memory_sweep.py::test_short_secret_and_invalid_range_fail_closed PASSED [ 14%] +tests/test_kbs.py::test_happy_path_releases_key PASSED [ 17%] +tests/test_kbs.py::test_release_denies_when_manifest_has_no_out_of_band_authorization PASSED [ 20%] +tests/test_kbs.py::test_attacker_manifest_for_same_weights_is_rejected_by_exact_pin PASSED [ 22%] +tests/test_kbs.py::test_replayed_nonce_denied PASSED [ 25%] +tests/test_kbs.py::test_wrong_platform_denied PASSED [ 28%] +tests/test_kbs.py::test_unknown_serving_image_denied PASSED [ 31%] +tests/test_kbs.py::test_revoked_serving_image_denied PASSED [ 34%] +tests/test_kbs.py::test_prefer_current_refuses_retiring PASSED [ 37%] +tests/test_kbs.py::test_retiring_past_retire_after_denied PASSED [ 40%] +tests/test_kbs.py::test_gpu_absent_denied PASSED [ 42%] +tests/test_kbs.py::test_gpu_binding_broken_denied PASSED [ 45%] +tests/test_kbs.py::test_gpu_measurement_mismatch_denied PASSED [ 48%] +tests/test_kbs.py::test_attestation_key_revoked_denied PASSED [ 51%] +tests/test_kbs.py::test_stale_revocation_cache_denied PASSED [ 54%] +tests/test_kbs.py::test_no_key_for_weights_hash_denied PASSED [ 57%] +tests/test_kbs.py::test_memory_fingerprint_required_but_absent_denied PASSED [ 60%] +tests/test_kbs.py::test_memory_fingerprint_aliasing_denied PASSED [ 62%] +tests/test_kbs.py::test_memory_fingerprint_clean_releases PASSED [ 65%] +tests/test_kbs.py::test_memory_fingerprint_host_authored_and_replayed_results_are_denied PASSED [ 68%] +tests/test_kbs.py::test_channel_binding_off_by_default_returns_raw_key PASSED [ 71%] +tests/test_kbs.py::test_channel_binding_required_seals_key_to_enclave PASSED [ 74%] +tests/test_kbs.py::test_channel_binding_required_but_absent_denied PASSED [ 77%] +tests/test_kbs.py::test_channel_binding_malformed_transport_key_denied PASSED [ 80%] +tests/test_kbs.py::test_naive_retire_after_is_read_as_utc_and_does_not_raise PASSED [ 82%] +tests/test_kbs.py::test_naive_retire_after_still_expires PASSED [ 85%] +tests/test_kbs.py::test_aware_retire_after_keeps_its_offset PASSED [ 88%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[soon] PASSED [ 91%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[] PASSED [ 94%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[2026-13-45T99:99:99] PASSED [ 97%] +tests/test_kbs.py::test_unparseable_retire_after_fails_closed[next tuesday] PASSED [100%] + +============================= 35 passed in 0.53s ============================== + +STDERR diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/results.json b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/results.json new file mode 100644 index 0000000..6951dac --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/results.json @@ -0,0 +1,107 @@ +{ + "captured_at": "2026-10-01T18:45:50+00:00", + "python": "3.12.10", + "platform": "Windows-11", + "dependencies": { + "pytest": "8.4.2", + "cryptography": "50.0.0", + "pydantic": "2.13.4", + "jsonschema": "4.26.0", + "referencing": "0.37.0", + "rfc8785": "0.1.4", + "cbor2": "5.9.0", + "agentrust-trace": "0.9.0", + "opentelemetry-sdk": "1.44.0", + "jcs": "0.2.1", + "PyYAML": "6.0.3" + }, + "sources": { + "agentrust-telemetry": { + "commit": "29c13cfa4047a0f5784a90df63b22a3568453158", + "verified_by": "git archive of the pinned commit (tar commit id checked)" + }, + "weight-custody-manifest": { + "commit": "2acedfa883204f7d1fd457d3ee603198d85be82c", + "verified_by": "git archive of the pinned commit (tar commit id checked)" + }, + "agent-manifest": { + "commit": "934809709a2815695d65cfacb45dc0a164286046", + "verified_by": "git archive of the pinned commit (tar commit id checked)" + } + }, + "results": [ + { + "name": "telemetry-tests", + "cwd": "agentrust-telemetry", + "command": [ + "python", + "-m", + "unittest", + "discover", + "-s", + "tests", + "-v" + ], + "exit_code": 0, + "summary": "111 tests, OK", + "log": "telemetry-tests.txt", + "log_sha256": "2374d65a78eb3fffda834d8ec4fc358e18ec851a557327e207760ef0dc5b4584" + }, + { + "name": "telemetry-conformance", + "cwd": "agentrust-telemetry", + "command": [ + "python", + "conformance/runner/validate.py" + ], + "exit_code": 0, + "summary": "13 of 13 fixtures returned the expected verdict", + "log": "telemetry-conformance.txt", + "log_sha256": "f1af2ff732a78ef035226e1190421fcb67881644ff2936b5768131d08ac8e3ab" + }, + { + "name": "memory-tests", + "cwd": "weight-custody-manifest/python", + "command": [ + "python", + "-m", + "pytest", + "-p", + "no:cacheprovider", + "-o", + "pythonpath=src", + "tests/test_memory_sweep.py", + "tests/test_kbs.py", + "-v" + ], + "exit_code": 0, + "summary": "35 passed", + "log": "memory-tests.txt", + "log_sha256": "da1988be46556341113eebcf5ff9b70efa42ce2501871bb3a7a256b22cbddd78" + }, + { + "name": "approval-tests", + "cwd": "agent-manifest/python", + "command": [ + "python", + "-m", + "pytest", + "-p", + "no:cacheprovider", + "-o", + "pythonpath=src", + "tests/test_signing.py", + "tests/test_delegation_hitl.py", + "-v" + ], + "exit_code": 0, + "summary": "74 passed, 1 warning", + "log": "approval-tests.txt", + "log_sha256": "64a4116df7a121eecacf3af9555fe11807501694b8d12f8329615318a87c2b42" + } + ], + "limits": [ + "Local software tests only; no protected-hardware execution.", + "Tests and implementation share a repository and are not independent validation." + ] +} diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-conformance.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-conformance.txt new file mode 100644 index 0000000..6fd65da --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-conformance.txt @@ -0,0 +1,15 @@ +PASS conformance\fixtures\valid\action.json +PASS conformance\fixtures\valid\approval.json +PASS conformance\fixtures\valid\data-flow.json +PASS conformance\fixtures\valid\evidence.json +PASS conformance\fixtures\valid\policy-decision.json +PASS conformance\fixtures\valid\usage.json +PASS conformance\fixtures\invalid\action-without-digest.json +PASS conformance\fixtures\invalid\aggregate-cost-without-rollup.json +PASS conformance\fixtures\invalid\model-call-with-rollup.json +PASS conformance\fixtures\invalid\numeric-timestamp.json +PASS conformance\fixtures\invalid\raw-content.json +PASS conformance\fixtures\invalid\usage-without-measurement.json +PASS conformance\fixtures\invalid\zero-trace-id.json + +STDERR diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-tests.txt b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-tests.txt new file mode 100644 index 0000000..0f31cec --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/experiments/results/rerun-2026-10-01/pinned/telemetry-tests.txt @@ -0,0 +1,135 @@ +PASS conformance\fixtures\valid\action.json +PASS conformance\fixtures\valid\approval.json +PASS conformance\fixtures\valid\data-flow.json +PASS conformance\fixtures\valid\evidence.json +PASS conformance\fixtures\valid\policy-decision.json +PASS conformance\fixtures\valid\usage.json +PASS conformance\fixtures\invalid\action-without-digest.json +PASS conformance\fixtures\invalid\aggregate-cost-without-rollup.json +PASS conformance\fixtures\invalid\model-call-with-rollup.json +PASS conformance\fixtures\invalid\numeric-timestamp.json +PASS conformance\fixtures\invalid\raw-content.json +PASS conformance\fixtures\invalid\usage-without-measurement.json +PASS conformance\fixtures\invalid\zero-trace-id.json +PASS contract=0.1.0-alpha.2 python=0.1.0a2 npm_name=@agentrust-io/telemetry npm=0.1.0-alpha.2 +PASS OTel GenAI matrix covers 16 span attributes, 8 metrics, and 6 event families +PASS TypeScript schemas match normative bytes + +STDERR +test_cedar_preserves_final_decision_and_reports_skipped_errors (test_adapters.AdapterTests.test_cedar_preserves_final_decision_and_reports_skipped_errors) ... ok +test_cedar_rejects_error_messages_as_codes (test_adapters.AdapterTests.test_cedar_rejects_error_messages_as_codes) ... ok +test_cedar_rejects_string_as_identifier_collection (test_adapters.AdapterTests.test_cedar_rejects_string_as_identifier_collection) ... ok +test_factory_builds_and_validates_any_supported_family (test_adapters.AdapterTests.test_factory_builds_and_validates_any_supported_family) ... ok +test_factory_matches_cross_language_golden_event (test_adapters.AdapterTests.test_factory_matches_cross_language_golden_event) ... ok +test_factory_prevents_envelope_override (test_adapters.AdapterTests.test_factory_prevents_envelope_override) ... ok +test_factory_serializes_nanoseconds_without_precision_loss (test_adapters.AdapterTests.test_factory_serializes_nanoseconds_without_precision_loss) ... ok +test_opa_boolean_log_maps_without_copying_input_or_result (test_adapters.AdapterTests.test_opa_boolean_log_maps_without_copying_input_or_result) ... ok +test_opa_complex_result_requires_explicit_mapper (test_adapters.AdapterTests.test_opa_complex_result_requires_explicit_mapper) ... ok +test_opa_rejects_malformed_source_collections (test_adapters.AdapterTests.test_opa_rejects_malformed_source_collections) ... ok +test_policy_event_maps_challenge_and_excludes_free_form_content (test_agt_adapter.AgtAdapterTests.test_policy_event_maps_challenge_and_excludes_free_form_content) ... ok +test_policy_mapper_rejects_ambiguous_decision_and_reason_message (test_agt_adapter.AgtAdapterTests.test_policy_mapper_rejects_ambiguous_decision_and_reason_message) ... ok +test_sink_prevalidates_whole_batch_before_emission (test_agt_adapter.AgtAdapterTests.test_sink_prevalidates_whole_batch_before_emission) ... ok +test_sink_uses_source_result_sentinels_and_reports_projection_failure (test_agt_adapter.AgtAdapterTests.test_sink_uses_source_result_sentinels_and_reports_projection_failure) ... ok +test_bindings_reject_fields_that_are_absent_on_both_records (test_agt_approval.AgtApprovalAdapterTests.test_bindings_reject_fields_that_are_absent_on_both_records) ... ok +test_protocol_chain_preserves_policy_request_and_resolution_links (test_agt_approval.AgtApprovalAdapterTests.test_protocol_chain_preserves_policy_request_and_resolution_links) ... ok +test_request_rejects_wrong_policy_action_and_chain (test_agt_approval.AgtApprovalAdapterTests.test_request_rejects_wrong_policy_action_and_chain) ... ok +test_resolution_rejects_pre_request_time_and_malformed_chain_digest (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_pre_request_time_and_malformed_chain_digest) ... ok +test_resolution_rejects_wrong_request_and_wrong_action (test_agt_approval.AgtApprovalAdapterTests.test_resolution_rejects_wrong_request_and_wrong_action) ... ok +test_terminal_outcomes_map_without_treating_votes_as_resolutions (test_agt_approval.AgtApprovalAdapterTests.test_terminal_outcomes_map_without_treating_votes_as_resolutions) ... ok +test_action_audit_requires_full_action_digest_and_computes_duration (test_agt_audit.AgtAuditAdapterTests.test_action_audit_requires_full_action_digest_and_computes_duration) ... ok +test_action_rejects_missing_or_reversed_timing (test_agt_audit.AgtAuditAdapterTests.test_action_rejects_missing_or_reversed_timing) ... ok +test_blocked_action_is_denied_even_if_source_outcome_is_success (test_agt_audit.AgtAuditAdapterTests.test_blocked_action_is_denied_even_if_source_outcome_is_success) ... ok +test_policy_audit_maps_without_free_form_data_or_resource (test_agt_audit.AgtAuditAdapterTests.test_policy_audit_maps_without_free_form_data_or_resource) ... ok +test_action_payload_field_is_rejected_by_schema_and_privacy_gate (test_conformance.ConformanceTests.test_action_payload_field_is_rejected_by_schema_and_privacy_gate) ... ok +test_all_schemas_are_valid_draft_2020_12 (test_conformance.ConformanceTests.test_all_schemas_are_valid_draft_2020_12) ... ok +test_committed_suite_has_expected_verdicts (test_conformance.ConformanceTests.test_committed_suite_has_expected_verdicts) ... ok +test_nested_prohibited_key_is_rejected_independently (test_conformance.ConformanceTests.test_nested_prohibited_key_is_rejected_independently) ... ok +test_unknown_event_type_is_rejected (test_conformance.ConformanceTests.test_unknown_event_type_is_rejected) ... ok +test_uppercase_trace_id_is_rejected (test_conformance.ConformanceTests.test_uppercase_trace_id_is_rejected) ... ok +test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason (test_data_flow.DataFlowTests.test_agt_decision_maps_tier_and_omits_categories_owner_geography_reason) ... ok +test_classifier_cannot_return_arbitrary_metadata (test_data_flow.DataFlowTests.test_classifier_cannot_return_arbitrary_metadata) ... ok +test_classifier_sees_content_but_event_contains_only_closed_metadata (test_data_flow.DataFlowTests.test_classifier_sees_content_but_event_contains_only_closed_metadata) ... ok +test_metadata_identifiers_reject_prose_paths_and_query_values (test_data_flow.DataFlowTests.test_metadata_identifiers_reject_prose_paths_and_query_values) ... ok +test_callback_and_returned_entry_cannot_mutate_retained_evidence (test_evidence.EvidenceTests.test_callback_and_returned_entry_cannot_mutate_retained_evidence) ... ok +test_chain_is_ordered_and_has_stable_golden_digest (test_evidence.EvidenceTests.test_chain_is_ordered_and_has_stable_golden_digest) ... ok +test_client_does_not_project_when_evidence_fails (test_evidence.EvidenceTests.test_client_does_not_project_when_evidence_fails) ... ok +test_client_isolates_operational_event_from_evidence_sink (test_evidence.EvidenceTests.test_client_isolates_operational_event_from_evidence_sink) ... ok +test_client_reports_evidence_persistence (test_evidence.EvidenceTests.test_client_reports_evidence_persistence) ... ok +test_context_mismatch_never_enters_evidence (test_evidence.EvidenceTests.test_context_mismatch_never_enters_evidence) ... ok +test_durable_callback_acknowledges_before_local_acceptance (test_evidence.EvidenceTests.test_durable_callback_acknowledges_before_local_acceptance) ... ok +test_failed_durable_ack_is_fail_closed_and_retryable (test_evidence.EvidenceTests.test_failed_durable_ack_is_fail_closed_and_retryable) ... ok +test_non_finite_number_cannot_enter_digest_chain (test_evidence.EvidenceTests.test_non_finite_number_cannot_enter_digest_chain) ... ok +test_rejects_cross_run_duplicate_overflow_and_append_after_seal (test_evidence.EvidenceTests.test_rejects_cross_run_duplicate_overflow_and_append_after_seal) ... ok +test_snapshot_is_defensive_and_unsealed_never_claims_complete (test_evidence.EvidenceTests.test_snapshot_is_defensive_and_unsealed_never_claims_complete) ... ok +test_action_metrics_exclude_action_and_agent_identifiers (test_otel_projectors.OTelProjectorTests.test_action_metrics_exclude_action_and_agent_identifiers) ... ok +test_classification_allowlist_is_bounded (test_otel_projectors.OTelProjectorTests.test_classification_allowlist_is_bounded) ... ok +test_classification_metric_is_allowlisted_or_collapsed (test_otel_projectors.OTelProjectorTests.test_classification_metric_is_allowlisted_or_collapsed) ... ok +test_metric_failure_is_reported_independently (test_otel_projectors.OTelProjectorTests.test_metric_failure_is_reported_independently) ... ok +test_real_metrics_record_usage_without_high_cardinality_ids (test_otel_projectors.OTelProjectorTests.test_real_metrics_record_usage_without_high_cardinality_ids) ... ok +test_real_otel_log_preserves_event_and_active_trace_context (test_otel_projectors.OTelProjectorTests.test_real_otel_log_preserves_event_and_active_trace_context) ... ok +test_async_handoff_creates_link_without_forcing_parentage (test_propagation.PropagationTests.test_async_handoff_creates_link_without_forcing_parentage) ... ok +test_header_lookup_is_case_insensitive (test_propagation.PropagationTests.test_header_lookup_is_case_insensitive) ... ok +test_injection_rejects_header_injection (test_propagation.PropagationTests.test_injection_rejects_header_injection) ... ok +test_link_requires_valid_w3c_context (test_propagation.PropagationTests.test_link_requires_valid_w3c_context) ... ok +test_sync_handoff_preserves_trace_and_agent_parent (test_propagation.PropagationTests.test_sync_handoff_preserves_trace_and_agent_parent) ... ok +test_complete_governed_workflow (test_reference_scenario.ReferenceScenarioTests.test_complete_governed_workflow) ... ok +test_contract_version_rejects_unsupported_spellings (test_repository_gates.RepositoryGateTests.test_contract_version_rejects_unsupported_spellings) ... ok +test_contract_versions_map_to_ecosystem_spellings (test_repository_gates.RepositoryGateTests.test_contract_versions_map_to_ecosystem_spellings) ... ok +test_declared_versions_are_consistent (test_repository_gates.RepositoryGateTests.test_declared_versions_are_consistent) ... ok +test_issue_templates_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_issue_templates_are_valid_yaml_when_parser_available) ... ok +test_npm_dist_tag_matches_the_declared_contract (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_matches_the_declared_contract) ... ok +test_npm_dist_tag_never_moves_latest_for_a_prerelease (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_never_moves_latest_for_a_prerelease) ... ok +test_npm_dist_tag_rejects_an_unsupported_version (test_repository_gates.RepositoryGateTests.test_npm_dist_tag_rejects_an_unsupported_version) ... ok +test_otel_matrix_gate_detects_attribute_metric_and_family_drift (test_repository_gates.RepositoryGateTests.test_otel_matrix_gate_detects_attribute_metric_and_family_drift) ... ok +test_otel_matrix_matches_shipped_projection (test_repository_gates.RepositoryGateTests.test_otel_matrix_matches_shipped_projection) ... ok +test_release_tag_must_match_contract (test_repository_gates.RepositoryGateTests.test_release_tag_must_match_contract) ... ok +test_schema_gate_detects_changed_bytes (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_changed_bytes) ... ok +test_schema_gate_detects_missing_and_extra_files (test_repository_gates.RepositoryGateTests.test_schema_gate_detects_missing_and_extra_files) ... ok +test_source_manifest_includes_otel_matrix (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_otel_matrix) ... ok +test_source_manifest_includes_release_policy (test_repository_gates.RepositoryGateTests.test_source_manifest_includes_release_policy) ... ok +test_typescript_schemas_match_normative_bytes (test_repository_gates.RepositoryGateTests.test_typescript_schemas_match_normative_bytes) ... ok +test_workflows_are_valid_yaml_when_parser_available (test_repository_gates.RepositoryGateTests.test_workflows_are_valid_yaml_when_parser_available) ... ok +test_bundled_schemas_match_normative_schemas (test_sdk.SdkTests.test_bundled_schemas_match_normative_schemas) ... ok +test_context_mismatch_rejects_before_projection (test_sdk.SdkTests.test_context_mismatch_rejects_before_projection) ... ok +test_emits_correlated_span_event_and_log (test_sdk.SdkTests.test_emits_correlated_span_event_and_log) ... ok +test_explicit_attribute_allowlist_is_narrow (test_sdk.SdkTests.test_explicit_attribute_allowlist_is_narrow) ... ok +test_extension_attributes_are_deny_by_default (test_sdk.SdkTests.test_extension_attributes_are_deny_by_default) ... ok +test_log_body_is_a_deep_copy (test_sdk.SdkTests.test_log_body_is_a_deep_copy) ... ok +test_no_span_still_emits_run_correlated_log (test_sdk.SdkTests.test_no_span_still_emits_run_correlated_log) ... ok +test_privacy_violation_rejects_before_projection (test_sdk.SdkTests.test_privacy_violation_rejects_before_projection) ... ok +test_projection_failures_are_reported_independently (test_sdk.SdkTests.test_projection_failures_are_reported_independently) ... ok +test_real_otel_span_receives_event (test_sdk.SdkTests.test_real_otel_span_receives_event) ... ok +test_action_events_create_truthful_tool_transcript (test_trace_adapter.TraceAdapterTests.test_action_events_create_truthful_tool_transcript) ... ok +test_finalizes_signs_and_validates_official_trace_record (test_trace_adapter.TraceAdapterTests.test_finalizes_signs_and_validates_official_trace_record) ... ok +test_linked_terminal_approval_resolves_policy_challenge (test_trace_adapter.TraceAdapterTests.test_linked_terminal_approval_resolves_policy_challenge) ... ok +test_refuses_conflicting_policy_bundles (test_trace_adapter.TraceAdapterTests.test_refuses_conflicting_policy_bundles) ... ok +test_refuses_missing_signer (test_trace_adapter.TraceAdapterTests.test_refuses_missing_signer) ... ok +test_refuses_policy_digest_algorithm_trace_cannot_represent (test_trace_adapter.TraceAdapterTests.test_refuses_policy_digest_algorithm_trace_cannot_represent) ... ok +test_refuses_unranked_classification (test_trace_adapter.TraceAdapterTests.test_refuses_unranked_classification) ... ok +test_refuses_unsealed_or_incomplete_evidence (test_trace_adapter.TraceAdapterTests.test_refuses_unsealed_or_incomplete_evidence) ... ok +test_unbound_or_expired_approval_cannot_resolve_policy_challenge (test_trace_adapter.TraceAdapterTests.test_unbound_or_expired_approval_cannot_resolve_policy_challenge) ... ok +test_a_failure_inside_official_signing_is_reported_as_one (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_failure_inside_official_signing_is_reported_as_one) +A key that satisfies the shape check and then fails when used. ... ok +test_a_policy_decision_without_a_bundle_digest_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_policy_decision_without_a_bundle_digest_is_refused) ... ok +test_a_repeated_classification_cannot_rank_anything (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_repeated_classification_cannot_rank_anything) ... ok +test_a_run_with_no_data_flow_has_nothing_to_classify (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_data_flow_has_nothing_to_classify) ... ok +test_a_run_with_no_policy_decision_has_no_policy_to_bind (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_run_with_no_policy_decision_has_no_policy_to_bind) ... ok +test_a_taxonomy_the_configuration_does_not_name_is_refused (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_a_taxonomy_the_configuration_does_not_name_is_refused) ... ok +test_an_empty_run_carries_no_chained_evidence (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_an_empty_run_carries_no_chained_evidence) ... ok +test_every_required_configuration_field_is_named_when_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_every_required_configuration_field_is_named_when_absent) ... ok +test_the_optional_dependency_is_named_when_it_is_absent (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_the_optional_dependency_is_named_when_it_is_absent) ... ok +test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode (test_trace_adapter_refusals.TraceAdapterRefusalTests.test_two_decisions_disagreeing_on_enforcement_cannot_produce_one_mode) ... ok +test_accumulator_rejects_non_finite_external_cost (test_usage.UsageTests.test_accumulator_rejects_non_finite_external_cost) ... ok +test_bool_is_not_accepted_as_token_integer (test_usage.UsageTests.test_bool_is_not_accepted_as_token_integer) ... ok +test_cost_requires_finite_amount_and_explicit_provenance (test_usage.UsageTests.test_cost_requires_finite_amount_and_explicit_provenance) ... ok +test_reused_event_id_with_changed_data_is_rejected (test_usage.UsageTests.test_reused_event_id_with_changed_data_is_rejected) ... ok +test_rollup_deduplicates_and_reports_partial_coverage (test_usage.UsageTests.test_rollup_deduplicates_and_reports_partial_coverage) ... ok +test_rollup_rejects_non_leaf_and_mixed_currency (test_usage.UsageTests.test_rollup_rejects_non_leaf_and_mixed_currency) ... ok +test_rollups_match_shared_cross_language_vector (test_usage.UsageTests.test_rollups_match_shared_cross_language_vector) ... ok +test_schema_rejects_aggregate_cost_without_run_rollup (test_usage.UsageTests.test_schema_rejects_aggregate_cost_without_run_rollup) ... ok +test_unknown_price_is_absent_not_zero (test_usage.UsageTests.test_unknown_price_is_absent_not_zero) ... ok + +---------------------------------------------------------------------- +Ran 111 tests in 7.937s + +OK diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/paper.tex b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/paper.tex new file mode 100644 index 0000000..5f220c7 --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/paper.tex @@ -0,0 +1,110 @@ +\documentclass[10pt,letterpaper]{article} +\usepackage[margin=0.9in,headheight=14pt]{geometry} +\usepackage{fontspec,xcolor,parskip,titlesec,fancyhdr,xurl,microtype} +\usepackage[colorlinks=true,linkcolor=black,citecolor=black,urlcolor=black]{hyperref} +\definecolor{OceanBlue}{HTML}{00B0FF} +\definecolor{CoralGreen}{HTML}{10BA87} +\setmainfont{Roboto-Regular.ttf}[Path=../_paper-assets/fonts/,BoldFont=Roboto-Bold.ttf] +\newfontfamily\headingfont{Montserrat-SemiBold.ttf}[Path=../_paper-assets/fonts/] +\titleformat{\section}{\headingfont\fontsize{13}{16}\selectfont}{\thesection}{0.6em}{}[\color{CoralGreen}\titlerule] +\titlespacing*{\section}{0pt}{17pt}{8pt} +\setlength{\parindent}{0pt} +\setlength{\emergencystretch}{3em} +\setlength{\parskip}{6pt} +\pagestyle{fancy}\fancyhf{} +\fancyhead[L]{\small OPAQUE Systems / Research} +\fancyhead[R]{\small Technical report, version 3 / October 1, 2026} +\fancyfoot[L]{\small Not peer reviewed} +\fancyfoot[R]{\thepage} +\renewcommand{\headrulewidth}{0.4pt} +\begin{document} + + +{\raggedright\headingfont\fontsize{21}{26}\selectfont\color{OceanBlue} Acceptance Before Export: A Bounded Evidence Contract for Governance Telemetry\par} + +\vspace{8pt}Imran Siddique\par OPAQUE Systems\par\vspace{4pt}October 1, 2026\par Technical report, version 3\par + +\vspace{5pt}{\color{CoralGreen}\hrule}\vspace{8pt} + +\textbf{Scope of this edition.} This is an author-prepared technical report, not peer reviewed. Version 3 (October 1, 2026) corrects version 2 (September 30, 2026), which left out a defect in the pinned revision's TRACE finalizer that the paper's truncation argument depends on, and the Internet-Draft that already chains agent audit records over RFC 8785 bytes; results are unchanged. Version 2 added one prior-art citation that version 1 (September 27, 2026) omitted. Version 1 revised a manuscript dated September 4, 2026. Every result reported here is software-only: the Python test suite, the portable conformance fixtures and separate review probes, run on one Windows workstation against a pinned source revision, rerun on September 27, 2026, and compared with a later revision. No durable store, crash-restart, multi-process or deployed-exporter experiment was run.\par + +\noindent\textbf{Patent Pending.} + +\section*{Abstract} + +An operational telemetry backend can lose events through sampling, retention and exporter failures. Its observations therefore cannot, by themselves, establish complete governance evidence. We describe a source-side acceptance boundary in AgenTrust Telemetry: validate a metadata-constrained event, check context correlation, accept an isolated representation into a run-scoped cryptographic prefix, and only then attempt operational projections. In a durable configuration, an external callback must acknowledge persistence before the local prefix advances. Export failures remain distinct from evidence failures. We formalize the conditional ordering property and test its limits, including acknowledgment loss and an empty accumulator declared complete. At a pinned source revision, 111 Python tests and 13 portable conformance fixtures produced expected results on September 4 and again on September 27, 2026. Four additional probes demonstrate both the useful separation and the absence of automatic completeness or distributed exactly-once persistence. The contribution is a precise contract for acceptance before export, with explicit trust and recovery obligations, rather than a claim that a hash chain proves every event occurred. + + +\section{Motivation and related systems} + +Agent runs cross policy engines, approval services, tools and asynchronous execution boundaries. The AgenTrust contract represents policy decisions, approval lifecycle, usage, classified data flow, action execution and evidence lifecycle as six event families. A durable run identifier and, when applicable, action identifier and digest allow governance joins to survive changes in operational trace context. Here, durable means a stable logical identifier; it does not imply a durable storage medium. + + +OpenTelemetry supplies an operational data model and sampling machinery \cite{ref1}. Secure cryptographically linked audit logs long predate agent telemetry \cite{ref2}, and tamper-evident history trees give logarithmic-size proofs that a later log version extends an earlier one \cite{ref8}. Recent governance telemetry work combines policy events, provenance and enforcement \cite{ref3}, while append-only telemetry storage also appears in patent literature \cite{ref4}. These are substantial overlaps. This paper does not introduce hash chains, event sourcing, governance telemetry or a complete audit protocol. Its subject is the SDK boundary between local evidence acceptance and fallible operational projection. + + +\section{Event and trust contract} + +The normalized JSON event is validated before use. The metadata profile excludes raw prompts, outputs, source code, tool arguments/results, credentials and authorization tokens through schemas and recursive key checks. Such restrictions reduce accidental payload capture; they are not a semantic proof that arbitrary strings contain no secrets. Nanosecond timestamps are represented as decimal strings to avoid numeric precision loss across languages. + + +Run and action identifiers are distinct from trace/span identifiers. If an active span exists, supplied correlation fields must agree before evidence is accepted. Propagated metadata is untrusted and confers no workload identity or authorization. The caller owns instrumentation, the schema configuration, its evidence sink, operational emitters and finalization. The SDK does not install an OpenTelemetry provider or authorize the underlying action. + + +The trusted boundary includes an honest event producer and, for the specified evidence behavior, the reference accumulator. A custom sink can behave differently. A callback configured as durable must honestly acknowledge committed storage and supply idempotency and recovery. The accumulator cannot observe operations that bypass instrumentation or recover source facts fabricated by a producer. + + +\section{Acceptance and projection protocol} + +An accumulator owns one run, an accepted entry list, an event-ID set, a sealed flag, a completeness label, a capacity and a lock. It begins empty, unsealed and unknown. Validation and copying precede a locked acceptance operation. A run mismatch, duplicate event ID, closed accumulator or exceeded cap is rejected. + + +For sequence i, the next commitment is SHA-256 of the previous raw 32-byte digest, i encoded as unsigned 64-bit big-endian bytes and RFC 8785 canonical event bytes. Genesis uses 32 zero bytes. The stored entry includes its sequence, event ID, previous digest, digest and event representation. Canonicalization is an established interoperability primitive \cite{ref5}, and the Agent Audit Trail Internet-Draft, first posted in March 2026, already links agent audit records by SHA-256 over RFC 8785 canonical bytes \cite{ref9}. + + +When a persistence callback exists, the accumulator passes it an isolated candidate entry and requires the exact Boolean value true. Any exception or other result prevents local advancement. After acknowledgment, the local list and event-ID set advance, and isolated snapshots/return values prevent external mutation through shared object references. Without a callback, acceptance is memory-only. + + +The client next attempts span, log and metric projections. Each projection exception is recorded separately; it does not delete an accepted entry and does not prevent attempts of the remaining projections. The current Python implementation calls these projections sequentially. The result field named evidence\_persisted means the selected sink returned successfully; with an in-memory accumulator it must not be read as proof of disk persistence. + + +\section{Properties and counterexamples} + +The ordering property is conditional: when the reference evidence sink is configured, any operational projection attempted by an emit invocation follows successful return from its evidence append. In durable callback mode, successful append additionally follows callback acknowledgment. This follows from program order and exception propagation at the boundary. It is not an atomic transaction across the SDK, external storage and every exporter. + + +If an external store commits and then loses its acknowledgment, the local prefix remains unchanged and a retry may call the store again with the same event. A deliberately non-idempotent callback in our probe records two external writes. The production callback must deduplicate retries and detect conflicting bytes; the SDK does not implement a distributed exactly-once protocol or crash recovery. + + +Sealing closes the prefix and stores a producer-supplied completeness label: complete, incomplete or unknown. Unsealed snapshots are unknown. A separate probe seals an empty accumulator as complete successfully. Thus the label is not an independently verified property. Establishing complete capture would also require a defined required-event set, correct instrumentation, terminal-state coverage and recovery evidence. A hash chain alone provides none of those premises. + + +The commitment authenticates neither the event source nor the final head by itself. A trusted checkpoint or separately signed final evidence container is needed to detect substitution or truncation relative to a known head. Optional TRACE finalization is an integration boundary, not a repair for missing source events. At the pinned revision it did not check the chain either. The finalizer took its measurement from the snapshot's chain digest and its appraisal from the snapshot's entries without recomputing one from the other, and a sealed snapshot holds mutable objects, so a snapshot with an edited entry, a dropped entry or a substituted chain digest was signed. Pull request 65 of the source repository, released in 0.1.0-alpha.5 on September 26, 2026, recomputes the chain before signing in both SDKs; its regression tests fail against the pinned code. + + +\section{Reproducible evaluation} + +The source revision is agentrust-telemetry 29c13cfa4047a0f5784a90df63b22a3568453158 \cite{ref7}. September 4, 2026 execution produced 111 passing Python unit tests and expected verdicts for all 13 portable fixtures, six valid and seven invalid. A rerun on September 27, 2026 against a git archive of that commit, whose embedded commit identifier was checked before extraction, produced the same counts. The fixtures cover the six event families and failures such as prohibited content, invalid trace identifiers, timestamp ambiguity, missing action digests and unsupported usage aggregation. The repository suite also exercises adapters, propagation, projection, evidence and finalization. + + +Four additional review probes establish: an exporter exception preserves an accepted event; callback refusal prevents projection and local advancement; an empty complete declaration is accepted; and commit-before-ack loss requires external idempotency. The last two are counterexamples to stronger claims. The probes use the actual modules at the pinned revision and record results in boundary-probes.json. All four probes gave the same result at the later revision c351568 (September 26, 2026); between the two revisions the Python evidence module changed once, to remove a deadlock on reentrant append or seal (pull request 46), while validation and TRACE finalization changed in pull request 65. Commands, source commit identifiers, dependency versions and test logs accompany the paper. + + +The September 27 rerun used Windows with Python 3.12.10, cryptography 50.0.0 and jsonschema 4.26.0; the September 4 run used Python 3.12.13 with the same two packages. The implementation and its repository tests share assumptions; the review probes are separate scenarios but are not an independent organizational reproduction. TypeScript schemas and golden fixtures are part of the project, but its TypeScript suite was not freshly executed in this review. No crash-restart store, multi-process correctness proof or performance benchmark is reported. + + +\section{Relation to prior logging systems} + +The useful distinction is preservation of an accepted evidence prefix across operational export failures, together with refusal-before-projection when the evidence path fails. Prior write-ahead and fault-tolerant logging systems may supply closely related ordering. One example tags and checksums batches between log agents and collectors so that delivery can be confirmed \cite{ref6}; its claims were not compared with this contract. Terminology and deployment in an agent system are not, by themselves, evidence of a new ordering property. + + +\section{Limits and next experiments} + +The result concerns accepted event representations. It does not prove source truth, complete instrumentation, physical execution, secrecy of arbitrary metadata or authoritative policy enforcement. Next experiments should inject durable-store acknowledgment loss and restart, compare recovered prefixes, test same-ID/different-content conflicts and explicitly define completeness criteria before attempting to verify them. A deployable contract should make memory acceptance, durable acknowledgment, export success and completeness visible as distinct outcomes. + + +\bibliographystyle{unsrt} + +\bibliography{refs} + +\end{document} \ No newline at end of file diff --git a/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/refs.bib b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/refs.bib new file mode 100644 index 0000000..5980fea --- /dev/null +++ b/papers/telemetry-evidence-acceptance/telemetry-evidence-acceptance/refs.bib @@ -0,0 +1,44 @@ +@misc{ref1, + title = {{OpenTelemetry. Sampling. Project documentation, accessed September 27, 2026}}, + howpublished = {\url{https://opentelemetry.io/docs/concepts/sampling/}} +} + +@misc{ref2, + title = {{B. Schneier and J. M. Kelsey (Counterpane Internet Security). Event auditing system. US Patent 5,978,475, granted November 2, 1999}}, + howpublished = {\url{https://patents.google.com/patent/US5978475A/en}} +} + +@misc{ref3, + title = {{A. Pathak and N. Jain. Governance-Aware Agent Telemetry for Closed-Loop Enforcement in Multi-Agent AI Systems. arXiv:2604.05119v1, April 6, 2026}}, + howpublished = {\url{https://arxiv.org/abs/2604.05119v1}} +} + +@misc{ref4, + title = {{X. Ma and Z. Yin (Cisco Technology). Configuration and operational network observability using sliding window for append-only telemetry log. US Patent Application Publication 2025/0016076 A1, January 9, 2025}}, + howpublished = {\url{https://patents.google.com/patent/US20250016076A1/en}} +} + +@misc{ref5, + title = {{A. Rundgren, B. Jordan and S. Erdtman. JSON Canonicalization Scheme (JCS). RFC 8785, June 2020}}, + howpublished = {\url{https://www.rfc-editor.org/rfc/rfc8785}} +} + +@misc{ref6, + title = {{J. M. Hsieh and H. N. Robinson (Cloudera). Collecting and aggregating log data with fault tolerance. US Patent 9,081,888 B2, granted July 14, 2015}}, + howpublished = {\url{https://patents.google.com/patent/US9081888B2/en}} +} + +@misc{ref7, + title = {{AgenTrust Telemetry source, pinned revision 29c13cfa4047a0f5784a90df63b22a3568453158}}, + howpublished = {\url{https://github.com/agentrust-io/agentrust-telemetry/tree/29c13cfa4047a0f5784a90df63b22a3568453158}} +} + +@misc{ref8, + title = {{S. A. Crosby and D. S. Wallach. Efficient Data Structures for Tamper-Evident Logging. 18th USENIX Security Symposium, 2009}}, + howpublished = {\url{https://www.usenix.org/legacy/event/sec09/tech/full_papers/crosby.pdf}} +} + +@misc{ref9, + title = {{R. Sharif. Agent Audit Trail: A Standard Logging Format for Autonomous AI Systems. IETF Internet-Draft draft-sharif-agent-audit-trail, revision -00 posted March 29, 2026; revision -06 current on October 1, 2026}}, + howpublished = {\url{https://datatracker.ietf.org/doc/draft-sharif-agent-audit-trail/}} +}