LICENSE
README.md
pyproject.toml
src/attestroot/__init__.py
src/attestroot/bundle.py
src/attestroot/canon.py
src/attestroot/cli.py
src/attestroot/countersign.py
src/attestroot/grade.py
src/attestroot/ledger.py
src/attestroot/merkle.py
src/attestroot/paths.py
src/attestroot/py.typed
src/attestroot/rekor.py
src/attestroot/report.py
src/attestroot/seal.py
src/attestroot/signing.py
src/attestroot/translog.py
src/attestroot/verify.py
src/attestroot/version.py
src/attestroot.egg-info/PKG-INFO
src/attestroot.egg-info/SOURCES.txt
src/attestroot.egg-info/dependency_links.txt
src/attestroot.egg-info/entry_points.txt
src/attestroot.egg-info/requires.txt
src/attestroot.egg-info/top_level.txt
src/attestroot/adapters/__init__.py
src/attestroot/adapters/base.py
src/attestroot/adapters/claude_code.py
src/attestroot/adapters/codex.py
src/attestroot/adapters/cursor.py
src/attestroot/adapters/gemini.py
src/attestroot/adapters/mcp_http.py
src/attestroot/adapters/mcp_proxy.py
src/attestroot/adapters/numbat.py
src/attestroot/adapters/otel_genai.py
src/attestroot/adapters/conformance/__init__.py
src/attestroot/adapters/conformance/runner.py
src/attestroot/adapters/conformance/cases/claude_code/clean/case.json
src/attestroot/adapters/conformance/cases/claude_code/clean/expected.json
src/attestroot/adapters/conformance/cases/claude_code/clean/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/clean/transcript.jsonl
src/attestroot/adapters/conformance/cases/claude_code/compacted/case.json
src/attestroot/adapters/conformance/cases/claude_code/compacted/expected.json
src/attestroot/adapters/conformance/cases/claude_code/compacted/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/compacted/transcript.jsonl
src/attestroot/adapters/conformance/cases/claude_code/concurrent_pair/case.json
src/attestroot/adapters/conformance/cases/claude_code/concurrent_pair/expected.json
src/attestroot/adapters/conformance/cases/claude_code/concurrent_pair/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/crashed/case.json
src/attestroot/adapters/conformance/cases/claude_code/crashed/expected.json
src/attestroot/adapters/conformance/cases/claude_code/crashed/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/crashed/transcript.jsonl
src/attestroot/adapters/conformance/cases/claude_code/gapped/case.json
src/attestroot/adapters/conformance/cases/claude_code/gapped/expected.json
src/attestroot/adapters/conformance/cases/claude_code/gapped/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/gapped/transcript.jsonl
src/attestroot/adapters/conformance/cases/claude_code/malformed/case.json
src/attestroot/adapters/conformance/cases/claude_code/malformed/expected.json
src/attestroot/adapters/conformance/cases/claude_code/malformed/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/resumed/case.json
src/attestroot/adapters/conformance/cases/claude_code/resumed/expected.json
src/attestroot/adapters/conformance/cases/claude_code/resumed/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/resumed/transcript.jsonl
src/attestroot/adapters/conformance/cases/claude_code/subagent/case.json
src/attestroot/adapters/conformance/cases/claude_code/subagent/expected.json
src/attestroot/adapters/conformance/cases/claude_code/subagent/hooks.jsonl
src/attestroot/adapters/conformance/cases/claude_code/subagent/transcript.jsonl
src/attestroot/adapters/conformance/cases/codex/clean/case.json
src/attestroot/adapters/conformance/cases/codex/clean/expected.json
src/attestroot/adapters/conformance/cases/codex/clean/hooks.jsonl
src/attestroot/adapters/conformance/cases/codex/clean/transcript.jsonl
src/attestroot/adapters/conformance/cases/codex/gapped/case.json
src/attestroot/adapters/conformance/cases/codex/gapped/expected.json
src/attestroot/adapters/conformance/cases/codex/gapped/hooks.jsonl
src/attestroot/adapters/conformance/cases/codex/gapped/transcript.jsonl
src/attestroot/adapters/conformance/cases/codex/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/codex/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/cursor/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/cursor/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/cursor/hooks/case.json
src/attestroot/adapters/conformance/cases/cursor/hooks/expected.json
src/attestroot/adapters/conformance/cases/cursor/hooks/hooks.jsonl
src/attestroot/adapters/conformance/cases/gemini/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/gemini/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/gemini/telemetry/case.json
src/attestroot/adapters/conformance/cases/gemini/telemetry/expected.json
src/attestroot/adapters/conformance/cases/gemini/telemetry/hooks.jsonl
src/attestroot/adapters/conformance/cases/mcp_http/frames/case.json
src/attestroot/adapters/conformance/cases/mcp_http/frames/expected.json
src/attestroot/adapters/conformance/cases/mcp_http/frames/hooks.jsonl
src/attestroot/adapters/conformance/cases/mcp_http/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/mcp_http/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/mcp_proxy/frames/case.json
src/attestroot/adapters/conformance/cases/mcp_proxy/frames/expected.json
src/attestroot/adapters/conformance/cases/mcp_proxy/frames/hooks.jsonl
src/attestroot/adapters/conformance/cases/mcp_proxy/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/mcp_proxy/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/numbat/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/numbat/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/numbat/records/case.json
src/attestroot/adapters/conformance/cases/numbat/records/expected.json
src/attestroot/adapters/conformance/cases/numbat/records/hooks.jsonl
src/attestroot/adapters/conformance/cases/otel_genai/honest_capabilities/case.json
src/attestroot/adapters/conformance/cases/otel_genai/honest_capabilities/expected.json
src/attestroot/adapters/conformance/cases/otel_genai/spans/case.json
src/attestroot/adapters/conformance/cases/otel_genai/spans/expected.json
src/attestroot/adapters/conformance/cases/otel_genai/spans/hooks.jsonl
src/attestroot/crypto/__init__.py
src/attestroot/crypto/ecdsa_p256.py
src/attestroot/crypto/ed25519.py
src/attestroot/hooks/capture.py
src/attestroot/ingest/__init__.py
src/attestroot/ingest/gemini.py
src/attestroot/ingest/numbat.py
src/attestroot/ingest/otel.py
src/attestroot/mcp/__init__.py
src/attestroot/mcp/http_proxy.py
src/attestroot/mcp/install.py
src/attestroot/mcp/wrap.py
tests/test_capture_and_seal.py
tests/test_codex.py
tests/test_conformance.py
tests/test_countersign.py
tests/test_crypto.py
tests/test_cursor.py
tests/test_ecdsa_p256.py
tests/test_gemini.py
tests/test_io_surface.py
tests/test_mcp_http.py
tests/test_mcp_install.py
tests/test_mcp_proxy.py
tests/test_numbat.py
tests/test_otel_ingest.py
tests/test_rekor.py
tests/test_report.py
tests/test_service_contract.py
tests/test_standalone_verifier.py
tests/test_translog.py