Commit 1d9d89c
Fix audit findings: bugs, spec-conformance, security, docs (#37-76)
* Bump the dotnet-dependencies group with 2 updates
Bumps Microsoft.Extensions.Hosting.Abstractions from 9.0.0 to 10.0.8
Bumps Microsoft.NET.Test.Sdk from 18.5.1 to 18.6.0
---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Hosting.Abstractions
dependency-version: 10.0.8
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: dotnet-dependencies
- dependency-name: Microsoft.NET.Test.Sdk
dependency-version: 18.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dotnet-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
* chore(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6.0.1 to 7.0.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@e79a696...fb8b358)
---
updated-dependencies:
- dependency-name: codecov/codecov-action
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* fix: idempotency, cancel authority, client robustness, lease boundary (#71, #72, #73, #74, #75, #76)
- #71 idempotent job.submit replay no longer re-runs the agent (skip Resolve/RunAsync on replay)
- #72 lease glob "/prefix/**" keeps the path-boundary separator so siblings are not authorized
- #73 server-rejected job.submit/list_jobs now fault the awaiting client instead of hanging
- #74 cancel authority is session-scoped (fail-closed), not principal-scoped
- #75 add job.cancelled ack and JOB_NOT_FOUND for unknown jobs
- #76 populate session.jobs last_event_seq from a per-job high-water mark
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: spec-conformance, concurrency, and security audit fixes (#37, #38, #39, #40, #41, #42, #43, #45, #46, #47, #67, #68)
Runtime / spec-conformance:
- #37 root running jobs at a runtime-scoped token so session teardown (heartbeat loss,
graceful close, transport drop) no longer terminates in-flight jobs (spec §6.4, §6.7)
- #41 add session.close/session.closed wire types; the runtime acks a graceful close with
session.closed (session.bye kept as a deprecated alias) (spec §6.7)
- #40 dispatch now surfaces session.error{INTERNAL_ERROR} for unexpected exceptions (spec §12)
- #46 advertise model.use independently of credential provisioning (spec §9.7)
Event delivery / ordering:
- #39 serialize event_seq assignment with the outbound enqueue via a per-session emit gate so
wire order is strictly monotonic under concurrent emitters (spec §8.3)
- #38 subscriber fan-out is back-pressure-aware: on a full channel the subscription is torn down
deterministically instead of silently dropping an already-sequenced event (spec §8.3)
- #44 make the subscribe history/live-fan-out boundary exact via an atomic register+snapshot and a
per-job event index, so a mid-stream subscriber sees each event exactly once (spec §7.6)
Authorization / security:
- #42 gate lease operations on remaining budget (BUDGET_EXHAUSTED) before the pattern check (spec §9.6)
- #43 deny-by-default for uncovered tool.call/agent.delegate, with an explicit
PermissiveUnleasedOperations opt-in (spec §9.3)
- #45 list_jobs fails closed: an empty/absent principal sees only what the policy permits (spec §6.6, §14)
Performance / correctness:
- #67 keyset pagination over (created_at, job_id): stable ties and page work bounded to limit+1
- #68 AgentRegistry no longer exposes its mutable version dictionary; ToInventory snapshots under lock
- #47 client detects event_seq gaps and raises a broken-session signal (spec §8.3)
Co-authored-by: Cursor <cursoragent@cursor.com>
* test: cover audit fixes; update samples/recipes for deny-by-default leases
- Add unit tests for the budget authorization gate (#42) and AgentRegistry concurrency (#68).
- Add integration tests for job survival across session teardown (#37), session.close/closed
(#41), INTERNAL_ERROR on unexpected dispatch failure (#40), fail-closed empty-principal listing
(#45), model.use advertisement (#46), keyset pagination stability (#67), deny-by-default
tool.call (#43), strictly-monotonic event_seq under concurrent emitters (#39), exactly-once
subscribe boundary (#44), and client event_seq gap detection (#47).
- Grant tool.call/agent.delegate leases in the CostBudget, Delegate, and multi-agent-budget
samples/recipes so they remain runnable under deny-by-default (#43); enable permissive mode in
the event round-trip test which exercises event kinds rather than lease enforcement.
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs: fix audit documentation issues (#48-66); format AuditFixesTests
Correct XML comments, guides, OTel/conformance tables, and README for
all open docs audit findings. Fix dotnet format whitespace in integration tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent 43c62d3 commit 1d9d89c
55 files changed
Lines changed: 1533 additions & 201 deletions
File tree
- .github/workflows
- docs
- guides
- projects
- recipes/multi-agent-budget
- samples
- CostBudget
- Delegate
- src
- Arcp.Client
- Arcp.Core
- Envelope
- Errors
- Ids
- Messages
- Arcp.Runtime
- Agents
- Leases
- tests
- Arcp.IntegrationTests
- Arcp.UnitTests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
98 | | - | |
| 98 | + | |
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
108 | | - | |
| 108 | + | |
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
93 | | - | |
| 93 | + | |
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | 69 | | |
74 | 70 | | |
75 | 71 | | |
| |||
0 commit comments