agentmandate 0.3.0__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {agentmandate-0.3.0 → agentmandate-0.3.2}/CHANGELOG.md +19 -0
  2. {agentmandate-0.3.0 → agentmandate-0.3.2}/PKG-INFO +25 -7
  3. {agentmandate-0.3.0 → agentmandate-0.3.2}/README.md +24 -6
  4. {agentmandate-0.3.0 → agentmandate-0.3.2}/ROADMAP.md +36 -2
  5. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/__init__.py +1 -1
  6. {agentmandate-0.3.0 → agentmandate-0.3.2}/pyproject.toml +1 -1
  7. {agentmandate-0.3.0 → agentmandate-0.3.2}/.github/workflows/ci.yml +0 -0
  8. {agentmandate-0.3.0 → agentmandate-0.3.2}/.github/workflows/release.yml +0 -0
  9. {agentmandate-0.3.0 → agentmandate-0.3.2}/.gitignore +0 -0
  10. {agentmandate-0.3.0 → agentmandate-0.3.2}/CONTRIBUTING.md +0 -0
  11. {agentmandate-0.3.0 → agentmandate-0.3.2}/DESIGN.md +0 -0
  12. {agentmandate-0.3.0 → agentmandate-0.3.2}/LICENSE +0 -0
  13. {agentmandate-0.3.0 → agentmandate-0.3.2}/RELEASING.md +0 -0
  14. {agentmandate-0.3.0 → agentmandate-0.3.2}/SECURITY.md +0 -0
  15. {agentmandate-0.3.0 → agentmandate-0.3.2}/STABILITY.md +0 -0
  16. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/cli.py +0 -0
  17. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/diff.py +0 -0
  18. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/lint.py +0 -0
  19. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/manifest.py +0 -0
  20. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/obligations.py +0 -0
  21. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/py.typed +0 -0
  22. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/reach.py +0 -0
  23. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/scan.py +0 -0
  24. {agentmandate-0.3.0 → agentmandate-0.3.2}/agentmandate/verify.py +0 -0
  25. {agentmandate-0.3.0 → agentmandate-0.3.2}/docs/assets/authority-path.svg +0 -0
  26. {agentmandate-0.3.0 → agentmandate-0.3.2}/docs/manifest.md +0 -0
  27. {agentmandate-0.3.0 → agentmandate-0.3.2}/docs/test-obligations.md +0 -0
  28. {agentmandate-0.3.0 → agentmandate-0.3.2}/examples/dispute-resolver-sod.yaml +0 -0
  29. {agentmandate-0.3.0 → agentmandate-0.3.2}/examples/dispute-resolver-v2.yaml +0 -0
  30. {agentmandate-0.3.0 → agentmandate-0.3.2}/examples/dispute-resolver.yaml +0 -0
  31. {agentmandate-0.3.0 → agentmandate-0.3.2}/examples/mcp-tools.json +0 -0
  32. {agentmandate-0.3.0 → agentmandate-0.3.2}/examples/observed-calls.jsonl +0 -0
  33. {agentmandate-0.3.0 → agentmandate-0.3.2}/examples/reviewed-obligations.json +0 -0
  34. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_cli.py +0 -0
  35. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_diff.py +0 -0
  36. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_lint.py +0 -0
  37. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_manifest.py +0 -0
  38. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_obligations.py +0 -0
  39. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_reach.py +0 -0
  40. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_scan.py +0 -0
  41. {agentmandate-0.3.0 → agentmandate-0.3.2}/tests/test_verify.py +0 -0
@@ -6,6 +6,25 @@ All notable changes to this project are documented here. The format follows
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 0.3.2 - 2026-07-28
10
+
11
+ ### Changed
12
+
13
+ - The README scopes every finding to permitted reachability under the reviewed
14
+ manifest and bounded abstraction, rather than observed model behaviour or
15
+ undeclared downstream enforcement.
16
+ - The roadmap makes external tool-graph validation a prerequisite for model
17
+ growth, then ranks bounded cardinality, reviewed resource relationships, and
18
+ non-monetary effect budgets as evidence-dependent candidates.
19
+
20
+ ## 0.3.1 - 2026-07-28
21
+
22
+ ### Changed
23
+
24
+ - The README opens with the compound-authority problem in plain language and
25
+ separates per-call policy, reviewed decision evidence, and runtime-control
26
+ evidence without weakening their boundaries.
27
+
9
28
  ## 0.3.0 - 2026-07-28
10
29
 
11
30
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentmandate
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Compound-path and cross-release analysis of what an AI agent is permitted to do
5
5
  Project-URL: Homepage, https://github.com/mrwersa/agentmandate
6
6
  Project-URL: Repository, https://github.com/mrwersa/agentmandate
@@ -34,7 +34,7 @@ Description-Content-Type: text/markdown
34
34
 
35
35
  # AgentMandate
36
36
 
37
- > **Compound-path and cross-release analysis of what an AI agent is permitted to do.**
37
+ > **What is your AI agent actually allowed to do?**
38
38
 
39
39
  [![PyPI](https://img.shields.io/pypi/v/agentmandate.svg)](https://pypi.org/project/agentmandate/)
40
40
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%20--%203.14-blue.svg)](https://www.python.org/downloads/)
@@ -42,16 +42,30 @@ Description-Content-Type: text/markdown
42
42
  [![Coverage: 100%](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)](#development)
43
43
  [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-green.svg)](https://github.com/mrwersa/agentmandate/blob/main/LICENSE)
44
44
 
45
- Analyse what an AI agent is permitted to do, and what changed between two releases.
45
+ A Python library and CLI that reads a short description of your agent's tools,
46
+ called a **manifest**, and finds the limits it can slip past by combining
47
+ actions that are each permitted on their own. It also tells you when a release
48
+ widened what the agent can reach, before that release ships.
49
+
50
+ Policy engines decide one call at a time. This looks at the whole tool graph
51
+ offline, so it catches the gaps that only appear across a sequence.
52
+
53
+ | What you run | Question it answers |
54
+ |---|---|
55
+ | Cedar, OPA, AgentCore Policy, AgentWard | May this agent make this call, right now? |
56
+ | **AgentMandate** | **What can it reach by combining permitted calls, and did this release widen that?** |
57
+ | [AgentVerity](https://github.com/mrwersa/agentverity) | Were the reviewed decision routes exercised repeatably? |
58
+ | Your tests and runtime traces | Did the tools execute and the declared controls hold? |
46
59
 
47
60
  Imagine a payment-dispute agent that can open a case and issue a
48
61
  human-approved refund. Each refund is capped at 500 GBP per case, and the
49
62
  whole run is capped at 500 GBP. Release 2 adds one read-only tool:
50
63
  `search_cases`.
51
64
 
52
- That tool spends nothing. It does, however, give the agent more case bindings.
53
- Two separately valid refunds become reachable, so effective authority rises
54
- from 500 to 1,000 GBP even though every individual call still looks permitted.
65
+ That tool spends nothing. It does, however, let the agent get hold of more
66
+ cases, and the 500 GBP cap is measured *per case*. Two separately valid refunds
67
+ become reachable under the manifest, so reachable extraction doubles to 1,000 GBP
68
+ while every individual call still looks permitted.
55
69
 
56
70
  ![A read-only case search makes two approved refunds reachable and breaches the run limit](https://raw.githubusercontent.com/mrwersa/agentmandate/main/docs/assets/authority-path.svg)
57
71
 
@@ -255,6 +269,10 @@ The `lint` command deliberately overlaps the scanners above. A tool that reporte
255
269
 
256
270
  ## Scope
257
271
 
272
+ Read every finding as **permitted by the reviewed manifest within this bounded
273
+ abstraction**. It is not proof that the model will choose the path or that an
274
+ undeclared downstream invariant will accept it.
275
+
258
276
  What this does not do, on purpose:
259
277
 
260
278
  - **No enforcement.** No proxy, no runtime interception, no blocking.
@@ -286,7 +304,7 @@ ruff check .
286
304
 
287
305
  ## Status
288
306
 
289
- Alpha, version 0.3.0. The authority model is the part most likely to change,
307
+ Alpha, version 0.3.2. The authority model is the part most likely to change,
290
308
  because it has not yet been pointed at enough real tool graphs to know where it
291
309
  is too coarse. Issues describing a graph it models badly are the most useful
292
310
  thing you can file.
@@ -1,6 +1,6 @@
1
1
  # AgentMandate
2
2
 
3
- > **Compound-path and cross-release analysis of what an AI agent is permitted to do.**
3
+ > **What is your AI agent actually allowed to do?**
4
4
 
5
5
  [![PyPI](https://img.shields.io/pypi/v/agentmandate.svg)](https://pypi.org/project/agentmandate/)
6
6
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%20--%203.14-blue.svg)](https://www.python.org/downloads/)
@@ -8,16 +8,30 @@
8
8
  [![Coverage: 100%](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)](#development)
9
9
  [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-green.svg)](https://github.com/mrwersa/agentmandate/blob/main/LICENSE)
10
10
 
11
- Analyse what an AI agent is permitted to do, and what changed between two releases.
11
+ A Python library and CLI that reads a short description of your agent's tools,
12
+ called a **manifest**, and finds the limits it can slip past by combining
13
+ actions that are each permitted on their own. It also tells you when a release
14
+ widened what the agent can reach, before that release ships.
15
+
16
+ Policy engines decide one call at a time. This looks at the whole tool graph
17
+ offline, so it catches the gaps that only appear across a sequence.
18
+
19
+ | What you run | Question it answers |
20
+ |---|---|
21
+ | Cedar, OPA, AgentCore Policy, AgentWard | May this agent make this call, right now? |
22
+ | **AgentMandate** | **What can it reach by combining permitted calls, and did this release widen that?** |
23
+ | [AgentVerity](https://github.com/mrwersa/agentverity) | Were the reviewed decision routes exercised repeatably? |
24
+ | Your tests and runtime traces | Did the tools execute and the declared controls hold? |
12
25
 
13
26
  Imagine a payment-dispute agent that can open a case and issue a
14
27
  human-approved refund. Each refund is capped at 500 GBP per case, and the
15
28
  whole run is capped at 500 GBP. Release 2 adds one read-only tool:
16
29
  `search_cases`.
17
30
 
18
- That tool spends nothing. It does, however, give the agent more case bindings.
19
- Two separately valid refunds become reachable, so effective authority rises
20
- from 500 to 1,000 GBP even though every individual call still looks permitted.
31
+ That tool spends nothing. It does, however, let the agent get hold of more
32
+ cases, and the 500 GBP cap is measured *per case*. Two separately valid refunds
33
+ become reachable under the manifest, so reachable extraction doubles to 1,000 GBP
34
+ while every individual call still looks permitted.
21
35
 
22
36
  ![A read-only case search makes two approved refunds reachable and breaches the run limit](https://raw.githubusercontent.com/mrwersa/agentmandate/main/docs/assets/authority-path.svg)
23
37
 
@@ -221,6 +235,10 @@ The `lint` command deliberately overlaps the scanners above. A tool that reporte
221
235
 
222
236
  ## Scope
223
237
 
238
+ Read every finding as **permitted by the reviewed manifest within this bounded
239
+ abstraction**. It is not proof that the model will choose the path or that an
240
+ undeclared downstream invariant will accept it.
241
+
224
242
  What this does not do, on purpose:
225
243
 
226
244
  - **No enforcement.** No proxy, no runtime interception, no blocking.
@@ -252,7 +270,7 @@ ruff check .
252
270
 
253
271
  ## Status
254
272
 
255
- Alpha, version 0.3.0. The authority model is the part most likely to change,
273
+ Alpha, version 0.3.2. The authority model is the part most likely to change,
256
274
  because it has not yet been pointed at enough real tool graphs to know where it
257
275
  is too coarse. Issues describing a graph it models badly are the most useful
258
276
  thing you can file.
@@ -7,15 +7,16 @@ runtime proxy or general agent-security scanner.
7
7
 
8
8
  This is direction, not a release promise.
9
9
 
10
- ## Now: trustworthy authority analysis
10
+ ## Current foundation: trustworthy authority analysis
11
11
 
12
- Version 0.2 makes the existing gate dependable:
12
+ Version 0.3.2 makes the existing gate dependable:
13
13
 
14
14
  - fail-closed replay when control evidence is missing
15
15
  - tool-contract and run-limit comparison across releases
16
16
  - one search depth on both sides of a diff
17
17
  - safe ingestion of untrusted MCP catalogues
18
18
  - explicit handling of incomparable currencies and different agents
19
+ - reviewed test obligations reconciled against current reachable authority
19
20
 
20
21
  ## Next: easier adoption
21
22
 
@@ -35,6 +36,39 @@ new value remains the authority graph and its counterexamples.
35
36
 
36
37
  ## Then: widen the model where evidence demands it
37
38
 
39
+ Do not implement every candidate below in parallel. First collect tool graphs
40
+ from independent users and identify which abstraction forces them to distort a
41
+ real control. Expressiveness increases the search state and the annotation
42
+ burden, so a feature needs a concrete graph and counterexample before it earns
43
+ that cost.
44
+
45
+ ### Bounded scope cardinality
46
+
47
+ The current `unbounded` flag distinguishes one binding from an unlimited
48
+ source. Real tools often expose a finite collection, such as at most ten cases
49
+ or one refund per transaction. A reviewed `max_bindings` bound is the first
50
+ candidate extension because it sharpens the existing scope model without
51
+ turning the manifest into a full application specification.
52
+
53
+ Per-customer or relational limits come later. They require resource identity
54
+ and relationships, not another integer placed beside the current type count.
55
+
56
+ ### Resource relationships
57
+
58
+ Scope counts deliberately forget which customer owns a case or whether two
59
+ bindings refer to the same object. If real graphs show that this creates false
60
+ or missed paths, add a small reviewed relation vocabulary and preserve binding
61
+ provenance through tool transitions. Do not jump directly to arbitrary
62
+ preconditions and postconditions.
63
+
64
+ ### Non-monetary effect budgets
65
+
66
+ Some authority limits count irreversible actions rather than currency, such as
67
+ accounts closed, credentials rotated, or external messages sent. Generalise
68
+ the current cumulative-value mechanism only when those limits share a clear,
69
+ reviewable accumulation rule. Confidentiality and data flow remain a separate
70
+ model rather than being disguised as a numeric budget.
71
+
38
72
  ### Data-flow reachability
39
73
 
40
74
  Add reviewed source, transform, and sink labels so the analyser can detect a
@@ -13,7 +13,7 @@ against the declaration, so it is usable without another tool alongside it.
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
- __version__ = "0.3.0"
16
+ __version__ = "0.3.2"
17
17
 
18
18
  from .diff import Change, Delta, compare
19
19
  from .lint import Finding, check
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agentmandate"
7
- version = "0.3.0"
7
+ version = "0.3.2"
8
8
  description = "Compound-path and cross-release analysis of what an AI agent is permitted to do"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes