Repository navigation
Conversation
…te example Extends the confinement documentation to address issue agentrust-io#736's execution-scope question by defining a path-set model for protected effects. The model distinguishes: - Agent-side paths: originating from the agent/runtime, enforceable and testable by confinement machinery (e.g., gateway path, alternate endpoint, filesystem/subprocess) - Deployment-side paths: outside agent's enforcement domain, requiring independent deployment-level observation (e.g., external service writing to DB) Implements a worked example for order_create as the protected effect, demonstrating four distinct paths (P1-P4) with clear coverage status: - P1: ENFORCED/TESTED (gateway path, validated by test_confinement_and_fresh_restart) - P2: ENFORCED/TESTED (alternate endpoint, validated by network mutation tests) - P3: ENFORCED/TESTED (filesystem/subprocess, validated by filesystem mutation tests and network namespace inheritance blocking subprocess network escape) - P4: DECLARED/NOT ESTABLISHED (deployment-side, requires independent observation) Adds documentation linking this to EABC's NON_BYPASSABILITY(B,E) claim while explicitly noting that gateway mediation alone does not prove universal complete mediation. Updates test docstrings to map existing confinement tests to the path-set model, clarifying that test_linux.py validates agent-side path coverage (P1-P3) while deployment-side paths require separate deployment-level evidence. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
Thanks for this, @omwei-org. Closing it for now, and it is not about the change itself. This repository asks first-time contributors to be vouched by a maintainer before opening a pull request. That is because agent-written contributions are easy to produce and expensive to review, and we would rather talk to you first than review something neither of us can explain. To get vouched: open an issue saying what you want to change and why, in your own words. A maintainer will reply, and add you with See CONTRIBUTING.md for the detail. |
rajnisht7
left a comment
There was a problem hiding this comment.
The PR direction looks good, but a few places overstate and needs to be tightened:
- “Addressed by declaring” - Declaring a path set only scopes the claim whereas it does not prove complete mediation. it can be stated directly
order_createvs tests : P1–P3 are marked ENFORCED/TESTED fororder_create, but the fixtures only uses synthetic tools and a canary. kindly call this an illustrative example of generic confinement coverage, not proof of order_create- “All alternate paths” : That test only covers the paths this fixture exercises. it would be good to drop “all” (the limits section already says coverage is partial).
- Network mutation proves the tested escapes (TCP/IPv6/DNS), not every possible route to order_create. kindly narrow the wording.
- File write and subprocess - network are different paths. kindly split them or only claim what was tested
- Listing P1–P4 does not show the list is complete. it will be good to separate “this path was tested” from “the set is complete"
- If P4 is NOT ESTABLISHED, kindly state that overall claim for that effect is also NOT ESTABLISHED
- Logging / sink - Those are confinement checks, not order_create paths. it will be good to keep them out of P1–P3.
- Mutation tests : They show a control was necessary when removed. kindly dont treat them alone as full path coverage
- it would be nice to link or briefly define EABC
NON_BYPASSABILITY(B,E)
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
dinakarjs
left a comment
There was a problem hiding this comment.
Source review at af2a4deccaccbb1769f0c67e0178db9cf481fee9 confirms the scope concerns already raised by rajnisht7. The fixture invokes permitted.tool / public.tool and canary escape probes; it does not execute an order API or observe an orders database. Consequently ENFORCED / TESTED cannot yet be a result for order_create. A declared path list also does not establish completeness; with the external writer path unassessed, the overall effect-boundary claim remains NOT ESTABLISHED.
I prepared a bounded correction for integration: dinakarjs#1 — three files against this exact head. It labels the worked example illustrative, splits file-write from child-network routes, names the actual parent IPv4/IPv6 TCP, UDP/DNS and child IPv4 probes, separates logging/sink tests from order-producing paths, and distinguishes control sensitivity from complete mediation. It also explains the EABC symbol with a link to the existing profile discussion.
Validation: source inspection of examples/confinement/agent.py, tests/confinement/test_linux.py and the documentation; changed test content is docstrings only, with identical executable ASTs before/after; git diff --check passes. I did not rerun native Linux Docker fixtures, execute an order service, or establish deployment coverage. This is a documentation review and proposed patch, not an approval or new runtime-evidence claim.
|
@omwei-org dinakarjs#1 at |
Thanks, Imran. I’ll incorporate Dinakar’s changes into my branch and update the PR by October 16. |
Signed-off-by: Srinivasa Dinakar Jainti <dinakarjs@gmail.com>
Summary
This change introduces an explicit protected-effect path-set model and makes execution-scope evidence and limitations visible for the confinement documentation.
Key changes
docs/confinement.mdorder_createas an illustrative protected effect with four declared path categories (P1–P4); this is not an inventory established for a real order serviceorder_createpathsorder_createremain NOT ESTABLISHEDDesign rationale
The model distinguishes four different claims:
Declaring a path set scopes the complete-mediation claim; it does not prove that the set is complete or that every declared path is mediated. The current synthetic fixtures do not invoke an order API or observe an orders database. The EABC
NON_BYPASSABILITY(B,E)claim therefore remains unestablished fororder_createby these fixtures alone.Test plan and limitations
test_adapter.py.pytest-asyncio; this environment limitation should be distinguished from a passing test result.CMCP_CONFINEMENT_IMAGEand a suitable Linux/Docker environment.Related issues