Skip to content

feat(experiments): Claim 5 temporal adjacency + Claim 6 cross-org attestation#352

Merged
imran-siddique merged 7 commits into
mainfrom
feat/experiments-claim5-claim6
Jun 25, 2026
Merged

feat(experiments): Claim 5 temporal adjacency + Claim 6 cross-org attestation#352
imran-siddique merged 7 commits into
mainfrom
feat/experiments-claim5-claim6

Conversation

@imran-siddique

Copy link
Copy Markdown
Contributor

Summary

Adds experiments and CI tests for Claims 5 and 6.

Closes #350, #351


Claim 5 — Temporal Adjacency (experiments/claim5-temporal-adjacency/)

The SessionCallLog tracks calls in monotonically increasing sequence order. Any call B after a sensitive call A has seq(B) > seq(A) — an implicit edge exists. This guarantees zero false negatives: if the agent used A's data in B, the model has a record of the relationship.

Property Result
Monotonic sequence numbers PASS
Cross-boundary detection from phi/pii/pci/restricted PASS
Provenance disclaimer in every summary (edges_represent field) PASS
Zero false negatives by construction PASS
Concurrent calls both adjacent to prior PHI call PASS
Denied calls recorded in graph PASS

9 pytest tests in tests/unit/test_claim5_temporal_adjacency.py.


Claim 6 — Cross-Org Attestation (experiments/claim6-cross-org-attestation/)

Software simulation of the dual-TEE B2B protocol: Phase 1 (enterprise gateway) and Phase 2 (vendor server stub) each generate independent signed TRACE Claims linked by shared session_id. A third-party verifier confirms both independently.

Property Result
Independent keypairs (gateway != server) PASS
Session linkage via shared session_id PASS
Phase 1 nonce = SHA-256(gateway_key || session_id) PASS
Phase 2 nonce = SHA-256(server_key || session_id) PASS
Independent signature verification PASS
Phase 1 tamper invalidates only Phase 1 PASS
Binary swap detection via measurement change PASS

9 pytest tests in tests/unit/test_claim6_cross_org_attestation.py.

Note: P4 (nonce check) is mathematical in software mode. In hardware TEE mode, the nonce is hardware-signed by the TEE provider and verified against the endorsement chain.


Experiment index

Updated experiments/README.md to list all 7 experiments (Claims 1–6, Claim 2 has two experiments) with their key results.

Test plan

  • 18 new tests pass: python -m pytest tests/unit/test_claim5_temporal_adjacency.py tests/unit/test_claim6_cross_org_attestation.py -v
  • Both run scripts pass: python experiments/claim5-temporal-adjacency/run.py && python experiments/claim6-cross-org-attestation/run.py
  • No secrets, no mocks substituting real cmcp_runtime behaviour
  • CI green

imran-siddique and others added 7 commits June 25, 2026 15:02
…rg attestation

Claim 5 (temporal-adjacency): 6 properties proven -- monotonic sequence numbers,
cross-boundary event detection from phi/pii/pci/restricted domains, provenance
disclaimer in every call graph summary, zero false negatives by construction,
concurrent call ordering, denied calls recorded. 9 pytest tests. Closes #350.

Claim 6 (cross-org-attestation): software simulation of dual-TEE B2B protocol.
7 properties proven -- independent keypairs, session_id linkage, Phase 1 and
Phase 2 nonce binding (SHA-256(key||session_id)), independent verification,
cross-claim tamper independence, server binary swap detection. 9 pytest tests.
Closes #351.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PLC2701: add noqa for private _HIGH_SENSITIVITY_DOMAINS import
- C416: replace unnecessary list comprehension with list()
- F841: remove unused variables sv_key, session_id, key

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… job

agent-governance-toolkit-core is already installed as a core dependency
via pip install -e ".[dev]", so agt is available without the extra arg.
agent-compliance does not exist on PyPI and has been failing CI since #346.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The agt CLI is provided by agent-governance-toolkit-compliance, not
agent-compliance. The latter name does not exist on PyPI; this was
the root cause of the governance job failure since #346.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…st to PyPI

- governance job: agent-governance-toolkit>=4.1 is the published meta-package
  that includes the agt CLI (was using wrong sub-package name)
- pyproject.toml: drop git source pin for agent-manifest, use PyPI >=0.1.1
- remove allow-direct-references hatch flag (no more git deps)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@imran-siddique imran-siddique merged commit 45c1421 into main Jun 25, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant